русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ОПЕРАЦИОННЫЕ СИСТЕМЫ


Дата добавления: 2014-11-28; просмотров: 4710; Нарушение авторских прав


 

(учебное пособие)

 

Иваново 2011


Оглавление

ВВЕДЕНИЕ.. 4

1. ОПЕРАЦИОННАЯ СИСТЕМА: ОСНОВНЫЕ ПОНЯТИЯ.. 8

1.1. Понятие операционной системы, её роль и функции. 8

1.2. Операционная и программная среды.. 10

1.3. Очередь и стек. 10

1.4. Машинная команда, способы адресации, привелегированные команды.. 11

1.5.Система прерываний. 12

1.6. Задачи, вычислительные процессы и ресурсы.. 16

1.7. Мультипрограммный, мультизадачный и многопользовательский режимы работы операционной системы. Режим разделения времени. 20

2. УПРАВЛЕНИЕ ПАМЯТЬЮ В ОПЕРАЦИОННЫХ СИСТЕМАХ.. 24

2.1. Память и отображения, виртуальное адресное пространство. 24

2.2. Простое непрерывное распределение и распределение с перекрытием.. 25

2.3. Распределение памяти статическими разделами. 26

2.4. Распределение памяти с динамическими разделами. 27

2.5. Распределение памяти с фрагментацией задач. 27

3. УПРАВЛЕНИЕ ПРОЦЕССАМИ.. 34

3.1. Реализация последовательного процесса в операционной системе. 34

3.2. Планирование и диспетчеризация процессов и задач. 34

3.3. Управление параллельными процессами. 39

3.3.1. Понятие параллельных процессов. 39

3.3.2. Методы реализации взаимных исключений. 42

3.3.3. Блокировка памяти. 42

3.3.4. Применение специальных операций типа "проверка–установка". 44

3.3.5.Семафоры и их применение. 45

3.3.6. Мониторы.. 49

3.3.7. Почтовые ящики, конвейеры и очереди сообщений. 50

4. ПРОБЛЕМА ТУПИКОВ И ЕЁ РЕШЕНИЕ.. 54

4.1. Проблема тупиков, разделяемые ресурсы и модели параллельных процессов. 54

4.2. Модель повторно используемых ресурсов Холта. 54

4.3. Сети Петри. 59

4.4. Модель пространства состояний системы.. 63

4.5. Борьба с тупиками. 64

4.5.1. Предотвращение тупиков. 64



4.5.2. Обход тупиков. 65

4.5.3. Обнаружение тупика. 67

5. ЖЁСТКИЙ ДИСК.. 70

5.1. Устройство накопителя жесткого диска (HDD) и адресация элементов дискового пространства 70

5.2. Логическая структура диска. 71

5.3. Создание загрузочных дисков. 72

6. ФАЙЛОВЫЕ СИСТЕМЫ... 74

6.1. Файлы и каталоги. 74

6.2. Понятие и функции файловой системы и системы управления файлами. 75

6.3. Обзор файловых систем.. 77

6.3.1. Файловая система FAT16, FAT32 и VFAT. 77

6.3.2. Файловая система NTFS. 82

6.3.3. Файловые системы компакт-дисков. 85

7. СРЕДСТВА ЗАЩИТЫ И ВОССТАНОВЛЕНИЯ ОПЕРАЦИОННЫХ СИСТЕМ... 90

7.1. Цифровая подпись драйверов и её верификация. 90

7.2. Защита и проверка системных файлов. 90

7.3. Откат драйверов. 91

7.6. Безопасный режим загрузки. 91

7.7. Мастер и точки восстановления системы.. 92

7.8. Резервное копирование и восстановление. 92

7.9. Аварийное восстановление системы. Консоль восстановления. 93

8. ЗАГРУЗЧИКИ ОПЕРАЦИОННЫХ СИСТЕМ... 95

8.1. Понятие загрузчика и виды его реализации. 95

8.2. Решение проблемы четырех разделов в MBR.. 97

8.3. Установка загрузчиков ОС.. 98

8.4. Настройка загрузчиков ОС.. 99

8.5. Удаление загрузчиков ОС.. 100

9. СИСТЕМНЫЙ РЕЕСТР И СИСТЕМНЫЕ СЛУЖБЫ... 101

9.1. Назначение и структура реестра. 101

9.2. Работа с реестром.. 103

9.3. Системные службы.. 105

10. БЕЗОПАСНОСТЬ ОПЕРАЦИОННЫХ СИСТЕМ... 107

10.1. Угрозы, уязвимости, атаки. 107

10.2. Политика безопасности. 109

10.3. Защита от вторжений. 110

10.4. Межсетевые экраны.. 112

