Intereting Posts
Могу ли я установить рабочую среду Deepin в Debian? Написать в stderr Как запустить telnet через SSH? Aptitude удалила нагрузку модулей, когда я пытался установить Imagemagick, как мне отменить это? Список, содержащий последние установленные / обновленные пакеты в Arch Linux, но с пропуском зависимостей присвоение многострочной переменной (приглашение tcsh) другому Какие команды используются для установки программного обеспечения в AIX? BeagleBone Black – я не могу подключиться к WiFi Восстановить поврежденный .tar, сохраненный с Android Является ли HTTP-перенаправление рассмотренным как связанное соединение с помощью iptables? Как установить жесткий диск USB, который отображается в lsusb, но не fdisk или lsblk? Как разделить переменную $ 0, чтобы найти каталог и относительные пути в bash? Как распечатать все поля, содержащие одну из двух строк в таблице с awk Centos6: увеличение пространства без потери данных Открытие виртуальной среды Через vCenter в pYvmomi

что такое ядро?

Я изучаю Unix из книги Unix Architecture Мориса Дж. Баха. Поэтому, если мой вопрос кажется слишком глупым, пожалуйста, согласитесь с этим. Я прочитал несколько связанных вопросов, но я хотел бы получить более простое объяснение, например.

Моя путаница связана с понятием ядра. Что такое ядро? Я понимаю, что это операционная система, и это процесс.

Но когда мой учитель учит, он говорит, что системный вызов () приводит к переходу процесса из режима пользователя в режим ядра.

Что на самом деле происходит в системном вызове? Запускает ли процесс пользователя спать, а операционная система выполняет его от имени пользовательского процесса и возвращает значение пользовательскому процессу или выполняет ли пользовательский процесс в режиме ядра? Если последнее верно, что это значит?

Что такое ядро?

В смысле вашего вопроса, это одна большая программа, которая работает на специальном уровне привилегий на процессоре. Он предоставляет все основные средства операционной системы: многозадачность , IPC , файловые системы и т. Д. Это также процесс, который запускает драйверы устройств , которые, в свою очередь, управляют аппаратным обеспечением компьютера от имени ядра.

Я понимаю, что это операционная система

Вообще-то, нет. Операционная система – это нечто большее, чем просто ядро .

Еще в те дни, когда Морис Бах писал свою книгу, ОС включала оболочки , компиляторы , утилиты , текстовые редакторы и т. Д.

Со временем термин ОС стал включать еще больше вещей, таких как подсистема графического интерфейса .

Это личное решение, в котором вы рисуете линию между ОС и обычными пользовательскими программами. Большинство людей согласятся с тем, что текстовый процессор GUI не является частью ОС, даже если он был установлен вместе с самой ОС. Но многие согласны с тем, что обычный текстовый редактор, поставляемый с ОС, является частью ОС. Многие в этом лагере также согласятся с тем, что процессоры разметки , поставляемые с OS-troff, TeX и т. Д., Также считаются объектами ОС в эти дни. Но объедините текстовый редактор и процессор разметки, и у вас есть что-то неотличимое от текстового процессора в некотором роде.

Рисуем тупиковую линию, в которой каждый может согласиться на невозможное.

это процесс.

Не на самом деле нет.

Архитектура с микроядрами так же близка, как и вы, чтобы сделать это утверждение истинным. Даже тогда ядро ​​представляет собой набор процессов, один из которых является особенным в том, что он может запускать все остальные процессы. Так что даже в этом случае все еще есть ядро ​​- крошечное ядро, которое само по себе не может считаться нормальным процессом.

В случае монолитного ядра ядро находится в особой позиции и выполняет все процессы.

Что на самом деле происходит в системном вызове?

Прочитайте остальную книгу Баха.

Вы заметите, что в этом ответе есть много ссылок Википедии, и большинство статей, на которые я ссылаюсь, являются длинными и сложными, а еще больше ссылок. Это потому, что вы в основном попросили нас перевести очень сложную тему в простой ответ. Существует не простой ответ, поэтому я попытался предоставить руководство по ответам, множественное число.

Выполняет ли процесс пользователя спящий режим, а операционная система выполняет его от имени процесса пользователя и возвращает значение для пользовательского процесса …?

В классическом монолитном ядре, о котором говорил Бах, да.

Однако современные системы пугают эту простую картину.

Во-первых, «операционная система» не выполняет системный вызов, это делает ядро. Я не просто педантичен. Поскольку огромная масса современной ОС состоит из разнообразных программ для пользовательского пространства, а современные ОС – многозадачные, вы не можете сказать, что ОС просто останавливается и запускает системный вызов. В то же время ОС может делать много вещей, одна из которых обрабатывает системный вызов одной пользовательской программы.

Но во-вторых, и это гораздо важнее, современные ядра ОС уже не однозадачные программы, которые обрабатывают один системный вызов за раз. ОС может находиться в середине многих системных вызовов одновременно. Однозадачная программа пользовательского пространства, которая делает системный вызов, может воспринимать, что мир останавливается до тех пор, пока системный вызов не завершится, но ядро ​​может делать много других вещей, пока этот системный вызов продолжается.

Даже в случае однозадачного ядра старого стиля у вас были такие вещи, как верхняя и нижняя части драйверов, которые позволяли ядру уходить и обрабатывать такие вещи, как дисковый ввод-вывод, чтобы обеспечить низкоуровневое обслуживание относительно высокий уровень системного вызова типа open(2) .

или пользовательский процесс выполняется в режиме ядра?

Вы можете смотреть на него таким образом, но это верно только в том же виде, что и мой веб-браузер и Stack Exchange – это одна и та же программа, потому что они взаимодействуют, чтобы обеспечить единый сплоченный опыт.