Введение
Операционные системы являются основой программного обеспечения вычислительных машин. Операционная система (ОС) - это комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между пользователем и аппаратными компонентами вычислительных машин и вычислительных систем, а с другой стороны предназначен для эффективного управления вычислительными процессами, а также наиболее рационального распределения и использования вычислительных ресурсов.
Для более полного понимания роли ОС рассмотрим основные составные компоненты любой вычислительной системы. Во-первых, это аппаратное обеспечение (в англоязычных странах принято называть словом hardware): процессор, память, монитор, дисковые устройства и т.д. Во-вторых, вычислительная система состоит из программного обеспечения. Все программное обеспечение принято делить на две части: прикладное и системное. К прикладному программному обеспечению, как правило, относятся разнообразные банковские и прочие бизнес-программы, игры, текстовые процессоры и т. п. Под системным программным обеспечением обычно понимают программы, способствующие функционированию и разработке прикладных программ.
ГЛАВА 1. Основные функции операционных систем
Операционная система (ОС) должна выполнять следующие функции:
- обеспечивать загрузку пользовательских программ и их выполнение (за исключением операционных систем, прошиваемых в ПЗУ);
Программы пользователя выполняются на компьютере под управлением системного программного обеспечения, реализованного в виде операционной системы (ОС). ОС выполняет достаточно много функций, из которых наиболее важными для системного программиста являются:
1) управление файлами. ОС поддерживает структуру файлов и папок (файловая система) на дисках компьютера. Это физический уровень хранения информации. Прикладные программы создают, изменяют информацию в файлах, но ОС управляет их размещением в дисковой памяти;
2) ввод/вывод информации. Прикладные программы запрашивают ввод исходных данных у системы и предоставляют результаты обработки системе с помощью прерываний. Низкоуровневые операции ввода/вывода (канальные программы) ОС выполняет без вмешательства программиста;
3) загрузка программ. Когда пользователь или прикладная программа запрашивают выполнение другой программы, загрузчик (ОС) выполняет последовательность шагов, описываемую ниже, для получения доступа к программе на диске, размещения ее в оперативной памяти и начала выполнения;
4) управление памятью. Когда загрузчик размещает программу в оперативной памяти, он выделяет достаточный объем памяти для кода программы и ее данных. Программы могут обрабатывать данные в первоначально зарезервированной области, могут освобождать ненужную память или запрашивать дополнительную память. Конкретные физические адреса оперативной памяти определяются ОС без вмешательства программиста;
5) обработка прерываний. ОС позволяет прикладным программам получать доступ к внешним устройствам посредством прерываний – специальных команд, включаемых в прикладную программу.
- обеспечивать управление памятью. Эта функция обеспечивает получение программой памяти и управление системными ресурсами;
Память является важнейшим ресурсом, требующим тщательного управления со стороны мультипрограммной операционной системы. Распределению подлежит вся оперативная память, не занятая операционной системой. Обычно ОС располагается в самых младших адресах, однако может занимать и самые старшие адреса. Функциями ОС по управлению памятью являются: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, вытеснение процессов из оперативной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место, а также настройка адресов программы на конкретную область физической памяти.
Существует пять требований к управлению памятью:
- Перемещение;
- Защита;
- Совместное использование;
- Логическая организация;
- Физическая организация.
В многозадачной системе доступная память разделяется множеством процессов. Эти процессы могут многократно выгружаться и вновь загружаться в основную память. Требование, чтобы выгруженная из памяти программа была вновь загружена в то место, в котором она находилась до выгрузки, является слишком большим ограничением. Желательно, чтобы программа была перемещена в другую область памяти. В связи с этим возникает необходимость в создании определенных требований к адресации. Процессор и программное обеспечение должны быть способны перевести ссылки в коде программы в реальные физические адреса, соответствующие текущему расположению программы в основной памяти.
Требование защиты также связано с возможностью выполнения одновременно нескольких процессов. Каждый процесс должен быть защищен от нежелательного воздействия других процессов. Поэтому код одного процесса не должен иметь возможности без разрешения обращаться к данным другого процесса. Требования защиты памяти должны быть удовлетворены на уровне аппаратного обеспечения, а не на уровне операционной системы, так как операционная система не в состоянии предвидеть все обращения к памяти, которые выполнит программа.
Механизм защиты должен быть гибким и обеспечивать возможность нескольким процессам обращаться к одной и той же области оперативной памяти. Процессам может потребоваться, например, совместный доступ к одним и тем же структурам данных. Система управления памятью должна обеспечивать управляемый доступ к разделяемым областям памяти.
Большинство программ организовано в виде модулей. Если ОС и аппаратное обеспечение компьютера могут эффективно работать с пользовательскими программами и данными, представленными в виде модулей, это обеспечивает ряд преимуществ.
Память компьютера разделяется, как минимум, на два уровня: основная и вторичная. Вторичная память медленнее и дешевле основной и обычно энергонезависима. Следовательно, вторичная память большой емкости может служить для долговременного хранения программ и данных, а основная память меньшей емкости – для хранения программ и данных, использующихся в текущий момент. В такой структуре основная проблема – организация потоков информации между основной и вторичной памятью. Эта задачу должна выполнять операционная система.
- обеспечивать работу с устройствами долговременной памяти (жесткие диски, магнитные ленты, оптические диски и т.п.). В этом случае ОС структурирует пользовательские данные в виде файловых систем;
Структуры данных
Общее. В теории информатики определены следующие три основных типа структур данных – линейная, табличная, иерархическая. Пример книга: последовательность листов – линейная структура. Части, разделы, главы, параграфы – иерархия. Оглавление – таблица – связывает – иерархическую с линейной. У структурированных данных появляется новый атрибут - Адрес. И так:
1. Линейные структуры (списки, вектора). Обычные списки. Адрес каждого элемента однозначно определяется его номером. Если все элементы списка имеют равную длину – вектора данных.
2. Табличные структуры (таблицы, матрицы). Отличие таблицы от списка – каждый элемент – определяется адресом, состоящим не из одного, а нескольких параметров. Самый распространенный пример – матрица - адрес – два параметра – номер строки и номер столбца. Многомерные таблицы.
3. Иерархические структуры. Используются для представления нерегулярных данных. Адрес – определяется маршрутом – от вершины дерева. Файловая система – компьютера. (Маршрут может превысить – величину данных, дихотомия – всегда два разветвления – влево и вправо).
Упорядочение структур данных. Основной способ – сортировка! При добавлении нового элемента в упорядоченную структуру – возможно изменения адреса у существующих. Для иерархических структур – индексация – каждому элементу уникальный номер – который далее используется в сортировке и поиске.
Файл - это именованная область внешней памяти, в которую можно записывать и из которой можно считывать данные. Три параметра:
· последовательность произвольного числа байтов;
· уникальное собственное имя (фактически – адрес);
· данные одного типа – тип файла.
Структура файлов. Файл представляет совокупность блоков данных, размещенных на внешнем носителе. Для произведения обмена с магнитным диском на уровне аппаратуры нужно указать номер цилиндра, номер поверхности, номер блока на соответствующей дорожке и число байтов, которое нужно записать или прочитать от начала этого блока. Поэтому во всех файловых системах явно или неявно выделяется некоторый базовый уровень, обеспечивающий работу с файлами, представляющими набор прямо адресуемых в адресном пространстве блоков.
Именование файлов. Все современные файловые системы поддерживают многоуровневое именование файлов за счет поддержания во внешней памяти дополнительных файлов со специальной структурой - каталогов. Каждый каталог содержит имена каталогов и/или файлов, содержащихся в данном каталоге. Таким образом, полное имя файла состоит из списка имен каталогов плюс имя файла в каталоге, непосредственно содержащем данный файл. Разница между способами именования файлов в разных файловых системах состоит в том, с чего начинается эта цепочка имен. (Unix, DOS-Windows)