Концептуально, в чем разница между системным вызовом и вызовом ядра в Minix?
Я как бы понимаю эту разницу в операционной системе, такой как Linux, но как насчет микроядра, такого как Minix? Оба типа вызовов одинаковы?
Концептуально, в чем разница между системным вызовом и вызовом ядра в Minix?
Я как бы понимаю эту разницу в операционной системе, такой как Linux, но как насчет микроядра, такого как Minix? Оба типа вызовов одинаковы?
С точки зрения реализации системные вызовы одинаковы в микроядре и монолитном ядре — системные вызовы перехватываются ядром, а ядро обрабатывает запрос.
Большое отличие заключается в том, для чего нужны системные вызовы — возьмем в качестве примера файловую систему.
В монолитном ядре большинство служб реализовано внутри ядра, включая файловую систему. Итак, чтобы открыть файл, выполнить операции с файлом, требуется системный вызов.
В микроядре большинство служб реализовано на уровне пользователя, и то, что требует системного вызова, действительно зависит от архитектуры системы. В системе, подобной Minix, где службы разделены на компоненты, запрос файловой системы отправляется на сервер файловой системы. Это по-прежнему включает системный вызов, но системный вызов представляет собой сообщение IPC серверу файловой системы, кодирующее требуемую операцию, а не запрос к ядру для конкретной операции. Ядро просто облегчает передачу сообщений.
Как я уже сказал, это зависит от архитектуры системы. Системы на основе микроядра могут иметь архитектуру, в которой файловая система включается в процесс, обращающийся к ней, поэтому для большинства операций с файлами не требуются системные вызовы (но вам, вероятно, потребуются некоторые для драйвера хранилища).