10.5. Отключение ненужных служб. 114

10.6. Защита от спама. 115

10.7. Защита от вредоносных программ и вирусов. 116

10.8. Защита конфиденциальной информации. 117

СПИСОК ЛИТЕРАТУРНЫХ ИСТОЧНИКОВ.. 121


ВВЕДЕНИЕ

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

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

Поколения ОС также как и аппаратные средства отражают достижения в области электронных компонентов: 1 поколение – лампы, 2 поколение – транзисторы, 3 поколение – интегральные микросхемы (ИС), 4 поколение большие и сверхбольшие интегральные схемы – БИС и СБИС.

Нулевое поколение (40 - 50 гг.) – ОС в современном понятии отсутствуют. Полный доступ к ресурсам ВМ осуществляется программами, написанными в двоичном коде и реализующими машинный язык. Компьютеры использовались в монопольном интерактивном режиме, причём основное время работы компьютера приходилось на ожидание каких-либо действий пользователя или программиста

Первое поколение (60-е гг.) – возникновение системы пакетной обработки, предусматривающей:

· постоянное нахождение в машине управляющей программы;

· формирование очереди задач, включающих в себя программу и данные;

· выполнение в каждый момент работы ВМ одной прикладной программы;

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

· вывод результатов выводятся на внешнее устройство в форме пакета результатов.

Пользователь общается с машиной через оператора, который принимает пакеты задач и выдаёт пакеты результатов.

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

Недостатки:

· использование части машинного времени на выполнение системной управляющей программы;

· простои процессора до завершения операций обмена данными между машиной и внешними устройствами;

· простой внешних устройств во время вычислений.

Второе поколение(65 – 75 гг.) – операционные системы мультипрограммного пакетного режима, системы с разделением времени и первые системы реального времени.

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

Системы с разделением времени (РВ), предоставляли пользователям возможность непосредственно взаимодействовать с компьютером при помощи терминалов сначала телетайпного типа, а в последующем и с помощью клавиатуры и дисплея. В этих системах реализовывались диалоговый или интерактивный режимы.

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

Системы реального времени применялись для управления техническими объектами и гарантировали реакцию вычислительной машины на сигналы управления в течение некоторого предельно допустимого времени.

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

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

Третье поколение (70-80 гг.) было поколением многорежимных систем, обеспечивающих пакетную обработку, разделение времени, режим реального времени и мультипроцессорный режим. Они были громоздкими, дорогостоящими монстрами. Например, фирме IBM разработка ОС/360 стоила 6 млрд. долларов, что соизмеримо с затратами американской программы NASA высадки человека на Луне. Эти системы значительно усложнили вычислительную среду, поэтому для выполнения простейшей программы необходимо было изучать сложные языки управления заданием (JCL – Job Control Language).

В третьем поколении ОС появились вытесняющая многозадачность, приоритетное планирование и выделение квот на использование ограниченных ресурсов вычислительных машин, концепция распределения времени между задачами.

В период третьего поколения начала использоваться концепция баз данных для хранения больших объёмов информации и организации распределённой обработки данных.

Четвертое поколение (с середины 70-х до 90-х гг.) развивалось в период удешевления стоимости вычислительной техники в условиях внедрения микропроцессоров, позволивших дать компьютер практически каждому пользователю. В этот период бурно развиваются вычислительные сети и средства оперативной обработки данных (on-line). Возникло понятие сетевого компьютера, способного получать все ресурсы через компьютерную сеть.

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

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

Другим важным достижением стала технология распределённой обработки данных Клиент - Сервер, которая предусматривает существование двух процессов (документов или устройств) – клиента (потребителя информации) и сервера (поставщика информации).

Существенное внимание в операционных системах четвёртого поколения уделено защите информации.

Пятое поколение(с середины 90-х гг.) операционных систем стало поколением операционных систем с широкой поддержкой беспроводной связи для мобильных устройств.

Настоящее учебное пособие предназначено для студентов профиля "Прикладная информатика" направления "Прикладная информатика" основной образовательной программы бакалавриата Российского государственного торгово-экономического университета. При написании пособия ставилась задача познакомить студентов с общими принципами построения операционных систем, управления внутренними и внешними устройствами, процессами, происходящими в операционной системе и с рядом конкретных операционных систем. При этом не предполагалось участие студентов в разработке операционных систем независимо от наличия открытого кода их модулей.

 

Контрольные вопросы:

1. Дайте определение операционной системе.

2. Какова роль операционной системы в комплексе человек–вычислительная машина?

3. Какие факторы влияют на развитие операционных систем?

4. Как осуществлялось управление вычислительной машиной операционными системами нулевого поколения?

