Компьютер в целом

Операционная система (OS) использует аппаратные возможности одного или нескольких процессоров, предлагая некоторый набор сервисов её пользователям. Также OS распоряжается оперативной памятью и устройствами ввода-вывода от имени её пользователей. Соответственно, важно иметь представление об аппаратной архитектуре компьютера, чтобы лучше понимать работу самой OS.

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

  • Процессор (Central Processing Unit) управляет работой компьютера и выполняет функции обработки данных;
  • Главная память (RAM) хранит программы и данные этих программ. Если компьютер отключить от питания, содержимое оперативной памяти будет утеряно;
  • Модули ввода-вывода передают данные между компьютером и его внешним окружением. Внешнее окружение состоит из различных устройств, включающих устройства внешней памяти (напр. диски), коммуникационное оборудование и терминалы;
  • Системная шина (System Bus) предназначена для обмена данными между процессорами, главной памятью и модулями ввода-вывода.

Обмен данными с памятью - это одна из функций процессора. Для этой цели он использует два внутренних регистра. Первый регистр хранит адрес ячейки памяти для последующего чтения или записи данных по этому адресу. Второй регистр содержит данные, полученные из памяти или подлежащие для записи в память. Первый регистр обзовём MAR (Memory Address Register), второй - MBR (Memory Buffer Register). У нас будет еще регистр I/OAR, который хранит адрес конкретного устройства ввода-вывода (говорят «регистр указывает» на это устройство). Также будет регистр I/OBR, который предназначен для обмена данными между модулем ввода-вывода и процессором (то есть будет играть роль буфера). Указанные регистры введены для удобства и не связаны с конкретной архитектурой процессоров.

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

Цели и функции операционных систем

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

  • Удобной. То есть делать компьютер удобным для пользования.
  • Эффективной. То есть эффективно использовать аппаратные ресурсы машины.
  • Способной к нормальному развитию. То есть должна обеспечивать эффективную разработку, тестирование и внедрение новых функций системы, не мешая при этом обслуживанию.

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

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

OS предоставляет сервисы в следующих аспектах:

  • Выполнения программ. Так как программ много и выполняться они должны безопасно, надежно и не монополизировать аппаратуру.
  • Доступа к устройствам ввода-вывода. Каждое устройство по своему специфично и имеет уникальный набор команд для работы с ним. Волшебство OS состоит в сокрытии зоопарка архитектур аппаратной периферии от глаз пользователей. Взамен - унифицированный интерфейс, стирающий различия в работе с устройствами ввода-вывода информации.
  • Контролируемого доступа к файлам.
  • Системного доступа. Разделяемый или публичный доступ к ресурсам компьютера должен контролироваться операционной системой на предмет защиты информации от несанкционированного доступа, а также на предмет конфликтов за обладание общими ресурсами.
  • Обнаружения и реагирования на ошибки. В процессе работы системы возникают ошибки. Сюда входят ошибки оборудования, отказы устройств, программные ошибки типа деления на ноль, ошибки, связанные с доступом к запрещенному участку памяти, ошибки по причине неспособности OS обслужить запрос, поступивший от приложения, и тому подобное. В каждом из этих случаев OS должна зафиксировать ошибку и среагировать на неё. Реакция может быть разной и зависеть от адресата. Например в результате ошибки системного вызова приложению может быть возвращен код ошибки.
  • Учета параметров работы системы. Хорошая ОС будет собирать статистику использования различных ресурсов и отслеживать параметры производительности. В любой системе эта информация полезна для прогнозирования необходимости будущих улучшений и настройки системы для повышения производительности.

Эволюция операционных систем

Последовательная обработка. Вначале (конец 40-х по сер. 50-х гг XX в.) программист взаимодействовал с аппаратурой напрямую. OS не было. Эти компьютеры запускались из консоли, состоящей из индикаторов, переключателей, устройства ввода и принтера. Программы в машинных кодах загружались в память машины через устройство ввода (напр. считыватель перфокарт). Программа могла отработать нормально (без ошибок) или завершиться в результате ошибки. В первом случае результат работы программы печатался на принтере, во втором - ошибка отображалась на индикаторной панели. Эти ранние системы представляли две основные проблемы:

  • Scheduling. Компьютер надо было делить между пользователями. Использовался лист регистрации в печатном виде, чтобы зарезервировать компьютерное время. Обычно пользователь мог зарегистрировать блок времени с кратностью полчаса или около того. С одной стороны пользователь мог зарегистрироваться на час и закончить через 45 минут. Это приводило к потере компьютерного времени. С другой стороны, пользователь мог столкнуться с проблемами, не закончив в отведенное время. Приходилось оставлять на потом, так как другие тоже хотели поработать.
  • Setup time. Отдельная программа, называемая заданием, могла включать в себя загрузку в память компилятора плюс исходный код программы на высокоуровневом языке, сохранение скомпилированной программы (объектной программы) и, затем, загрузку и компоновку объектной программы с библиотеками функций. Каждый из этих шагов мог сопровождаться перестановкой магнитных лент или перфокарт. Время тратилось на настройку программы для запуска.

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

Ключевые идеи внутренней работы операционных систем

Можно выделить 4 ключевые концепции - краеугольных камня операционных систем:

  • Процессы
  • Управление памятью
  • Защита информации и безопасность
  • Планирование и управление ресурсами

Взятые вместе, эти 4 области охватывают многие ключевые вопросы проектирования и реализации современных OS.

Процесс

Процесс, пожалуй, самое центральное понятие OS. Самая центральная абстракция. Впервые термин был использован проектировщиками Multics в 60-х годах прошлого века. Процесс можно определить как:

  • Программу, находящуюся в стадии исполнения.
  • Единицу активности, характеризуемую одним потоком исполнения, текущим состоянием и связанным с ней набором системных ресурсов.

К идее процесса разработчики операционных систем пришли