Зачем нужен отдельный режим «супервизор» и «пользователь»? - PullRequest
0 голосов
/ 25 октября 2011

Режим супервизора и режим пользователя

Почему ОС нуждается в этом различении?

Я знаю, что режим Supervisor предназначен для поддержки ОС, и я знаю, что режим User предназначен для поддержки приложений. Я смутно понимаю, что они используются для того, чтобы гарантировать, что пользовательские операции происходят только в пользовательском режиме, в то время как операции ОС происходят только в супер режиме. Я просто ищу немного более глубокое обсуждение, чтобы заполнить любые пробелы, которые я могу пропустить.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

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

Например, посмотрите на защиту памяти. Это предотвращает запись программ в память друг друга. Но для того, чтобы он функционировал, операционная система должна иметь возможность настроить отображение страниц памяти для каждой программы. Что если любая программа может настроить это? Тогда нет защиты - каждая программа может ослабить защиту. Вот почему для выполнения таких операций требуется режим суперпользователя - это может делать только операционная система, а пользовательские программы - нет.

Кстати, режим супервизора не запрещает «пользовательские операции» - он разрешает все что угодно.

1 голос
/ 25 октября 2011

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

USP - A7: указатель стека пользователя

SSP - A7: указатель стека супервизора

Каждый режим имеет указатель стека, поскольку каждый режим является автономным потоком кода - одиндля текущей задачи верхнего уровня, другой для ОС.Если они оба использовали один и тот же стек, существует вероятность, что операционная система может прервать стек, выделенный для пользовательского приложения.Другими словами.ОС может не знать, каковы пределы стека для поддержки какой-либо заданной функциональности операционной системы.

Гораздо безопаснее иметь два отдельных стека.Если в системе имеется только один stakc, операционная система должна самостоятельно настроить регистр указателя стека, чтобы обеспечить правильное использование различных областей памяти, т.е.память для ОС и память для задачи.

...