5. Чем характерно первое поколение операционных систем?

6. Что такое пакет и пакетная обработка данных?

7. Каковы недостатки однопрограммной пакетной обработки данных?

8. Что такое мультипрограммный пакетный режим обработки данных?

9. Что такое разделение времени?

10. Что такое операционные системы реального времени?

11. Как кратко охарактеризовать операционные системы третьего поколения?

12. Что такое вытесняющая многозадачность?

13. Что такое приоритетное планирование?

14. Что такое квоты в операционных системах и что они в них определяют?

15. Что такое мультипроцессорный режим?

16. В каком поколении операционных систем стали активно поддерживаться вычислительные сети?

17. Что такое сетевой компьютер?

18. Что такое виртуальный ресурс?

19. Что такое технология Клиент – Сервер?

20. В каком поколении операционных систем одной из важнейших задач стала защита данных?

21. Какую особенность имеют операционные системы пятого (последнего на сегодняшний день) поколения?


1. ОПЕРАЦИОННАЯ СИСТЕМА: ОСНОВНЫЕ ПОНЯТИЯ

1.1. Понятие операционной системы, её роль и функции

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

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

Основными функциями операционной системы являются:

· приём от пользователя или оператора машины заданий или команд, сформулированных на соответствующем языке, и их обработка;

· загрузка в оперативную память подлежащих исполнению программ;

· распределение памяти, а в большинстве современных систем и организация виртуальной памяти;

· запуск программы на исполнение, т.е. передача ей управления;

· идентификация всех программ и данных;

· приём и исполнение различных запросов от выполняющихся программ;

· обслуживание всех операций ввода-вывода;

· обеспечение систем управления файлами и систем управления базами данных;

· обеспечение режима мультипрограммирования;

· планирование и диспетчеризация задач в соответствии с принятыми стратегией и дисциплиной обслуживания;

· организация механизм а обмена сообщениями и данными между выполняющимися программами;

· обеспечение взаимодействия связанных компьютеров (для сетевых операционных систем);

· защита от воздействия исполняемой программы на другие программы и саму операционную систему;

· проверка соответствия логина и пароля пользователя на соответствие данным учетной записи и назначение ему прав доступа (привилегий);

· удовлетворение жёстким ограничениям на время ответа в режиме реального времени (для операционных систем реального времени);

· обеспечение работы систем программирования;

· предоставление услуг на случай частичного сбоя системы.

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

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

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

Продолжая структуризацию операционной системы, внутри неё можно вы­делить множество уровней, по которым распределяются модули операционной системы. На рис. 1.1 показан пример ядра операционной системы с пятью уровнями. Самый низкий уровень Hardware является уровнем, модули которого выполняют роль посреддников между программным обеспечением и аппаратной частью вычислительной системы.

 
 

 


Рис. 1.1. Операционная система, привилегированный режим и программы пользователя

На следующем уровне находятся супервизоры, команды которых явля­ются привилегированны­ми и имеют наивысший приоритет (значимость для вычислительной машины). На следующих уровнях находятся модули управления памятью, драйверы и модули интерфейса пользователя. Операционные системы с немонолитным ядром называются слоёными системами. Они имеют более низкую эффективность по сравнению с системами с монолитным ядром.

Граница ядра показана жирной линией. Она на рисунке является и грани­цей привелигированного режима. В области непривилегированного режима находятся непривилегированные модули операционной системы и программы пользователей.

Важной составной частью операционной системы является базовая система ввода-вывода (BIOS), которая обеспечивает микропроцессору низкоуровневый доступ к устройствам ввода и вывода. Эта система помещается в постоянное запоминающее устройство и при запуске машины перегружается в оперативную память.

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

 

1.2. Операционная и программная среды

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

Все программы пользователей для получения доступа к различным ресурсам обращаются к супервизору. Обращения программ для получения системных функций и сервисов называются системными запросами. Совокупность системных вызовов и правил их применения называется интерфейсом прикладного программирования (API).

Набор функций и сервисов, предоставляемых операционной системой, а также правил обращения к ним называется операционной средой. Программа, созданная для работы в некоторой операционной системе, вряд ли будет работать в другой. Причина отказа от работы в том, что, скорее всего, у неё будет другой API. Однако программным способом можно создать в другой операционной системе необходимое подмножество программ, которые будут посредниками между переносимой программой и операционной системой и создадут промежуточный API. Такое подмножество программ называется программной средой. Именно за счёт множества программных сред операционная система Windows XP способна выполнять 16-разрядные приложения, написанные под MS DOS, Windows 3.х и первую версию OS/2.

 

1.3. Очередь и стек

