Найти в Дзене
Научный Гид

Операционные системы

https://cdn.pixabay.com/photo/2016/06/29/09/29/code-1486361_960_720.jpg
https://cdn.pixabay.com/photo/2016/06/29/09/29/code-1486361_960_720.jpg

Предположим, вы набрали на клавиатуре терминала, соединенного с компьютерной системой, команду date («дата») и нажали на клавишу Return («возврат каретки»). Почти мгновенно на экране дисплея появится сообщение 15 сентября 1984. Вопрос о текущей дате относится, вероятно, к простейшим задачам, которые можно поставить перед компьютером, однако при этом возникает сложная цепь событий, приводящих в действие многие аппаратные и программные ресурсы системы.

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

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

Назовем эту программу «слушателем». Она считывает символы d a t е из буфера, отведенного клавиатуре, ищет на магнитном диске программу под именем date, загружает найденную программу в оперативную память и инициирует ее выполнение. В свою очередь программа date обращается к часам, встроенным в аппаратуру, которые отсчитывают миллисекунды начиная от фиксированного момента времени. По значению счетчика программа вычисляет месяц, день и год, а затем представляет информацию в виде цепочки символов 15 сентября 1984.

Последняя сообщается драйверу терминала, который в свою очередь передает код каждого символа терминалу, высвечивающему эти символы на экране. Каждое из этих событий можно было бы описать с еще большей степенью детализации. Например, прежде чем программа «слушатель» сможет загрузить в оперативную память программу date, она должна произвести поиск в каталоге команд, чтобы найти место на диске, где хранится программа. На самом деле этот каталог также должен быть считан с диска.

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

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

Некоторые компоненты операционной системы непосредственно взаимодействуют с аппаратурой, где события (такие, как переключения отдельных логических вентилей) происходят за время порядка нескольких миллиардных долей секунды. На противоположном конце «спектра» располагаются другие компоненты операционной системы, обеспечивающие общение с пользователем, который отдает команды в гораздо более медленном темпе — примерно одну команду за несколько секунд.

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

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