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