Очередь и стек – это особые формы организации памяти с автоматическим определением адресов записи чтения данных. Для их организации используются ячейки памяти со смежными адресами, т.е. расположенные в запоминающем устройстве одна за другой, и специальные ячейки для хранения адресов размещаемых в них и извлекаемых из них данных (рис. 1.2). Цифрам в таблице обозначены данные, помещённые в очередь или стек, Д1 – записываемые данные, Д2 – извлекаемые данные, А1 и А2 – адреса начала и конца очереди или стека, L – длина очереди в байтах.

Очередь организуется по принципу первым "пришёл – первым ушёл", т.е. записываемые данные ставятся в конец очереди, а читаемые – в начало. По мере чтения данных происходит продвижение оставшихся данных на одну позицию вправо. Это напоминает обычную очередь на обслуживание, например, живую очередь в кассу магазина. В специальных ячейках памяти хранятся адреса начала очереди и её конца. Возможно вычисление адреса извлекаемых данных по адресу начала очереди А1 и длине очереди в байтах L.

       
   
 

 




а)

    б)

Рис. 1.2. Организация очереди (а) и стека (б)

Стек организуется по принципу "последний пришёл – первый ушёл" и напоминает детскую пирамидку – основание и перпендикулярный к нему стержень, на который надеваются кольца. Адрес А1 называется вершиной стека. При записи данных в стек адрес увеличивается на длину данных и стек наращивается в сторону увеличения адреса, т.е. длина стека растёт влево.

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

 

1.4. Машинная команда, способы адресации,
привилегированные команды

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

Существуют следующие способы адресации:

· непосредственная (данные указываются непосредственно в команде);

· прямая (в адресной части указывается адрес ячейки памяти данных);

· регистровая (адрес хранится в одном из регистров процессора);

· несколько разновидностей косвенной адресации (адрес ячейки памяти данных хранится в регистре процессора, который называется индексным или вычисляется по содержимому одного из регистров процессора).

Существуют команды, которые могут выполняться только операционной системой, но не программами пользователя. Такие команды называются привилегированными.

1.5.Система прерываний

Любая программа выполняется процессором, который минимально состоит из арифметико-логического устройства АЛУ, устройства управления и нескольких регистров – устройств внутренней памяти процессора, которые помимо хранения данных позволяют выполнять различные действия над данными без помещения их в АЛУ, например команды сдвига. Среди этих регистров есть регистры РС (один или два), которые содержат адрес выполняемой команды. Совокупность данных, содержащихся в регистрах, и ряд других служебных данных называются состоянием процесса вычислений. Более полная информация, включающая в себя и состояние процесса вычислений, называется контекстом программы. Передача управления сводится к записи в регистры, определяющие адрес команды, адреса новой команды. Вместе с программой в памяти машины существует служебная информация, которая называется дескриптором процесса.

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

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

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

В простых системах запрос на прерывание вызывает следующие действия:

· адрес возврата, т.е. адрес команды, продолжающей выполнение программы, записывается в специальный стек;

· адрес программы обрабатывающей прерывание (вектор прерывания), записывается в регистр адреса команд РС, тем самым управление передаётся программе обработки прерывания;

· выполняется программа, обрабатывающая прерывание;

· адрес возврата из стека возвращается в регистр адреса команд РС, тем самым передаётся управление ранее выполняющейся программы.

 

  а)   б)

Рис. 1.3. Схема обслуживания прерывания в простых (а) и сложных (б) системах

Программа, обрабатывающая прерывание, состоит из трёх блоков:

· отключение прерывания и сохранения в памяти контекста программы, установка временного режима работы прерываний;

· выполнение обработки прерывания;

· восстановление контекста прерванной программы, восстановление исходного режима прерываний, передача управления прерванной программе.

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

· 1_С – отключение прерываний, сохранение контекста прерванной программы в её дескрипторе, установка временного режима работы прерываний, сохранение адреса возврата;

· 2_С – определение вектора прерывания и передача ему управления посредством записи вектора прерывания в регистр РС.

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

· 1_Д – отыскивает программу, готовую к выполнению, ею может быть или прерванная программа или друга в соответствии с дисциплиной обслуживания программ;

· 2­_Д – если обслуживанию подлежит прерванная программа, то восстанавливает контекст программы, устанавливает контекст программы и переписывает адрес возврата из стека в регистр РС, передавая тем самым управление прерванной программе.

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

Таким образом, главные функции системы прерывания:

· фиксация и распознавание прерываний;

· передача управления программе обработки прерывания;

· корректное возвращение управления выполняемой программе.

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

Источниками внешних прерываний являются:

· системный таймер;

· внешние устройства ввода-вывода;

