Каждый день буду делать посты с развернутыми (и не очень) разборами статей и материалов на тему. Постараюсь выдерживать последовательность от простого и фундаментального к сложному и узкоспециализированному.
И первый пост будет посвящен - процессору и операционной системе . Если говорить максимально простым языком процессор - это исполнитель инструкций запрограммированных разработчиком. Процессор обладает тактовой частотой - количество операций которое способен обработать в секунду.
В первоначальном своем виде имел процессор только одно ядро - и как следствие все инструкции выполнялись последовательно. В остальные детали устройства CPU пока погружаться нет смысла, раскрою их в следующих постах.
Для того чтобы утилизировать наш одногоядерный процеесор нам нужна операционная система.
В контексте производительности нас интересует как ОС будет работать с запросами пользователя и какие ограничения будет накладывать.
Выделяют 2 типа ОС - однозадачные и мультизадачные.
Для однозадачных ОС одноядерный процессор это идеальный мэтч. В однозадачных ОС нет возможности создавать дополнительные процеесы и треды и всегда приоритет у одной задачи. Пример такой ОС - MS-DOS.
А как быть с мультизадачной ОС, можно ли её вообще развернуть вместе с одноядерным процессором?
Ответ - можно. Но на такую ОС ложится задача управления всем многообразием задач создаваемых пользователем. В общем случае это работает так:
Операционная система выделяет процессу «слайс» времени на ЦП, затем перемещает процесс обратно в очередь готовности и позволяет другому процессу получить свой «слайс» времени. «Слайс» обычно находится в диапазоне от 1/1000 до 1/100 секунды. Это намного быстрее, чем мы можем наблюдать, поэтому даже при использовании одного процессора может показаться, что все процессы выполняются одновременно.
Такой подход называется Вытесняющая многозадачность. Реализован в большинстве современных ОС. Существует еще подход с кооперативной многозадачностью, но он присутствовал в старых версиях ОС, не прошел проверку временем и от него отказались.
На этом всё, в данной заметке мы на примитивном уровне разобрались как связаны ОС и CPU. Спасибо что читали, завтра будет следующий пост в котором мы разберемся с многоядерностью и многопроцессорностью.😊
Доп ссылки:
- https://www.geeksforgeeks.org/difference-between-preemptive-and-cooperative-multitasking/
- https://www.quora.com/What-are-some-examples-of-a-single-tasking-operating-system
- https://www.quora.com/Can-a-single-processor-run-multiple-processes-simultaneously
-----
Напоминаю, что моя личка открыта для всех, а если в личку неудобно то можно написать через Google Forms.
Предлагайте темы для будущих постов, задавайте вопросы или оставляйте отзывы/пожелания.😊