Наша идея — что у большинства омонимов различно происхождение. Например, как можно посмотреть в Словаре, для слов коса и коса так и есть:
Коса как волосы родственно слову чесать — то, что расчёсывают. Как и однокоренное космы.
Коса как орудие — родственно слову косой, срезанный. Коса — то, чем срезают, делают косым.
Кстати, однокоренное с косой-волосами и чесанием — касаться, прикосновение.
А вот замок и замок… Их этимология интереснее.
ЗамОк — тот, что на двери — слово родное. Состоит из приставки за- в значении «завершение действия» и корня -мОк. Варианты: -мкнуть, -мыкать. Древний общеславянский корень *[мык]- имел значение «тянуть». То есть, замкнуть — изначально затянуть. ЗамОк представлял собой верёвку, которой что-то затянули.
Тот же праславянский корень *[мык] попал и в польский язык. К нему присоединились та же приставка за- в том же значении. Но слово
- А. Сменило ударение.
- Б. Значение стало несколько переносным. Теперь затягивает не верёвка — дверь, а стены — крепость.
Так что и в этом случае происхождение омонимов замок и замок разное. Хоть и от общего корня, зато через разные ветви.