· нарушение питания;

· пульт оператора;

· другой процессор или другая вычислительная система.

К источникам внутренних прерываний относятся:

· нарушение адресации (в адресной части указан запрещённый или несуществующий адрес);

· неправильный код операции в команде;

· деление на ноль;

· переполнение или исчезновение порядка;

· средства контроля, например, контроля чётности;

· попытка выполнения привилегированной или запрещённой в данном режиме работы операционной системы команды.

Программные прерывания вызываются необходимостью временного изменения порядка выполнения программ с последующим возвратом к естественной последовательности выполнения команд программы[1]. Они предусмотрены для обеспечения переключения процессора в привилегированный режим с возможностью выполнения любых операций.

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

Вполне реален случай одновремённого возникновения двух и более прерываний. В этом случае порядок их обслуживания определяется важностью прерывания, которая называется приоритетом. Например, очевидно, что запрос прерывания от клавиатуры управления технологической машиной, требующий остановить её, важнее сигнала таймера, сообщающего об истечении какой-то выдержки времени. Порядок обслуживания прерываний в соответствии с их приоритетами называется дисциплиной обслуживания прерываний. Естественный порядок обслуживания прерываний встроен в аппаратную часть (рис. 1.4). Тем не менее, в операционной системе имеется возможность повысить приоритеты прерываний, которые заданы последовательностью бит в специальном регистре, который называют часто регистром приоритетов. Если приоритеты повышены у двух и более прерываний (т.е. они важнее других), то сначала обрабатываются в естественном порядке прерывания с повышенным приоритетом, потом опять-таки в естественном порядке прерывания с обычным приоритетом.

 

Средства контроля процессора  
Системный таймер  
Внешние устройства Магнитные диски  
Сетевое оборудование  
Терминалы  
Программные прерывания  

Рис. 1.4. Естественные приоритеты прерываний

Существует три основных дисциплины обслуживания прерываний:

· с относительными приоритетами – обслуживание не прерывается даже при наличии запроса с более высоким приоритетом;

· с абсолютным приоритетом – первыми обслуживаются прерывания с наивысшим приоритетом;

· по принципу стека – запросы помещаются в стек и первыми обслуживаются последние пришедшие в стек (правило LCFS или LIFO).

Комбинация разрешённых и запрещённых прерываний и приоритетов называется режимом прерываний.

 

 

1.6. Задачи, вычислительные процессы и ресурсы

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

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

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

Каждый вычислительный процесс сопровождает специальная информационная структура, которая называется дескриптором процесса, в который помещаются:

· идентификатор процесса PID – имя или иная характеристика, под которой процесс зарегистрирован в операционной системе;

· тип (или класс) процесса, определяющий для супервизора некоторые правила предоставления ресурса;

· приоритет предоставления ресурсов в пределах одного класса;

· переменная состояния, которая указывает состояние, в котором находится процесс (готов к работе, выполняется, ожидает устройство ввода-вывода и т.д.);

· контекст задачи, т.е. защищённую область памяти или, по крайней мере, её адрес, в которой находятся текущие значения регистров процессора;

· место в памяти или его адрес для организации обмена данными и сигналами с другими процессами;

· параметры запуска (момент времени запуска и периодичность процесса);

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

Дескриптор процесса необходим в случае временного останова процесса по каким-то причинам. В его описании упоминались состояния процесса. Наглядно состояния процесса и способы перехода из одного состояния в другое показываются на диаграмме процесса (рис. 1.5).

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

 
 

 

 


Рис. 1.5. Диаграмма состояния процесса

Активный процесс имеет три состояния:

· готовность – все ресурсы могут быть предоставлены, если процесс перейдёт в состояние выполнения;

· выполнение – все ресурсы выделены, происходит выполнение команд программы;

· ожидание – затребованные ресурсы не могут быть выделены или не завершена операция ввода-вывода.

Говоря о процессах, следует иметь в виду, что в вычислительной системе могут протекать процессы трёх видов:

· системные управляющие процессы, представляющие процессы супервизора и занимающиеся распределением ресурсов и управлением;

· системные обрабатывающие процессы, не входящие в ядро операционной системы, требующие ресурсы и получающие их от супервизора;

· процессы, порождённые задачами пользователей.

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

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

В настоящее время ресурс стал абстрактным понятием:

Ресурс – это абстрактная структура, имеющая множество атрибутов,
характеризующих способы доступа к ресурсу
и его физическое представление в системе

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

Ресурс может быть выделен задаче операционной системой в трёх случаях:

· ресурс свободен и в системе нет запросов на него от задач с более высоким приоритетом;

· текущий запрос и ранее выданные запросы позволяют совместное использование ресурса;

