на курсовий проект (роботу) студента
З А В Д А Н Н Я
Федишина Александра Анатолийвича ____________________ .
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Проектирование операционной системы с заданными . характеристиками .
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
2. Строк здачі студентом закінченого проекту (роботи) 27.04.2012 .
3. Вихідні дані до проекту (роботи) архитектура аппаратных средств компьютера, интерфейс . пользователя (командный язык), состав и общая структура ОС, базы данных ОС, средства _ . взаимодействия процессов, структура и реализация логики управления файловой системы, . общее описание функционирования ОС .
_________________________________________________________________________________
4. Зміст розрахунково-пояснювальної записки (перелік питань, які підлягають розробці)_____
состав и общая структура ОС, базы данных ОС, средства взаимодействия процессов, . структура и реализация логики управления файловой системы ,
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень) ____________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
_________________________________________________________________________________
6. Дата видачі завдання 26.01.2012 .
|
№ п/п | Найменування етапів дипломного проекту (роботи) | Строк виконання етапів проекту (роботи) | Примітка |
Выбор исходных элементов из классфикатора для изучения проектного решения | 1-2 недели | ||
Разработка архитектуры аппаратных средств компьютера для реализации ОС | 2-3 недели | ||
Разработка интерфейса пользователя (командного языка) | 3-4 недели | ||
Проектирование основних структур данных и базы данных ОС | 5-8 недели | ||
Программирование и отладка средства взаимодействия процессов | 9-10 недели | ||
Программирование и отладка логики управления файловой системы | 11-12 недели | ||
Написание программной документации и оформление пояснительной записки | 13 неделя | ||
Защита КП | 14 неделя | ||
Студент ____________________________ Федишин А.А. .
(підпис) (прізвище, ім’я, по батькові)
Керівник __________________________________Сорокин Р.А . .
(підпис) (прізвище, ім’я, по батькові)
Керівник __________________________________ Литвин С.С.. .
(підпис) (прізвище, ім’я, по батькові)
«____» ____________________ 2012 р.
РЕФЕРАТ
Пояснительная записка: 95 с., 9 табл., 22 рис., 10 источников, 4 прил.
Целью создания проекта является приобретение практических навыков создания операционных систем и комплексного инженерного проектирования программного обеспечения, а также изучение особенностей различных алгоритмов управления ресурсами, организации оперативной памяти, средств взаимодействия процессов, а также организации файловых систем. Проект предназначен для демонстрации работы алгоритмов, связанных с операционными системами. Проектируемая операционная система может быть использована в учебных заведениях в качестве наглядного пособия при обучении приемам и правилам построения интерактивной операционной системы. Данный курсовой проект может ознакомить всех желающих с особенностями операционных систем и алгоритмов, применяемых ОС в управлении ресурсами. А также принципами работы файловой системы UNIX.
АРХИТЕКТУРА, ЯДРО, СИСТЕМНЫЙ ВЫЗОВЫ, ПРОЦЕССОР, МОДУЛЬ, БАЗА ДАННЫХ, СИСТЕМА КОМАНД, СЕМАФОР, ПАМЯТЬ, СИНХРОНИЗАЦИЯ, ПРОЦЕСС
| |||||||||||||||||
Д050103.1.01.09/183.КП | |||||||||||||||||
Фамилия | Подпись | Дата | |||||||||||||||
Разработал | ФедишиА.А. | Проектирование операционной системы с заданными характеристиками | Литера | Лист | Листов | ||||||||||||
Рук. проекта | Сорокин Р.А. | у | |||||||||||||||
Литвин С.С. | ИИИИ, каф. ПОИС, группа ПОС-09в | ||||||||||||||||
Н. контр. | |||||||||||||||||
Зав. каф. | Шевченко А.И. | ||||||||||||||||
СОДЕРЖАНИЕ
Введение........................................................................................................ 7 1 Постановка задачи.................................................................................... 9 1.1 Общая постановка задачи...................................................................... 9 1.2 Цель создания курсового проекта......................................................... 9 1.3 Область применения............................................................................... 9 1.4 Характеристики операционной системы............................................... 9 1.4.1 Особенности аппаратных платформ ................................................. 9 1.4.2 Особенности алгоритмов управления ресурсами............................. 11 1.4.3 Особенности областей использования............................................... 12 1.4.4 Организация оперативной памяти..................................................... 12 1.4.5 Средства взаимодействия процессов................................................. 16 1.4.7 Управление процессами..................................................................... 18 1.4.8 Организация файловой системы........................................................ 18 2 Выбор архитектуры вычислительной системы....................................... 22 2.1 Общая схема архитектуры вычислительной системы......................... 22 2.2 Архитектура процессора...................................................................... 24 2.2.1 Архитектура процессора................................................................... 24 2.2.2 Режимы адресации............................................................................. 25 2.3 Система команд..................................................................................... 25 2.4 Спецификации интерфейсов с ВУ......................................................... 28 2.5 Система прерываний............................................................................. 30 2.6 Аппаратные средства обеспечения защиты ………………………………30 3 Проектирование командного языка ос.................................................... 33 3.1 Интерактивные команды....................................................................... 33 3.2 Системные вызовы................................................................................ 34 3.3 Язык пакетных файлов.......................................................................... 35 4 Определение состава и общей структуры системы................................. 37 4.1 Общее описание ядра и ОС................................................................... 37 4.2 Ядро и вспомогательные модули ОС................................................... 39 4.3 Загрузка ОС........................................................................................... 42 4.4 Структура ядра ОС............................................................................... 44 4.5 Системные вызовы................................................................................ 45 5 Формирование базы данных ОС............................................................. 53 5.1 Структура управляющих блоков базы данных ОС............................ 53 5.2 Схема взаимодействия управляющих блоков базы данных ОС......... 53 6 Программная реализация........................................................................ 56 6.1 Средства взаимодействия процессов.................................................... 56
| |||||||||||||||||
Разработала | Фамилия | Подпись | Дата | Д050103.1.01.09/183.КП | Лист | ||||||||||||
ст. гр. ПОС-09в | Федишин А.А. | ||||||||||||||||
ПЕРЕЧЕНЬ ОБОЗНАЧЕНИЙ, СИМВОЛОВ, ЕДИНИЦ, СОКРАЩЕНИЙ И ТЕРМИНОВ
КП — Курсовой проект ПО — Программное обеспечение ПП — Программный продукт ОС — Операционная система ЭВМ — Электронная вычислительная машина БД — База данных ФС — Файловая система ОЗУ — Оперативное запоминающее устройство ОП — Оперативная память БД — База данных
| |||||||||||||||||
Разработала | Фамилия | Подпись | Дата | Д050103.1.01.09/183.КП | Лист | ||||||||||||
ст. гр. ПОС-09в | Федишин А.А. | ||||||||||||||||
6.2 Реализация логики управления файловой системой............................ 58 7 Определение состава и общей структуры ос.......................................... 60 7.1 Структура системы................................................................................ 60 7.2 Первоначальная загрузка..................................................................... 61 7.3 Файловая система ОС............................................................................ 61 7.4 Устройства............................................................................................. 61 7.5 Процессы.............................................................................................. 62 7.6 Общий алгоритм диспетчеризации...................................................... 67 7.7 Архитектура ядра UNIX....................................................................... 67 7.8 Прерывания и особые ситуации........................................................... 68 7.9 Функции операционной системы.......................................................... 69 Выводы........................................................................................................ 70 Список использованных источников.......................................................... 71 Приложение А. Техническое задание......................................................... 72 Приложение Б. Руководство пользователя................................................ 75 Приложение В. Экранные формы.............................................................. 76 Приложение Г. Листинг программы.......................................................... 79
| |||||
Разработала | Фамилия | Подпись | Дата | Д050103.1.01.09/183.КП | Лист |
ст. гр. ПОС-09в | Федишин А.А, | ||||
ВВЕДЕНИЕ
Операционная система в наибольшей степени определяет облик всей вычислительной системы в целом. Несмотря на это, пользователи, активно использующие вычислительную технику, зачастую испытывают затруднения при попытке дать определение операционной системе. Частично это связано с тем, что ОС выполняет две по существу мало связанные функции: обеспечение пользователю-программисту удобств посредством предоставления для него расширенной машины и повышение эффективности использования компьютера путем рационального управления его ресурсами.
Использование большинства компьютеров на уровне машинного языка затруднительно, особенно это касается ввода-вывода. Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающих наличие и типы ошибок, которые, очевидно, надо анализировать. Даже если не входить в курс реальных проблем программирования ввода-вывода, ясно, что среди программистов нашлось бы не много желающих непосредственно заниматься программированием этих операций. При работе с диском программисту-пользователю достаточно представлять его в виде некоторого набора файлов, каждый из которых имеет имя. Работа с файлом заключается в его открытии, выполнении чтения или записи, а затем в закрытии файла. Вопросы подобные таким, как следует ли при записи использовать усовершенствованную частотную модуляцию или в каком состоянии сейчас находится двигатель механизма перемещения считывающих головок, не должны волновать пользователя. Программа, которая скрывает от программиста все реалии аппаратуры и предоставляет возможность простого, удобного просмотра указанных файлов, чтения или записи - это, конечно, операционная система. Точно также, как ОС ограждает программистов от аппаратуры дискового накопителя и предоставляет ему простой файловый интерфейс, операционная система берет на себя все малоприятные дела, связанные с обработкой прерываний, управлением таймерами и оперативной памятью, а также другие низкоуровневые проблемы. В каждом случае та абстрактная, воображаемая машина, с которой, благодаря операционной системе, теперь может иметь дело пользователь, гораздо проще и удобнее в обращении, чем реальная аппаратура, лежащая в основе этой абстрактной машины.
С этой точки зрения функцией ОС является предоставление пользователю некоторой расширенной или виртуальной машины, которую легче программировать и с которой легче работать, чем непосредственно с аппаратурой, составляющей реальную машину.
Идея о том, что ОС прежде всего система, обеспечивающая удобный интерфейс пользователям, соответствует рассмотрению сверху вниз. Другой взгляд, снизу вверх, дает представление об ОС как о некотором механизме, управляющем всеми частями сложной системы. Современные вычислительные системы состоят из процессоров, памяти, таймеров, дисков, накопителей на магнитных лентах, сетевых коммуникационной аппаратуры, принтеров и других устройств. В соответствии со вторым подходом функцией ОС является распределение процессоров, памяти, устройств и данных между процессами, конкурирующими за эти ресурсы. ОС должна управлять всеми ресурсами вычислительной машины таким образом, чтобы обеспечить максимальную эффективность ее функционирования. Критерием эффективности может быть, например, пропускная способность или реактивность системы. Управление ресурсами включает решение двух общих, не зависящих от типа ресурса задач:
- планирование ресурса - то есть определение, кому, когда, а для делимых ресурсов и в каком количестве, необходимо выделить данный ресурс;
- отслеживание состояния ресурса - то есть поддержание оперативной информации о том, занят или не занят ресурс, а для делимых ресурсов - какое количество ресурса уже распределено, а какое свободно.
Для решения этих общих задач управления ресурсами разные ОС используют различные алгоритмы, что в конечном счете и определяет их облик в целом, включая характеристики производительности, область применения и даже пользовательский интерфейс. Так, например, алгоритм управления процессором в значительной степени определяет, является ли ОС системой разделения времени, системой пакетной обработки или системой реального времени.
1 ПОСТАНОВКА ЗАДАЧИ
1.1 Общая постановка задачи
Задача курсового проекта состоит в проектировании операционной системы согласно полученному варианту задания.
1. Аппаратной платформой являются большие ЭВМ (универсальные ЭВМ общего назначения). Операционная система должна быть многозадачной, многопользовательской с многопроцессорной обработкой, с вытесняющая многозадачностью. К особенностям областей использования относятся системы разделения времени и системы пакетной обработки. Организация оперативной памяти с переменными разделами и уплотнением памяти. Средствами взаимодействия процессов являются семафоры. Управление процессами происходит посредствам относительных приоритетов. Организация файловой системы UNIX.
1.2 Цель создания курсового проекта
Целью создания проекта является приобретение практических навыков создания операционных систем и комплексного инженерного проектирования программного обеспечения, а также изучение особенностей различных алгоритмов управления ресурсами, организации оперативной памяти, средств взаимодействия процессов, а также организации файловых систем.
1.3 Область применения
Проект предназначен для демонстрации работы алгоритмов, связанных с операционными системами. Проектируемая операционная система может быть использована в учебных заведениях в качестве наглядного пособия при обучении приемам и правилам построения интерактивной операционной системы. Данный курсовой проект может ознакомить всех желающих с особенностями операционных систем и алгоритмов, применяемых ОС в управлении ресурсами. А также принципами работы файловой системы UNIX.
1.4 Характеристики операционной системы
1.4.1 Особенности аппаратных платформ
На свойства операционной системы непосредственное влияние оказывают аппаратные средства, на которые она ориентирована. По типу аппаратуры различают операционные системы персональных компьютеров, мини-компьютеров, мейнфреймов, кластеров и сетей ЭВМ. Среди перечисленных типов компьютеров могут встречаться как однопроцессорные варианты, так и многопроцессорные. В любом случае специфика аппаратных средств, как правило, отражается на специфике операционных систем.
Сетевая ОС имеет в своем составе средства передачи сообщений между компьютерами по линиям связи, которые совершенно не нужны в автономной ОС. На основе этих сообщений сетевая ОС поддерживает разделение ресурсов компьютера между удаленными пользователями, подключенными к сети. Для поддержания функций передачи сообщений сетевые ОС содержат специальные программные компоненты, реализующие популярные коммуникационные протоколы, такие как IP, IPX, Ethernet и другие.
Сетевая операционная система составляет основу любой вычислительной сети. Каждый компьютер в сети в значительной степени автономен, поэтому под сетевой операционной системой в широком смысле понимается совокупность операционных систем отдельных компьютеров, взаимодействующих с целью обмена сообщениями и разделения ресурсов по единым правилам - протоколам.
В узком смысле сетевая ОС - это операционная система отдельного компьютера, обеспечивающая ему возможность работать в сети.
В сетевой операционной системе отдельной машины можно выделить несколько частей:
- Средства управления локальными ресурсами компьютера: функции распределения оперативной памяти между процессами, планирования и диспетчеризации процессов, управления процессорами в мультипроцессорных машинах, управления периферийными устройствами и другие функции управления ресурсами локальных ОС.
- Средства предоставления собственных ресурсов и услуг в общее пользование - серверная часть ОС (сервер). Эти средства обеспечивают, например, блокировку файлов и записей, что необходимо для их совместного использования; ведение справочников имен сетевых ресурсов; обработку запросов удаленного доступа к собственной файловой системе и базе данных; управление очередями запросов удаленных пользователей к своим периферийным устройствам.
- Средства запроса доступа к удаленным ресурсам и услугам и их использования - клиентская часть ОС (редиректор). Эта часть выполняет распознавание и перенаправление в сеть запросов к удаленным ресурсам от приложений и пользователей, при этом запрос поступает от приложения в локальной форме, а передается в сеть в другой форме, соответствующей требованиям сервера. Клиентская часть также осуществляет прием ответов от серверов и преобразование их в локальный формат, так что для приложения выполнение локальных и удаленных запросов неразличимо.
- Коммуникационные средства ОС, с помощью которых происходит обмен сообщениями в сети. Эта часть обеспечивает адресацию и буферизацию сообщений, выбор маршрута передачи сообщения по сети, надежность передачи и т.п., то есть является средством транспортировки сообщений.
В зависимости от функций, возлагаемых на конкретный компьютер, в его операционной системе может отсутствовать либо клиентская, либо серверная части.
1.4.2 Особенности алгоритмов управления ресурсами
От эффективности алгоритмов управления локальными ресурсами компьютера во многом зависит эффективность всей сетевой ОС в целом. Поэтому, характеризуя сетевую ОС, часто приводят важнейшие особенности реализации функций ОС по управлению процессорами, памятью, внешними устройствами автономного компьютера.
Так, например, в зависимости от особенностей использованного алгоритма управления процессором, операционные системы делят на многозадачные и однозадачные, многопользовательские и однопользовательские, на системы, поддерживающие многонитевую обработку и не поддерживающие ее, на многопроцессорные и однопроцессорные системы.
По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
- однозадачные (например, MS-DOS, MSX) и
- многозадачные (OC EC, OS/2, UNIX, Windows 95).
Однозадачные ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером. Однозадачные ОС включают средства управления периферийными устройствами, средства управления файлами, средства общения с пользователем.
Многозадачные ОС, кроме вышеперечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства.
По числу одновременно работающих пользователей ОС делятся на:
- однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2);
- многопользовательские (UNIX, Windows NT).
Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Следует заметить, что не всякая многозадачная система является многопользовательской, и не всякая однопользовательская ОС является однозадачной.
Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки - мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
В наши дни становится общепринятым введение в ОС функций поддержки многопроцессорной обработки данных. Такие функции имеются в операционных системах Solaris 2.x фирмы Sun, Open Server 3.x компании Santa Crus Operations, OS/2 фирмы IBM, Windows NT фирмы Microsoft и NetWare 4.1 фирмы Novell.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.
1.4.3 Особенности областей использования
Системы разделения времени призваны исправить основной недостаток систем пакетной обработки - изоляцию пользователя-программиста от процесса выполнения его задач. Каждому пользователю системы разделения времени предоставляется терминал, с которого он может вести диалог со своей программой. Так как в системах разделения времени каждой задаче выделяется только квант процессорного времени, ни одна задача не занимает процессор надолго, и время ответа оказывается приемлемым. Если квант выбран достаточно небольшим, то у всех пользователей, одновременно работающих на одной и той же машине, складывается впечатление, что каждый из них единолично использует машину. Ясно, что системы разделения времени обладают меньшей пропускной способностью, чем системы пакетной обработки, так как на выполнение принимается каждая запущенная пользователем задача, а не та, которая "выгодна" системе, и, кроме того, имеются накладные расходы вычислительной мощности на более частое переключение процессора с задачи на задачу. Критерием эффективности систем разделения времени является не максимальная пропускная способность, а удобство и эффективность работы пользователя.
Системы реального времени применяются для управления различными техническими объектами, такими, например, как станок, спутник, научная экспериментальная установка или технологическими процессами, такими, как гальваническая линия, доменный процесс и т.п. Во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная программа, управляющая объектом, в противном случае может произойти авария: спутник выйдет из зоны видимости, экспериментальные данные, поступающие с датчиков, будут потеряны, толщина гальванического покрытия не будет соответствовать норме. Таким образом, критерием эффективности для систем реального времени является их способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы - реактивностью. Для этих систем мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется исходя из текущего состояния объекта или в соответствии с расписанием плановых работ.
1.4.4 Организация оперативной памяти
Оперативная память – важный ресурс любой вычислительной системы, без которого невозможно выполнение программ. Это разделяемый ресурс и выбранный механизм распределения оперативной памяти очень влияет на эффективность использования ресурсов системы, производительность и другие параметры.
Уже достаточно давно пользователи столкнулись с проблемой размещения в памяти программ, размер которых превышал имеющуюся в наличии свободную память. Решением было разбиение программы на части, называемые оверлеями. 0-ой оверлей начинал выполняться первым. Когда он заканчивал свое выполнение, он вызывал другой оверлей. Все оверлеи хранились на диске и перемещались между памятью и диском средствами операционной системы. Однако разбиение программы на части и планирование их загрузки в оперативную память должен был осуществлять программист.
Развитие методов организации вычислительного процесса в этом направлении привело к появлению метода, известного под названием виртуальная память. Виртуальным называется ресурс, который пользователю или пользовательской программе представляется обладающим свойствами, которыми он в действительности не обладает. Так, например, пользователю может быть предоставлена виртуальная оперативная память, размер которой превосходит всю имеющуюся в системе реальную оперативную память. Пользователь пишет программы так, как будто в его распоряжении имеется однородная оперативная память большого объема, но в действительности все данные, используемые программой, хранятся на одном или нескольких разнородных запоминающих устройствах, обычно на дисках, и при необходимости частями отображаются в реальную память.
Таким образом, виртуальная память - это совокупность программно-аппаратных средств, позволяющих пользователям писать программы, размер которых превосходит имеющуюся оперативную память; для этого виртуальная память решает следующие задачи:
- размещает данные в запоминающих устройствах разного типа, например, часть программы в оперативной памяти, а часть на диске;
- перемещает по мере необходимости данные между запоминающими устройствами разного типа, например, подгружает нужную часть программы с диска в оперативную память;
- преобразует виртуальные адреса в физические.
Все эти действия выполняются автоматически, без участия программиста, то есть механизм виртуальной памяти является прозрачным по отношению к пользователю.
Наиболее распространенными реализациями виртуальной памяти является страничное, сегментное и странично-сегментное распределение памяти, а также свопинг.
На рисунке 1.1 показана схема страничного распределения памяти. Виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера, называемые виртуальными страницами. В общем случае размер виртуального адресного пространства не является кратным размеру страницы, поэтому последняя страница каждого процесса дополняется фиктивной областью.
Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками).
Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.
При загрузке процесса часть его виртуальных страниц помещается в оперативную память, а остальные - на диск. Смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. При загрузке операционная система создает для каждого процесса информационную структуру - таблицу страниц, в которой устанавливается соответствие между номерами виртуальных и физических страниц для страниц, загруженных в оперативную память, или делается отметка о том, что виртуальная страница выгружена на диск. Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак невыгружаемости (выгрузка некоторых страниц может быть запрещена), признак обращения к странице (используется для подсчета числа обращений за определенный период времени) и другие данные, формируемые и используемые механизмом виртуальной памяти.
Рисунок 1.1 – Страничное распределение памяти
При активизации очередного процесса в специальный регистр процессора загружается адрес таблицы страниц данного процесса.
При каждом обращении к памяти происходит чтение из таблицы страниц информации о виртуальной странице, к которой произошло обращение. Если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физический. Если же нужная виртуальная страница в данный момент выгружена на диск, то происходит так называемое страничное прерывание. Выполняющийся процесс переводится в состояние ожидания, и активизируется другой процесс из очереди готовых. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается загрузить ее в оперативную память. Если в памяти имеется свободная физическая страница, то загрузка выполняется немедленно, если же свободных страниц нет, то решается вопрос, какую страницу следует выгрузить из оперативной памяти.
В данной ситуации может быть использовано много разных критериев выбора, наиболее популярные из них следующие:
- дольше всего не использовавшаяся страница,
- первая попавшаяся страница,
- страница, к которой в последнее время было меньше всего обращений.
В некоторых системах используется понятие рабочего множества страниц. Рабочее множество определяется для каждого процесса и представляет собой перечень наиболее часто используемых страниц, которые должны постоянно находиться в оперативной памяти и поэтому не подлежат выгрузке.
После того, как выбрана страница, которая должна покинуть оперативную память, анализируется ее признак модификации (из таблицы страниц). Если выталкиваемая страница с момента загрузки была модифицирована, то ее новая версия должна быть переписана на диск. Если нет, то она может быть просто уничтожена, то есть соответствующая физическая страница объявляется свободной.
Рассмотрим механизм преобразования виртуального адреса в физический при страничной организации памяти, изображенный на рис. 1.2.
Виртуальный адрес при страничном распределении может быть представлен в виде пары (p, s), где p - номер виртуальной страницы процесса (нумерация страниц начинается с 0), а s - смещение в пределах виртуальной страницы. Учитывая, что размер страницы равен 2 в степени к, смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой двоичную запись номера страницы p.
Рисунок 1.2 – Механизм преобразования виртуального адреса в физический при страничной организации памяти
При каждом обращении к оперативной памяти аппаратными средствами выполняются следующие действия:
1. на основании начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие разряды виртуального адреса) и длины записи в таблице страниц (системная константа) определяется адрес нужной записи в таблице,
2. из этой записи извлекается номер физической страницы,
3. к номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса).
Использование в пункте 3 того факта, что размер страницы равен степени 2, позволяет применить операцию конкатенации (присоединения) вместо более длительной операции сложения, что уменьшает время получения физического адреса, а значит повышает производительность компьютера.
На производительность системы со страничной организацией памяти влияют временные затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. При часто возникающих страничных прерываниях система может тратить большую часть времени впустую, на свопинг страниц. Чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы. Кроме того, увеличение размера страницы уменьшает размер таблицы страниц, а значит уменьшает затраты памяти. С другой стороны, если страница велика, значит велика и фиктивная область в последней виртуальной странице каждой программы. В среднем на каждой программе теряется половина объема страницы, что в сумме при большой странице может составить существенную величину. Время преобразования виртуального адреса в физический в значительной степени определяется временем доступа к таблице страниц. В связи с этим таблицу страниц стремятся размещать в "быстрых" запоминающих устройствах. Это может быть, например, набор специальных регистров или память, использующая для уменьшения времени доступа ассоциативный поиск и кэширование данных.
Страничное распределение памяти может быть реализовано в упрощенном варианте, без выгрузки страниц на диск. В этом случае все виртуальные страницы всех процессов постоянно находятся в оперативной памяти. Такой вариант страничной организации хотя и не предоставляет пользователю виртуальной памяти, но почти исключает фрагментацию за счет того, что программа может загружаться в несмежные области, а также того, что при загрузке виртуальных страниц никогда не образуется остатков.
1.4.5 Средства взаимодействия процессов
Обобщающее средство синхронизации процессов предложил Дейкстра, который ввел два новых примитива. В абстрактной форме эти примитивы, обозначаемые P и V, оперируют над целыми неотрицательными переменными, называемыми семафорами.
Метод использует блокировку ожидающего процесса - перевод его из списка процессов, планируемых на выполнение (готовых), в список ожидающих (заблокированных). Этим экономится процессорное время, в противном случае попусту растрачиваемое в занятом ожидании, а затраты сводятся к переключению процессов.
Такая возможность обеспечивается:
- введением специальных целочисленных общих переменных, которые называются семафорами;
- добавлением к набору элементарных действий, из которых строятся процессы, операций над семафорами: V-операции и P-операции.
V-операция есть операция с одним операндом, который должен быть семафором. Выполнение операции состоит в увеличении значения аргумента на 1, это действие должно быть атомарным.
P-операция есть операция с одним операндом, который должен быть семафором. Выполнение операции состоит в уменьшении значения аргумента на 1, если только это действие не приведет к отрицательному значению операнда. Выполнение P-операции, то есть, принятие решение о том, что момент является подходящим для уменьшения аргумента, и последующее его уменьшение должно быть атомарным.
Атомарность P-операции и является потенциальной задержкой: если процесс пытается выполнить P-операцию над семафором, значение которого в данный момент нулевое, данная P-операция не может завершиться пока другой процесс не выполнит V-операцию над этим семафором. Несколько процессов могут начать одновременно P-операцию над одним и тем же семафором. Тогда при установке семафора в 1 только одна из P-операций завершится, какая именно - мы обсудим позже.
Защита разделяемых ресурсов теперь выглядит следующим образом. Каждый ресурс защищается своим семафором, значение которого может быть 1 - свободен или 0 - занят. Процесс, выполняющий доступ к ресурсу, инициирует P-операцию. Если ресурс занят - процесс задерживается в своей P-операции до освобождения ресурса. Когда ресурс освобождается, P-операция процесса завершается, и процесс занимает ресурс. При освобождении ресурса процесс выполняет V-операцию.
ОС может предоставлять семафоры в распоряжение пользователя, как средство для самостоятельного решения задач, требующих взаимного исключения и/или синхронизации.
При работе с именованным семафором один из процессов должен создать системный семафор, другие процессы получают доступ к созданному системному семафору. Среди входных параметров этих вызовов имеется внешнее имя семафора, вызовы возвращают манипулятор для семафора, используемый для его идентификации при последующей работе с ним. Семафор уничтожается, когда он закрыт во всех процессах, его использовавших.
Помимо основных для семафоров P- и V-операций, конкретные семафорные API ОС могут включать в себя расширенные и сервисные функции, такие как безусловная установка семафора, установка семафора и ожидание его очистки, ожидание очистки семафора. При выполнении системных вызовов - аналогов P-операции, как правило, имеется возможность задать опцию ожидания - блокировать процесс, если выполнение P-операции невозможно, или завершить системный вызов с признаком ошибки.
Во многих современных ОС наряду с семафорами "в чистом виде" API представляет те же семафоры и в виде "прикладных" объектов - объектов взаимного исключения и событий. Хотя содержание этих объектов одно и то же - семафор, ОС в отношении этих объектов представляет для прикладных процессов специфическую семантику API, соответствующую задачам взаимного исключения и синхронизации.
Все современные ОС предоставляют прикладному процессу возможность работать с "массивами семафоров", то есть, задавать список семафоров и выполнять операцию над всем списком, например, ожидать очистки любого семафора в заданном списке. Наиболее развито это средство в ОС Unix, где имеется возможность выполнять за один системный вызов semop сразу нескольких различных операций над несколькими семафорами, причем весь список операций выполняется, как одна транзакция.
1.4.6 Управление процессами
Квантование времени - используется для обеспечения эффективной интерактивной работы с компьютером нескольких пользователей. Устанавливается интервал времени - квант, в течение которого процесс может исполняться на процессоре. По истечение кванта, следующий процесс назначается на процессор. Готовые к исполнению процессы по очереди циклически получают свои кванты. Таким образом, создается эффект одновременного параллельного исполнения процессов.
1.4.7 Организация файловой системы
Файлы в UNIX играют ключевую роль, что не всегда справедливо для других операционных систем. Трудно отрицать значение файлов для пользователей, поскольку все их данные хранятся в виде файлов. Однако помимо этого, файлы в UNIX определяют привилегии пользователей, поскольку права пользователя в большинстве случаев контролируются с помощью прав доступа к файлам. Файлы обеспечивают доступ к периферийным устройствам компьютера, включая диски, накопители на магнитной ленте, CD-ROM, принтеры, терминалы, сетевые адаптеры и даже память.
Для приложений UNIX доступ в дисковому файлу "неотличим" от доступа, скажем, к принтеру. Наконец, все программы, которые выполняются в системе, включая прикладные задачи пользователей, системные процессы и даже ядро UNIX, являются исполняемыми файлами.
Как и во многих современных операционных системах, в UNIX файлы организованы в виде древовидной структуры (дерева), называемой файловой системой (file system). Каждый файл имеет имя, определяющее его расположение в дереве файловой системы. Корнем этого дерева является корневой каталог (root directory), имеющий имя Имена всех остальных файлов содержат путь — список каталогов (ветвей), которые необходимо пройти, чтобы достичь файла. В UNIX все доступное пользователям файловое пространство объединено в единое дерево каталогов, корнем которого является каталог Таким образом, полное имя любого файла начинается с и не содержит идентификатора устройства (дискового накопителя, CD!ROM или удаленного компьютера в сети), на котором он фактически хранится.
Однако это не означает, что в системе присутствует только одна файловая система. В большинстве случаев единое дерево, такое каким его видит пользователь системы, составлено из нескольких отдельных файловых систем, которые могут иметь различную внутреннюю структуру, а файлы, принадлежащие этим файловым системам, могут быть расположены на различных устройствах. Имя файла является атрибутом файловой системы, а не набора некоторых данных на диске, который не имеет имени как такового.
Каждый файл имеет связанные с ним метаданные (хранящиеся в индексных дескрипторах — inode), содержащие все характеристики файла и позволяющие операционной системе выполнять операции, заказанные прикладной задачей: открыть файл, прочитать или записать данные, создать или удалить файл. В частности, метаданные содержат указатели на дисковые блоки хранения данных файла. Имя файла в файловой системе является указателем на его метаданные, в то время как метаданные не содержат указателя на имя файла.
В UNIX существуют 6 типов файлов, различающихся по функциональному назначению и действиям операционной системы при выполнении тех или иных операций над файлами:
- Обычный файл (regular file);
- каталог (directory);
- специальный файл устройства (special device file);
- FIFO или именованный канал (named pipe);
- связь (link);
- сокет.
Обычный файл представляет собой наиболее общий тип файлов, содержащий данные в некотором формате. Для операционной системы такие файлы представляют собой просто последовательность байтов. Вся интерпретация содержимого файла производится прикладной программой, обрабатывающей файл. К этим файлам относятся текстовые файлы, бинарные данные, исполняемые программы и т. п.
С помощью каталогов формируется логическое дерево файловой системы. Каталог — это файл, содержащий имена находящихся в нем файлов, а также указатели на дополнительную информацию — метаданные, позволяющие операционной системе производить операции над этими файлами. Каталоги определяют положение файла в дереве файловой системы, поскольку сам файл не содержит информации о своем местонахождении. Любая задача, имеющая право на чтение каталога, может прочесть его содержимое, но только ядро имеет право на запись в каталог.
По существу каталог представляет собой таблицу, каждая запись которой соответствует некоторому файлу. Первое поле каждой записи содержит указатель на метаданные (номер mode), а второе определяет имя файла.
Специальный файл устройства обеспечивает доступ к физическому устройству. В UNIX различают символьные (character) и блочные (block) файлы устройств. Доступ к устройствам осуществляется путем открытия, чтения и записи в специальный файл устройства.
Символьные файлы устройств используются для небуферизированного обмена данными с устройством, в противоположность этому блочные файлы позволяют производить обмен данными в виде пакетов фиксированной длины — блоков. Доступ к некоторым устройствам может осуществляться как через символьные, так и через блочные специальные файлы.
FIFO или именованный канал — это файл, используемый для связи между процессами. FIFO впервые появились в System V UNIX, но большинство современных систем поддерживают этот механизм.
Связь. Как уже говорилось, каталог содержит имена файлов и указатели на их метаданные. В то же время сами метаданные не содержат ни имени файла, ни указателя на это имя. Такая архитектура позволяет одному файлу иметь несколько имен в файловой системе. Имена жестко связаны с метаданными и, соответственно, с данными файла, в то время как сам файл существует независимо от того, как его называют в файловой системе. Такая связь имени файла с его данными называется жесткой связью (hard link).
Жесткие связи абсолютно равноправны. В списках файлов каталогов, которые можно получить с помощью команды ls(l), файлы first и second будут отличаться только именем. Все остальные атрибуты файла будут абсолютно одинаковыми. С точки зрения пользователя — это два разных файла. Изменения, внесенные в любой из этих файлов, затронут и другой, поскольку оба они ссылаются на одни и те же данные файла. Вы можете переместить один из файлов в другой каталог — все равно эти имена будут связаны жесткой связью с данными файла. Легко проверить, что удаление одного из файлов (first или second) не приведет к удалению самого файла, т. е. его метаданных и данных (если это не специальный файл устройства).
Сокеты предназначены для взаимодействия между процессами. Интерфейс сокетов часто используется для доступа к сети TCP/IP. В системах, ветви BSD UNIX на базе реализована система межпроцессного взаимодействия, с помощью которой работают многие системные сервисы, например, система печати.
Использование общепринятых имен основных файлов и структуры каталогов существенно облегчает работу в операционной системе, ее администрирование и переносимость. Эта структура, представленная на рис. 1.3, используется в работе системы, например при ее инициализации и конфигурировании, при работе почтовой системы и системы печати. Нарушение этой структуры может привести к неработоспособности системы или отдельных ее компонентов.
Рисунок 1.3 – Типичная файловая система UNIX
Корневой каталог является основой любой файловой системы UNIX. Все остальные файлы и каталоги располагаются в рамках структуры, порожденной корневым каталогом, независимо от их физического местонахождения. В каталоге находятся наиболее часто употребляемые команды и утилиты системы, как правило, общего пользования.
2 ВЫБОР АРХИТЕКТУРЫ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ
2.1.Общая схема архитектуры вычислительной системы
Система, состоящая из одной или нескольких ЭВМ и набора программ, обеспечивающих выполнение возложенных на систему функций, называется вычислительной системой (ВС). Состав ВС можно представить в виде совокупности аппаратной и программной частей (рис.1).
Рисунок 2.1 – Состав ВС
В состав оборудования может входить одна или несколько ЭВМ, которые выполняют функцию ввода, хранения, преобразования и вывода информации. Система нескольких ЭВМ, объединенных между собой каналами связи, разнесенных в пространстве и выполняющих функцию приема/передачи информации, называется вычислительной сетью.
Вычислительную сеть можно представить в виде двух взаимосвязанных подсетей: сети передачи данных и сети ЭВМ. СПД - совокупность технических средств для передачи данных между ЭВМ, которые состоят из линий связи и узлов связи. Узел связи - совокупность средств коммутации и передачи данных в одном пункте. Узел связи принимает данные, поступающие по каналам связи, и передает данные в каналы ведущие к абонентам. Узел связи реализуется на основе коммутационной ЭВМ и аппаратуры передачи данных. Коммутационная ЭВМ управляет приемом и передачей данных и, в частности, выбирает целесообразный путь передачи данных (в другой терминологии - маршрутизатор или коммутатор). СПД можно считать ядром вычислительной сети, обеспечивающим физическое объединение ЭВМ и других устройств.
Сеть ЭВМ - совокупность ЭВМ, объединенных сетью передачи данных. Сеть ЭВМ включает в себя главный и терминальные ЭВМ. Главная ЭВМ выполняет задания пользователя сети и содержит основные программные ресурсы. Терминальные ЭВМ - пользовательские персональные ЭВМ, а также интеллектуальные терминалы, включающие монитор со встроенным процессором, обеспечивающим локальную обработку. Под терминальными ЭВМ понимаются устройства ввода графической информации, речи, изображения и устройства вывода аналогичной информации.
Общая схема архитектуры ВС представлена на рисунке 2.2. Основным модулем является центральный процессор. С которым взаимодействуют устройства ввода-вывода, внешние запоминающие устройства, а также оперативная память.
Прикладные программы | ||||||||
Системы программирования | ||||||||
Управление логическими устройствами | ||||||||
Управление физическими устройствами | ||||||||
Аппаратные средства | ||||||||
Рисунок 2.2 – Общая схема архитектуры ВС
Схема архитектуры вычислительной системы отдельного компьютера представлена на рисунке 2.3.
Рисунок 2.3 – Схема архитектуры вычислительной системы
Процессор дешифрирует команды и управляет всеми действиями в системе, а также выполняет все арифметические и логические операции.
Память – устройство для хранения информации. Память делится на внутреннюю (расположенную на системной плате) и внешнюю (размещенную на разнообразных внешних носителях информации).
Внутренняя память в свою очередь подразделяется на:
- ПЗУ (постоянное запоминающее устройство), которое содержит информацию, сохраняемую даже при отключенном питании, которая служит для тестирования памяти и оборудования компьютера, начальной загрузки ПК при включении;
- ОЗУ (оперативное запоминающее устройство), служит для оперативного хранения программ и данных, сохраняемых только на период работы ПК. Она энергозависима, при отключении питания информация теряется. МП имеет возможность прямого доступа в ОП, минуя систему ввода/вывода.
Контроллеры служат для обеспечения прямой связи с ОП, минуя МП, они используются для устройств быстрого обмена данными с ОП – дисплей, клавиатура и др., обеспечения работы в групповом или сетевом режиме.
В персональном компьютере все устройства взаимодействуют через системную шину. Шина – это общий канал связи, используемый в ПК. Применяется она для организации взаимодействия между двумя или более компонентами системы.
2.2. Архитектура процессора
2.2.1 Архитектура процессора
Гипотетический микропроцессор оперирует с 8-ми разрядными байтами. Следовательно, разрядность шины данных также равна 8 бит. Длина адреса составляет 12 бит, следовательно, шина адреса 12-ти разрядная. Регистр данных и адреса (DAR) имеет разрядность 12 бит. Разрядность программного счетчика (PC) равна разрядности адреса (12 бит).
Разрядность регистра команд (IR) равна максимальной длине команды минус максимальная длина операнда. Максимальная длина операнда равна 16 бит. Следовательно, разрядность регистра команд – 8 бит. Регистр условия состоит из трех флагов: флаг нуля (Z) – устанавливается, если результат последней операции равен нулю; флаг знака (S) – устанавливается, если результат последней операции отрицательный; флаг переполнения (О) – устанавливается, если в результате последней операции был зафиксирован факт переполнения (выхода за пределы диапазона допустимых значений).
Структурно-логическая схема гипотетического микропроцессора представлена на рисунке 2.4.
Рисунок 2. 4 – Структурно-логическая схема гипотетического микропроцессора
2.2.2 Режимы адресации
Гипотетический процессор использует следующие виды адресации для доступа к данным в памяти:
- прямая – в команде указывается адрес, по которому находится операнд. Используется при записи данных в память и из памяти и для операций перехода
- прямая регистровая – в команде указывается аккумулятор, в котором находится операнд. Используется для загрузки, при арифметических и логических операциях и операциях сравнения;
- косвенная регистровая – адрес исполнительный находится в РОНе адресуемой команде, является более быстрой, чем косвенная адресация и позволяет сократить длину команды;
- непосредственная - операнд занимает одно из полей команды и, следовательно, выбирается из оперативной памяти одновременно с ней. Используется в арифметических командах и при загрузке конкретного значения в регистр;
- с автоувеличением и автоуменьшением – разновидность косвенной регистровой адресации. После или перед выполнением содержимое регистра автоматически увеличивается или уменьшается на единицу. Применяется при создании циклов.
2.3 Система команд
В соответствии с требованием функциональной полноты система команд включает следующие операции:
- загрузку регистров и запись в память;
- сложение и вычитание целых чисел;
- поразрядные логические операции;
- условные и бузусловные переходы;
- изменение содержимого разрядов регистра кода условия (флажков);
- ввод и вывод;
- останов, вызов подпрограмм и возврат из них.
Система команд обеспечивает с помощью вышеприведенных команд организацию циклов, переход к подпрограмме и возврат. Модификация данных обеспечивается наличием команд загрузки, записи в память, арифметических и логических команд, изменяющих содержимое аккумуляторов и регистров общего назначения. Система команд микропроцессора представлена в таблице 2.1.
Таблица 2.1 – Система команд микропроцессора