2015-09-24 2 views
0

Я читаю управление процессом, и у меня есть несколько doubts-Операционная система Основы

  • Что подразумевается под запрос ввода/вывода, для Eg-A процесс выполнения и , следовательно, он находится в рабочем состоянии , он находится в состоянии ожидания, если он ждет для завершения запроса ввода-вывода .. Я не понимаю, что имеется в виду в запросе ввода-вывода .. Можете ли вы , пожалуйста, привести пример для разработки.
  • Другого сомнения --Позволяет сказать, что процесс выполняется, и вдруг происходит прерывание, то процесс прекращает выполнение и будет положить в состоянии готовности, возможно, что какой-то другой процесс начался его исполнения в то время как прерывание также обрабатывается?
+0

звучит так, как будто вам нужна помощь в выполнении домашней работы! – Shaunak

+0

@ Shaunak-Это не домашнее задание, –

ответ

1

Запрос ввода-вывода, как правило, означает только запрос на ввод, вывод или оба. Точное значение зависит от вашего контекста, такого как HTTP, Networks, Console Ops или может быть каким-то процессом в CPU.

Процесс ожидает ввода-вывода: Скажите, например, что вы писали программу на C, чтобы принять имя пользователя в командной строке, а затем хотите напечатать «Hello User». Ваш код перейдет в состояние ожидания до тех пор, пока пользователь не наберет свое имя и не войдет в Enter. Это пример более высокого уровня, но даже на очень низком уровне процесс, выполняемый в процессоре вашего компьютера, работает по одному основному принципу.

Может ли процессор работать с другими процессами, когда ток прерывается и что-то ждет? Да! Тебе лучше надеяться. Вот для чего предназначены алгоритмы планирования и стеки. Однако реальный ответ в зависимости от того, что архитектуры вы на, он поддерживает параллельную или последовательную обработку и т.д.

2

Что касается первого вопроса:

Простого способа думать об этом ...
вашего компьютера имеет множество компонентов. CPU, жесткий диск, сетевую карту, звуковую карту, gpu и т. Д. Все они работают параллельно и независимо друг от друга. Они также обычно медленнее, чем процессор.
Это означает, что всякий раз, когда процесс совершает вызов, который по линии линии (на стороне ОС) заканчивает связь с внешним устройством, нет смысла, чтобы ОС застревала в ожидании результата, поскольку время, которое требуется для этого операция для завершения - это, вероятно, вечность (в точке зрения процессора).
Таким образом, ОС запускает любую связь, запрашиваемую процессом (вызывают ее запрос ввода-вывода), помещает процесс в ожидании ввода-вывода и переключает выполнение на другой процесс, поэтому процессор может сделать что-то полезное вместо того, чтобы сидеть в заблокированном ожидании ввода-вывода запрос на заполнение.
Когда внешнее устройство завершает выполнение любой операции, оно генерирует прерывание, поэтому операционная система информируется о том, что работа выполнена, и затем она может снова заблокировать процесс блокировки.

Это, конечно, очень упрощенный вид, но это основная идея. Это позволяет ЦП делать полезную работу, а не ждать завершения запросов ввода-вывода.

Что касается второго вопроса:

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

На практике все становится несколько более сложным с точки зрения производительности и латентности.
Если вы считаете, что срок службы прерывания является просто еще одной задачей для CPU (с момента начала прерывания до того, как ОС считает, что обработка завершена), вы можете эффективно кодировать обработку прерываний, чтобы работать параллельно с другими вещами.
Просто подумайте о прерывании в качестве уведомления для ОС, чтобы запустить другую задачу (обработку прерывания). Он захватывает любой контекст, который ему нужен, в момент начала прерывания, а затем обрабатывает эту задачу параллельно с другими процессами.

Смежные вопросы