· ресурс используется задачей с более низким приоритетом и может быть временно у неё отобран.

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

Внешняя память тоже является разделяемым ресурсом, но её особенностью является разделение как дискового пространства, так и доступа к данным. Дисковое пространство может разделяться одновременно и попеременно, а доступ только попеременно.

Внешние устройства могут использовать механизм прямого доступа или механизм последовательного доступа. Устройства первого вида могут быть ресурсами разделяемыми параллельно (т.е. попеременно). Устройства второго вида не могут быть разделяемыми ресурсами, т.к. или потребуется выполнение противоречащих друг другу команд, или результаты выполнения двух задач будут перемешаны. Например, принтер, выводящий данные двух задач, перемешает фрагменты выводимых наборов данных, а накопитель на магнитной ленте не сможет выполнить команду записи и одновременно команду перемотки в начало ленты. Можно создать иллюзию разделения таких устройств, создав, например, виртуальный принтер для каждой задачи. Накопленные наборы данных могут быть выведены на реальный принтер один за другим, создав у пользователей иллюзию совместного использования принтера.

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

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

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

 

       
 
 
   
Непривилегированные Привилегированные Реентабельные Повторно входимые

 

 


Рис. 1.6. Классификация программных модулей.

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

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

Реентабельные модули допускают прерывание выполнения, однако сохраняют все необходимые данные в свободной памяти как динамические данные или как статические данные в секции памяти, выделенной модулю. Реентабельный модуль, как и привилегированный, состоит из трёх секций. Головная секция является привилегированным модулем и заказывает у операционной системы память для хранения всех промежуточных результатов вычислений. Тело реентабельного модуля работает в непривилегированном режиме и его выполнение может быть прервано в любой момент. После возврата из прерывания модуль продолжает работать используя сохранённые данные. Хвостовая секция также работает в привилегированном режиме и освобождает память, заказанную головной секцией.

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

 


1.7. Мультипрограммный, мультизадачный и
многопользовательский режимы работы
операционной системы.
Режим разделения времени

Появление в архитектуре вычислительных систем контроллеров внешних устройств создало возможность разгрузки центрального процессора от операций ввода-вывода. В операционных системах ранних поколений на время операций ввода-вывода центральный процессор стал простаивать, что было непростительной расточительностью для дорогого устройства. Схема такой работы показана на рис. 1.7,а. Процесс развернут во времени t, серыми прямоугольниками показана работа центрального процессора, белыми – работа устройства ввода (или вывода). Буквами А и Б обозначены задачи. Как видно из рис. 1.7,а время ТИ выполнения обеих задач равно сумме длительностей задач, причём в течение длительных отрезков времени процессор будет простаивать.

 

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

 

 
 

 

 



а)

 

б)

Рис. 1.7. Монопрограммный (а) и мультипрограммный (б) режимы работы

На рис. 1.7,б показана работа операционной системы в мультипрограм­мном режиме. В этом режиме на время операций ввода-вывода процессор переключается с решения одной задачи на решение другой. В результате время выполнения задач несколько увеличивается, но общее время ТИ выполнения обеих задач уменьшается, т.е. производительность вычислительной системы увеличивается. Мультипрограммирование является синонимом слова "многопроцессность". При этом подразумевается обособление процессов друг от друга посредством выделения индивидуальных виртуальных адресных пространств в памяти и назначения других ресурсов.

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

Поскольку процессы могли содержать разные задачи, то появился многозадачный режим, а т.к. задачи могут принадлежать разным пользователям, то появился и многопользовательский режим. В мультизадачном режиме в противовес мультипрограммному режиму обеспечивается взаимодействие между вычислениями. Для подчёркивания этой разницы были введены термины "легковесные процессы" (thin), они же потоки выполнения, нити и треды (threads). Легковесными они называются потому, что процессору не требуется для их реализации организовывать полноценную виртуальную машину. Единственно, что имеют легковесные процессы своего, это процессорное время, всё остальное у связанных легковесных процессов общее. Наличие легковесных процессов позволило организовать много поточное выполнение задач.

 

Контрольные вопросы:

1. Перечислите основные функции операционной системы?

2. Что такое привилегированные и непривилегированные команды?

3. Что такое модули операционной системы?

4. Что такое ядро операционной системы?

5. Что такое монолитное ядро?

6. Нарисуйте и поясните структуру слоёной операционной системы?

7. Что такое супервизор?

8. Что такое микроядерная операционная система?

9. Что такое BIOS, где она находится при старте вычислительной машины и где помещается во время её работы?

10. Что такое переносимый и непереносимый модуль операционной системы?

11. Что такое системный запрос?

