2016-06-20 4 views
0

Я был бы признателен за помощь в определении того, какие из следующих операций должны выполняться/выполняться только в режиме ядра. Я попытался найти ответ в Silberschatz «Концепции операционной системы», но мне все еще не ясно. Вот список операций, чтобы решить, должны ли они быть сделано в режиме ядра или в пользовательском режиме:Операционные системы: Операции в режиме ядра

(1) disable interrupts detection 
(2) clear memory 
(3) switch from the user mode to the kernel mode 
(4) read the state of the clock/timer 
(5) determine/program timer. 

ответ

2

Это просто здравый смысл:

  • Отключение прерывания не должно произойти в непривилегированный контекст, так что обычно вы этого не допускаете.
  • Очистка памяти сама по себе не является привилегированной операцией, поэтому она может произойти в любом контексте (если память «освобождена», тогда вам нужно решить, является ли содержимое чувствительным или нет, прежде чем разрешать доступ из любого другого контекста, но всегда очистка содержимого - это безопасная ставка).
  • Переключение с пользовательского режима на режим ядра, очевидно, может происходить только в пользовательском режиме.
  • Чтение часов: если мы говорим об аппаратных часах, если они предоставляют регистры с отображением памяти, тогда вы можете безопасно обращаться к нему из пользовательского режима, если отображаемая область не имеет ничего чувствительного (она может или не может, зависит от аппаратного обеспечения). Если просто программное обеспечение вы можете сделать что угодно.
  • Программирование таймера может происходить в любом контексте в зависимости от реализации, например: в режиме реального времени запланированные контексты могут беспрепятственно реализовывать таймеры в пользовательском режиме, либо путем программирования аппаратного таймера, либо маршрутизации прерываний (позднее это должно произойти один раз, даже если он требует режима ядра) или реализует все это в программном обеспечении. Если не в режиме реального времени, программирование целиком в пользовательском пространстве может по-прежнему возможно, но для реализации потребует помощник на стороне ядра (т. Е. Задача в реальном времени или прерывание) для запуска события.
Смежные вопросы