Процессор на компьютере под управлением Windows имеет два разных режима: пользовательский режим и режим ядра.
Процессор переключается между двумя режимами в зависимости от типа кода, выполняемого на процессоре. Приложения выполняются в пользовательском режиме, а основные компоненты операционной системы — в режиме ядра. Хотя многие драйверы работают в режиме ядра, некоторые драйверы могут работать в пользовательском режиме.
Пользовательский режим
При запуске приложения в пользовательском режиме Windows создает процесс для приложения. Процесс предоставляет приложению частное виртуальное адресное пространство и таблицу частных дескрипторов. Так как виртуальное адресное пространство приложения является частным, одно приложение не может изменять данные, принадлежащие другому приложению. Каждое приложение выполняется изолированно, и в случае сбоя приложения сбой ограничивается одним приложением. Другие приложения и операционная система не затрагиваются сбоем.
Помимо частного, виртуальное адресное пространство приложения в пользовательском режиме ограничено. Процесс, выполняющийся в пользовательском режиме, не может получить доступ к виртуальным адресам, зарезервированным для операционной системы. Ограничение виртуального адресного пространства приложения в пользовательском режиме предотвращает изменение и, возможно, повреждение критически важных данных операционной системы.
Программное прерывание
Режим ядра
Весь код, который выполняется в режиме ядра, использует одно виртуальное адресное пространство. Таким образом, драйвер в режиме ядра не изолирован от других драйверов и самой операционной системы. Если драйвер, работающий в режиме ядра, случайно выполняет запись на неправильный виртуальный адрес, данные, принадлежащие операционной системе или другому драйверу, могут быть скомпрометированы. При сбое драйвера в режиме ядра происходит сбой всей операционной системы.
На этой схеме показано взаимодействие между компонентами пользовательского режима и режима ядра.
Источник: learn.microsoft.com
Привилегированный режим ядра и пользовательский режим
Операционная система для осуществления своих управляющих функций должна иметь по отношению к приложениям определенные привилегии. Поэтому аппаратура компьютера поддерживает как минимум два режима:
пользовательский режим (user mode) — для работы приложений;
привилегированный режим, он же — режим ядра (kernel mode), или режим супервизора (supervisor mode) — для работы ОС или ее частей.
В привилегированном режиме чаще всего работает именно ядро как основная часть ОС. Понятия «ядро» и «привилегированный режим» тесно связаны, поэтому ядро также можно характеризовать как часть ОС, работающую в привилегированном режиме.
Привилегии обеспечиваются за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных со следующими операциями:
Урок 28. Режим ядра и режим пользователя
· переключением процессора с задачи на задачу;
· управлением устройствами ввода-вывода;
· доступом к механизмам распределения и защиты памяти.
В пользовательском режиме безусловно запрещено выполнение инструкции перехода в привилегированный режим. Другие инструкции запрещается выполнять при определенных условиях, полностью контролируемых ОС. Например, ввод-вывод данных или доступ к памяти разрешены приложению, если соответствующие ресурсы выделены только этому приложению, и запрещены, если данные (соответственно память) являются общими для ОС и других приложений.
Если аппаратура (процессор) поддерживает хотя бы два уровня привилегий, то ОС может на этой основе создать программным способом сколь угодно развитую систему защиты и соответствующих прав доступа. Прямого соответствия между числом аппаратно реализуемых и программно реализуемых уровней привилегий нет. Так, на базе четырех уровней процессоров архитектуры х86 OS/2 строит трехуровневую, а Windows NT и Unix — двухуровневую систему привилегий.
Переключение процессора из пользовательского режима в привилегированный при системном вызове ядра, а затем обратное переключение повышает устойчивость ОС, но замедляет выполнение системных вызовов.
Воспользуйтесь поиском по сайту:
studopedia.org — Студопедия.Орг — 2014-2023 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с) .
Источник: studopedia.org
Режим ядра и пользовательский режим
Чтобы ОС была надежной, ее ядро должно быть защищено от сбоев в пользовательских программах. Ядро ОС должно работать в привилегированном режиме по сравнению с приложениями.
Различные режимы выполнения программ обеспечиваются на аппаратном уровне. Аппаратура современных компьютеров поддерживает как минимум два режима работы программ:
- привилегированный режим работы, называемый режимом ядра (kernel mode) или режимом супервизора (supervisor mode);
- пользовательский режим (user mode).
При работе операционной системы ее ядро работает в режиме ядра, а остальные части ОС и приложения – в режиме пользователя.
Режим ядра – это режим работы компьютера, в котором доступны все его возможности, разрешен доступ ко всем устройствам и разрешены все команды компьютера.
В пользовательском режиме разрешены только некоторые команды.
Например, могут быть доступны следующие команды доступа к аппаратуре компьютера:
- команды инициации прерываний процессора;
- команды доступа к механизмам распределения и защиты памяти;
- команды управления устройствами ввода-вывода.
Количество различных уровней привилегий, поддерживаемых аппаратно, на различных процессорах различно. Например, на процессорах фирмы Intel таких уровней четыре. При этом различные ОС организуют различное количество уровней привилегий на одних и тех же процессорах.
Таким образом, нет прямого соответствия количества уровней привилегий, которые реализуются аппаратно, и которые организует ОС. В самых распространенных ОС (Windows NT, UNIX) два уровня привилегий. Это режим ядра и режим пользователя.
Если аппаратура поддерживает хотя бы два уровня привилегий, ОС программно может создать любое их количество.
Механизм выполнения системного вызова в прикладной программе всегда один и тот же: при выполнении системного вызова программа переходит в режим ядра, а при возврате в программу – обратное переключение процессора в режим пользователя. Т.е. при обработке системного вызова происходит два переключения процессора с одного режима на другой. Это замедляет выполнение программ, что является платой за повышенную надежность и защищенность ядра. Из этого делаем вывод:
Наличие уровней привилегий повышает устойчивость ОС. Но, увеличение числа уровней снижает производительность ОС вследствие потерь на переключение процессора между режимами пользователя ядра.
Аппаратная зависимость и переносимость ОС
Любая ОС для реализации некоторых своих функций использует аппаратную поддержку, т.е. особенности архитектуры конкретного компьютера. Однако к современным ОС предъявляются требования переносимости, т.е. работы на различных аппаратных платформах. Поэтому разработчики ОС стараются сделать так, чтобы машинно-зависимый слой ОС был как можно компактнее, а всё остальное работало бы на любой аппаратной платформе.
Типовые средства аппаратной поддержки ос
Сейчас мы будем говорить о средствах поддержки ОС со стороны аппаратуры.
Решение о том, какие функции ОС будут выполняться программно, а какие аппаратно, принимается разработчиками компьютеров и операционных систем.
Однако практически все современные аппаратные платформы имеют некоторый типичный набор средств аппаратной поддержки ОС.
Аппаратные средства поддержки ОС:
- средства поддержки привилегированного режима (параметры слова состояния процессора, содержащие указания на текущий режим привилегий);
- средства преобразования адресов (для преобразования виртуальных адресов программ в адреса физической памяти и обратно);
- средства переключения процессов (предназначены для быстрого сохранения состояния приостанавливаемого процесса);
- система прерываний;
- системный таймер;
- средства защиты областей памяти (проверка на аппаратном уровне возможности данной программы работать с определенной областью памяти и выполнять заданные операции).
Источник: studfile.net