12. Что такое интерфейс прикладного программирования?

13. Что такое операционная среда?

14. В чём причина отказа работы программы пользователя при запуске её в другой операционной системе?

15. Как обеспечить переносимость программ из одной операционной системы в другую?

16. Что такое очередь, и как она работает?

17. Как происходит адресация в стеке?

18. Что такое стек, и как он работает?

19. Можно ли прочитать данные, записанные в стек, после их считывания?

20. Что такое машинная команда? Какова её структура (формат)?

21. Что такое адресация? Какие существуют способы адресации?

22. Что такое непосредственная адресация?

23. Что такое прямая адресация?

24. Что такое регистровая адресация?

25. Что такое косвенная адресация?

26. Каким образом процессор распознаёт способ адресации операндов в машинной команде?

27. Что такое прерывание?

28. Что такое состояние процесса вычислений? Где оно хранится?

29. Что такое контекст программы?

30. Что такое дескриптор программы, и какова его структура?

31. Нарисуйте и поясните схему обслуживания прерывания в простых системах?

32. Нарисуйте и поясните схему обслуживания прерывания в сложных системах?

33. Чем отличаются схемы обслуживания прерывания в простых и сложных системах?

34. Какова структура программы, обслуживающей прерывание?

35. Что такое синхронные (внутренние), асинхронные (внешние) и программные (события) прерывания?

36. Перечислите источники внешних прерываний.

37. Перечислите источники внутренних прерываний.

38. Что такое маскирование прерываний?

39. Как решается вопрос о порядке обслуживания одновременно возникших запросов на прерывания?

40. Что такое приоритет прерываний? Как можно изменить приоритет?

41. Что такое режим прерываний? Как он устанавливается?

42. Что такое дисциплина обслуживания прерывания? Для чего необходимо это понятие?

43. Перечислите и поясните основные дисциплины обслуживания прерываний.

44. Что такое дисциплина обслуживания прерываний с относительными приоритетами?

45. Что такое дисциплина обслуживания прерываний с абсолютным приоритетом?

46. Что такое дисциплина обслуживания прерываний LCFS (FIFO)?

47. Расположите в порядке возрастания приоритета источники прерываний: системный таймер, внешние устройства, средства контроля процессора и программные прерывания.

48. Расположите в порядке возрастания приоритета источники прерываний: сетевое оборудование, терминалы, магнитные диски.

49. Что такое процесс? Приведите примеры.

50. Дайте современное определение понятия "Задача".

51. Что такое ресурс? Приведите примеры ресурсов.

52. Что такое дескриптор процесса, и какова его структура?

53. Нарисуйте и поясните диаграмму состояния процесса.

54. Что такое делимые и неделимые ресурсы? Приведите примеры.

55. Опишите три ситуации выделения ресурса задаче.

56. Что такое одновременное и параллельное (попеременное) разделение ресурсов? Приведите примеры.

57. В чём особенность оперативной памяти как разделяемого ресурса?

58. Как разделяется внешняя память? В чём особенность разделения памяти как ресурса?

59. Как решается вопрос разделения ресурсов с последовательным доступом?

60. Опишите классификацию программных модулей как разделяемых и неразделяемых ресурсов.

61. Что такое однократно используемые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

62. Что такое непривилегированные программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

63. Что такое привилегированные программные модули? Могут ли они быть разделяемыми ресурсами?

64. Почему привилегированные программные модули могут быть разделяемыми ресурсами?

65. Что такое реентабельные программные модули? Могут ли они быть разделяемыми ресурсами?

66. Почему реентабельные модули могут быть разделяемыми ресурсами?

67. Что такое повторно входимые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?

68. Что такое мультипрограммный режим работы операционной системы? Поясните временной диаграммой.

69. Почему в мультипрограммном режиме производительность вычислительной системы увеличивается? Поясните временной диаграммой.

70. Верно ли утверждение "Т.к. в мультипрограммном режиме производительность вычислительной машины выше, то и время выполнения отдельных процессов в этом режиме меньше, чем в однопрограммном"?

71. Что такое мультизадачный режим работы операционной системы?

72. Что такое легковесные процессы?

73. Что такое потоки выполнения?

74. Что такое нити?

75. Что такое треды?

76. Что такое разделение времени?

 


2. УПРАВЛЕНИЕ ПАМЯТЬЮ В ОПЕРАЦИОННЫХ СИСТЕМАХ

2.1. Память и отображения,
виртуальное адресное пространство

Оперативная память – второй по важности разделяемый ресурс вычислительной системы. От механизма её распределения зависят производительность системы и возможности программистов по созданию своих программ. При выборе механизма распределения памяти руководствуются двумя соображениями:

