Организация и функционирование компьютеров
bf1271d8

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


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

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

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

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

Вторая основная проблема тех времен – эффективное обеспечение процесса ввода-вывода. Дело в том, что процесс ввода-вывода кроме собственно процедуры ввода-вывода предполагает наличие многих других стандартных действий: определить номер устройства ввода или вывода, установить его наличие, если оно имеется – включено оно или нет, если включено – стоит на этом устройстве носитель информации (например, магнитная лента) или нет. Далее, если лента стоит – проверить, та ли это лента, если та – перемотать ее к тому месту, где начинаются нужные данные (поскольку на лентах большого объема размещались различные данные).


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

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

Комплекс сервисных программ был объединен в систему, которая получила название операционной системы (ОС). Работа компьютера стала невозможной без операционной системы. Именно операционная система (точнее, ее ядро) является первой (и в некотором смысле единственной!) программой, которая начинает работать в компьютере. Остальные программы выполняются как подпрограммы ядра операционной системы. Основными функциями первых ОС были запуск программ, управление распределением оперативной памяти между различными программами и блоками данных, обеспечение всех нужных действий при операциях ввода – вывода и обработка всевозможных ситуаций, связанных со сбоями аппаратуры или программ (например, в случае отказа принтера или деления на нуль).






Содержание раздела