у кого работает ядро, если в процессоре запущены процессы? - PullRequest
2 голосов
/ 29 декабря 2011

Предположим, что в двухпроцессной среде один процесс запланирован для выполнения ядром и требует некоторых данных, которые недоступны в ОЗУ. Таким образом, процессор укажет ядру, что что-то недоступно, и процесс будет приостановлен. Затем, после того как ядро ​​загрузит второй процесс для выполнения через ЦПУ и начнет исследовать данные во вторичной ячейке памяти (скажем, в виртуальной памяти) и получит их, поместит их обратно в основную память путем замены данных в памяти, которые в настоящее время неактивны, и помещает процесс обратно в готовую очередь для выполнения.

Мы знаем, что все в компьютерной системе управляется только процессором, и, если процессор занят непрерывным выполнением кода процесса, то кто выполняет код ядра для выполнения задач, выполняемых ядром? Пожалуйста, дайте мне знать, если я смогу объяснить сценарий.

Ответы [ 3 ]

4 голосов
/ 29 декабря 2011

Ядро работает либо в результате аппаратного прерывания, либо в результате того, что процесс вызвал что-либо для выполнения.В обоих случаях код, который выполнялся в этот момент, останавливается, пока ядро ​​не завершит свою работу.

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

3 голосов
/ 30 декабря 2011

В любой момент времени ЦП (/ с) будет

  1. Запуск процесса в режиме пользователя.
  2. Запуск от имени процесса в режиме ядра для выполнения превалирующимаппаратное обеспечение для команд или доступа (например, когда выполняется чтение / запись системного вызова).
  3. Запуск в ответ на аппаратное прерывание.т.е. работает в контексте прерывания.(Не связан ни с каким конкретным процессом) и yes в режиме ядра.
  4. Запуск некоторых потоков ядра для отложенной работы, например soft irq.(Tasklet / Softirq)
  5. Запуск бездействующего потока ЦП, если нет ничего для выполнения.

Если вы, в частности, спрашиваете о планировании, то

  1. Предположим, что процесс запущен, и теперь он вызвал запрос на чтение для извлечения данных с жесткого диска, скажем, затем процесс удален из процессора и ядро ​​вызывает функции schedule ().Итак, здесь первый процесс выдает системный вызов read, что приводит к переключению из режима пользователя в режим ядра.Ядро, работающее от имени процесса, готовится к операции чтения с жесткого диска, а затем вызывает функцию schedule ()
  2. Предположим, пришло аппаратное прерывание, затем текущий запущенный процесс удаляется, и для этого обрабатывается обработчик прерываний.прерывание начинает выполняться в режиме ядра (очевидно).

По сути, ядро ​​запускается между пользовательскими процессами !!

Очистить сейчас?

Shash

2 голосов
/ 29 декабря 2011

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

Я рекомендую эту серию видео для более подробной информации: http://academicearth.org/courses/operating-systems-and-system-programming

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...