· выполняющаяся задача должна быть способна обратиться по любому адресу адресного пространства программы, владеющей задачей;

· желательно расположить в памяти достаточное количество активных задач с тем, чтобы уменьшить время простоя процессора из-за отсутствия команды или данных.

Для неразделяемых ресурсов создаются виртуальные двойники. Например, одному принтеру может соответствовать множество виртуальных принтеров, принимающих от задач данные с тем, чтобы впоследствии вывести их на реально существующий принтер. А для виртуальных ресурсов, также требуется память.

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

 
 

 

 


Рис. 2.1. Память и отображения

Система программирования создаёт виртуальное адресное пространство и преобразует логическое имя в виртуальный адрес. И, наконец, при загрузке программы загрузчиком, входящим в операционную систему, виртуальные адреса пересчитываются в физический адрес реальной ячейки памяти.

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

Второй вариант встречается довольно редко и предусматривает тождественность виртуального адресного пространства пространству имён программы. В этом случае сама операционная система осуществляет отображение логических имён на адресное пространство оперативной памяти. В данном случае отображение и выполнение квалификации имён, занимающей много времени, выполняется при каждом появлении нового имени[2]. Обычно используется в интерпретаторах, заменяющих операционную систему.

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

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

Рассматривая соотношение объёмов виртуальной памяти VV и физической памяти VР, можно выявить три очевидных случая:

· VV < VР – ныне практически не встречается, характерно для 16-разрядных машин и предусматривает:

§ деление оперативной памяти на разделы размером по 64 К;

§ загрузку программы в один из разделов

§ применение третьего или четвёртого варианта отображения адресов, причём для разных программ указывается свой базовый адрес, являющийся адресом раздела, в который загружается программа;

· VV = VР – часто встречающийся случай, характерный для недорогих вычислительных комплексов

· VV > VР – наиболее часто встречающийся случай, характерный даже для персональных компьютеров и, тем более, для более сложных вычислительных систем.

 

2.2. Простое непрерывное распределение
и распределение с перекрытием

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

· области, занимаемой операционной системой;

· области, занимаемой задачей;

· свободной области памяти.

Для обеспечения наибольшего объёма памяти, отводимой для задач, в области, отведённой для операционной системы должны находиться самые необходимые модули операционной системы, которые называются ядром. Остальные могут подгружаться по мере необходимости. Наличие разных внешних устройств требует выделения как специальных областей памяти под буферы[3] внешних устройств, так и памяти под их драйверы. Поэтому, объём памяти, реально занимаемый операционной системой, имеет для различных комплексов переменный размер. Максимальный размер области, занимаемой операционной системой может быть предсказан. Поэтому память, использующаяся задачами, и свободная память образуют непрерывные области. Нет необходимости жёстко привязывать виртуальные адреса программ к реальным физическим адресам на стадии программирования. Эту привязку выполняет загрузчик программы.

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

В практике встречаются случаи создания программ, общий объём модулей которой превышает размер оперативной памяти, отводимой для хранения кодов программ и данных. В этом случае программа создаётся из множества модулей. Часть их находится в памяти постоянно в течение времени работы программы. Часть модулей находится в памяти программы только во время их исполнения, а по мере завершения заменяется другими. Такие модули называются оверлейными[4]. Распределение памяти, использующее оверлейные модули, называется распределением с перекрытием.

 

2.3. Распределение памяти статическими разделами

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

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

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

Серьёзный недостаток распределения памяти на статические разделы привёл к попыткам распределения памяти на разделы с переменными границами (динамическим разделами) и к фрагментации задач.

 

2.4. Распределение памяти с динамическими разделами

Устранение фрагментации памяти возможно распределением памяти на разделы с подвижными границами. Такие разделы называются динамическими. Первой операционной системой использовавшей такой способ распределения памяти была OS MVT. В составе операционной системы в этом случае присутствует специальный планировщик памяти, который ведёт список свободных фрагментов памяти. При появлении новой задачи планировщик памяти выделяет ей фрагмент, подходящий по размеру. Это делается одним из трёх способов:

· выделяется первый подходящий раздел;

· выделяется самый подходящий раздел;

· выделяется самый неподходящий раздел, имеющий больший объём, чем задача (самый эффективный способ).

При завершении задачи освободившийся фрагмент по возможности присоединяется к смежному с ним свободному фрагменту.

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

 

2.5. Распределение памяти с фрагментацией задач

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

Сегментная организация памяти (рис. 2.2) предусматривает:

· разбиение программы на логические части, которые называются се



<== предыдущая лекция | следующая лекция ==>
Лабораторная работа № 1. | Обработка прерывания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.083 сек.