OSDev
http://osdev.ru/

Однотипность реализаций ОС
http://osdev.ru/viewtopic.php?f=5&t=1047
Страница 1 из 2

Автор:  Actium [ 01 фев 2015, 10:12 ]
Заголовок сообщения:  Однотипность реализаций ОС

Почему подавляющее большинство разработчиков придерживается следующей модели?

Загрузка исполнимого кода ОС и передача управления на него => Инициализация =>
Добавление системных задач в очередь => while (!shutdown) { Task* task = dequeue_task(); task->execute(); }

** Состояние очереди может изменяться обработчиками прерываний.

P.S. Понимаю, что однозначного ответа на вопрос нет. Интересует мнение.

Автор:  Himik [ 01 фев 2015, 14:33 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

Задача ОС - выполнять задачи пользователя, и обслуживать периферийные устройства (прерывания).

Автор:  pavia [ 01 фев 2015, 19:20 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

Думаю это от того что компьютер это ЭВМ
Электронно вычислительная машина. И ей нужно что-то вычислять считать. А таких вот задач вычислительных много и они долгие. А программы в частности ОС пишутся как раз для вычислительных машин.

Автор:  Actium [ 02 фев 2015, 09:43 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

Да не вопрос :) У нас есть вычислительная машина, мы ее загружаем решением имеющихся задач.

Но почему "загрузчик" этих задач почти всегда реализуется так, как описано в первом сообщении? Другими словами, почему именно бесконечный цикл с выборкой задач из очереди?

Автор:  pavia [ 02 фев 2015, 13:15 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

Почем бесконечный цикл? Так задач бесконечное число.
Почему очередь? Так не обязательно. Просто это самый простой способ планирования.

Автор:  phantom-84 [ 02 фев 2015, 21:15 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

В смысле бесконечно много? Бесконечный цикл, чтобы ОС могла выполнять свою основную функцию постоянно, пока работает. Кстати, цикла в явном виде может и не быть. Например, у меня используется просто переключение на следующую в очереди выполнения задачу (или на текущую в другой очереди выполнения), а т.к. очереди выполнения имеют кольцевую структуру, то и получается цикл.

Автор:  Actium [ 03 фев 2015, 15:53 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

Actium писал(а):
Загрузка исполнимого кода ОС и передача управления на него => Инициализация => ...
Представьте, что вместо ... - hlt, а любая работа системного уровня активируется обработчиками прерываний. Как мне кажется, такую модель вполне можно реализовать. Кто-то из участников форума ее вообще рассматривал?

Автор:  phantom-84 [ 03 фев 2015, 18:52 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

Actium писал(а):
Представьте, что вместо ... - hlt, а любая работа системного уровня активируется обработчиками прерываний. Как мне кажется, такую модель вполне можно реализовать. Кто-то из участников форума ее вообще рассматривал?
hlt, естественно, присутствует в специальных низкоприоритетных потоках ядра.

Автор:  Actium [ 03 фев 2015, 19:45 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

phantom-84 писал(а):
hlt, естественно, присутствует в специальных низкоприоритетных потоках ядра.
Да, только как средство разгрузки проца.

P.S. Не знаю, как еще говорить о лесе, если все видят только деревья :(

Автор:  pavia [ 03 фев 2015, 20:07 ]
Заголовок сообщения:  Re: Однотипность реализаций ОС

Actium писал(а):
Actium писал(а):
Загрузка исполнимого кода ОС и передача управления на него => Инициализация => ...
Представьте, что вместо ... - hlt, а любая работа системного уровня активируется обработчиками прерываний. Как мне кажется, такую модель вполне можно реализовать. Кто-то из участников форума ее вообще рассматривал?

Тут пытались обсуждалась функциональную ОС ( ОС на ЛИСП). Все согласились что это утопия.
Если бы всё было так просто то бы ОС не потребовалось, а достаточно было бы сделать контролёр на основе теории автоматов. Без всяких софт процессоров.
Но в реальности требуется выполнять несколько задач одновременно. А так как входные параметры случайные. Сегодня жёсткий диск считал файл за 1 мс завтра попала соринка за 2 мс.
Или метастабильность из-за который раз в 1 час обязательно да бывает ошибка. Или из-за грозы прошла импульсная помеха и в TCP соединение потерялся пакет ACK и сеть повисла на 1 минуту.
Вот и приходиться планировать рациональное использование процессора с учётом неравномерного поступления входных команд(событий, сигналов, прерываний) и того что как правило требуется одновременно выполнять несколько команд.
Как рационально загрузить процессор что-бы он быстрее закончил работу? Вот и приходиться маневрировать пока одна задача ждёт порцию данных что-бы рассчитать контрольную сумму. Другая отправляет запрос, а третья записывает на жёсткий диск. При этом та которая пишет на жёсткий диск ещё должна рассчитать куда писать с учетом что четвёртая ведёт дефрагментацию которая внезапно начала исполняться на середине записи в файл.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/