Из моих чтений об операционных системах (чтение основного материала в Википедии, технических сайтах и т. Д.) Я узнал, что операционная система - это программа, которая позволяет программам и приложениям эффективно и безопасно взаимодействовать с оборудованием.
Однако я не совсем понимаю, как операционная система контролирует работу компьютера, когда он сам нуждается в управлении.
Что я имею в виду? Что ж, я бы мог представить себе, как работает операционная система, на компьютере будет два процессора. Один, который запускает ОС все время, и другой, который ОС использует для запуска компьютера. Однако оказывается, что ОС работает на том же процессоре, что и другие процессы. Это похоже на то, как менеджеру приходится работать на той же производственной линии, что и его сотрудники, и он может использовать электроинструменты только тогда, когда с ними покончено с другим работником. Он не был бы очень эффективным менеджером, так как у него не было бы возможности издавать приказы, если его сотрудник даже немного недисциплинирован.
Так как же может быть так, что ОС работает только часть времени на том же процессоре, который должен быть распределен между всеми другими процессами? Как это работает?
источник
Ответы:
Современные процессоры в определенной степени осведомлены об ОС. Они предоставляют некоторые «электроинструменты» для первого, кто их требует. Обычно это загрузчик, который затем передает управление ОС. Обычно говорят о «режиме ядра» против «пользовательского режима» или «кольцо 0» против «кольцо 3», чтобы отличать один процесс с дополнительными привилегиями и остальные.
Эти «мощные инструменты» являются определенными привилегиями для управления ресурсами: управление памятью, доступом к оборудованию и продолжительностью выполнения кода пользовательского уровня без прерывания.
Процессор выполняет ОС со своими особыми привилегиями, когда происходит одно из следующих событий:
Таким образом, ОС может работать на одном и том же чипе, потому что чип создан для этого. Он может зарезервировать для себя особые привилегии. Процессор может прервать все другие фрагменты кода без этих специальных привилегий в любое время и передать управление ОС.
Некоторые чипы с очень ограниченной поддержкой (например, микроконтроллер ) не имеют такой поддержки для специального привилегированного кода. Эти чипы обычно работают без ОС. Выполняется только одна большая программа, которая может напрямую обращаться к оборудованию, должна реагировать на аппаратные прерывания и иметь доступ к любым ресурсам в любое время. Если эта программа делает одну ошибку, обычно все происходит сбой.
источник
В своей самой примитивной форме операционные системы полагаются на то, что процессы ведут себя хорошо и время от времени возвращают управление операционной системе. Если процесс плохо себя ведет, то действительно может произойти зависание операционной системы.
Однако большинство процессоров имеют прерывания : прерывание приостанавливает текущий процесс (прерывание) и возвращает управление операционной системе. Вы можете запланировать прерывания на определенные промежутки времени или запускать их извне (например, нажав кнопку сброса).
По сути, процессор переключается между запуском ОС и запуском процессов с невероятно высокой скоростью. Кроме того, процессоры имеют «пользовательский режим» и «режим ядра». Процессы работают в пользовательском режиме, а ОС работает в режиме ядра. Работа в пользовательском режиме не позволяет процессу выполнять ограниченные команды (такие как IO). Если процесс хочет выполнить запись на диск, он должен попросить об этом ОС. ОС переключается в режим ядра и выполняет запись от имени процесса (после проверки того, что процесс имеет необходимые разрешения).
источник
poke
из командной строки работать над всеми видами вреда.the CPU switches back and forth between running the OS and running processes
? Что вызывает переключение?Вам не нужны два разных процессора для микропроцессора для запуска пользовательского пространства и кода пространства ядра. В основном это работает таким образом, когда вы включаете компьютер на вашем Bios, загружает Bootloader (код 512 КБ на диск, который заканчивается подписью загрузчика 55aa), чтобы ram и через этот загрузчик ваше ядро загружается в ram и работает вечно, пока вы не выключите компьютер. И ваше ядро управляет памятью и не позволяет вашему коду ядра, который находится на оперативной памяти, не будет перезаписан кодом пространства пользователя. Для этого существуют системные вызовы, код пользовательского пространства которых вызывается с помощью этих системных вызовов, и добавьте свой код пользовательского пространства в ram и начните его выполнять. В операционных системах эта концепция исследуется как управление памятью. Вот ссылка, которую вы можете прочитать, это очень хорошо для начала https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf
источник
Чтобы опираться на другие ответы, легче понять, если вы думаете, что само ядро - это не процесс, а код управления. Любой пользовательский процесс может перейти из режима пользователя в режим ядра и выполнить код ядра (привилегированные инструкции), используя некоторую часть пространства ядра. Затем процесс может вернуться в режим пользователя и снова работать в пользовательском пространстве.
источник