Другие языки программирования и технологии

Вопрос по ядру ОС. Как выполняются программы на операционной системе? (углубленно).

Допустим если взять Windows. Каким образом выполняются прикладные программы? На уровне машинных команд процессора? Или ОС выступает в роли интерпретатора? Если на уровне процессора то каким образом ОС управляет процессом программы и как происхолит обмен информации между ними? Можно даже книжку посоветовать где это понятным языком рассказано.
RZ
Ruslan Zhumabekov
1 315
Трудно в рамках 4000 символов ответить на такой всеобъемлющий вопрос...
В общем, программы выполняются в машинном коде, кроме написанных на специальных платформах, вроде .net или Java или изначально интерпретируемых вроде Python.
ОС предоставляет стандартизированный набор интерфейсов (API) для доступа к устройствам и встроенному функционалу ОС. Например, чтобы нарисовать окно, приложение не лезет напрямую в видеокарту, а "говорит" ОС что-то вроде "нарисуй мне окно такого-то размера в таком-то месте и все сообщения о событиях с этим окном передавай по такому-то адресу - я их обработаю". И не лезет напрямую в сетевую карту, а говорит "я хочу сделать сетевую розетку с протоколом TCP/IP на таком-то порту, если он не занят, конечно, и буду обрабатывать события этого TCP/IP, а ты уж разберись с маршрутизацией, транспортными протоколами, работой железа и всего прочего".
Еще ОС умеет распределять процессорное время между приложениями и распределять процессы и потоки между процессорами и/или ядрами, создавая впечатление одновременной работы нескольких приложений на одном ядре или обеспечивая их настоящую параллельную работу на разных ядрах.
Обмен данными между приложениями осуществляется довольно редко, в большинстве случаев им друг на друга глубоко на.. ть. Но если очень надо, то ОС предоставляет кучу возможностей: файлы обычные и memory mapped, древний текстовый DDE, всякий OLE/COM/DCOM, тот же TCP/IP вкупе с UDP, и еще наверняка что-то, что я забыл.
Прямая передача данных между процессорами тоже возможна, но для этого нужна специальная архитектура железа и специальным образом написанная программа (например, использующая MPI). Это используется только в суперкомпьютерах, для обычных писюков это слишком дорого и никому нафиг не нужно. Примерно так вот...
SS
Sherdil Sirojov
69 010
Лучший ответ
Ruslan Zhumabekov Большое спасибо. Приблизительно так я это и представлял. А многозадачность наверно на прерываниях основано я так думаю.
777 777 Хороший ответ. Но почему DDE обязательно текстовый? Для экспорта в Excel используется бинарный формат.
777 777 Прямая передача данных между процессорами думаю должна быть в видеокартах. Но я вообще не в теме, спорить не буду.
В двух словах это не объяснить. Могу посоветовать ознакомиться с книгой Windows Internals Mark E. Russinovich. При желании нагуглишь.

Похожие вопросы