Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5

.pdf
Скачиваний:
86
Добавлен:
12.02.2015
Размер:
4.09 Mб
Скачать

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

совместно используемая двумя процессами.

3) Восстановление. Процесс может восстановить любые страницы, предос-

тавленные другим процессам или отображенные в ихадресном пространстве.

1.5. Управление оперативной памятью вычислительной системы

Оперативная память (оперативное запоминающее устройство, ОЗУ) —

часть памяти ЭВМ, в которую процессор может обратиться за одну операцию

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

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

память. Каждая ячейка оперативной памяти имеет свой индивидуальный ад-

рес.

Система управления оперативной памятью должна поддерживать [3]:

1.перемещение программ из одной области памяти в другую (под-

держка относительности адреса);

2.защиту одного процесса от влияния других;

3.совместное использование процессами памяти для взаимодействия

(обратная защита) – механизмы межпроцессного взаимодействия (IPC);

4.поддержка логических операций с адресацией;

5.поддержка физических операций с адресацией.

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

скольку управлением памятью занимается ОС и она же размещает процесс в

31

основной памяти, соответствующие адреса она получает автоматически. Од-

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

ния содержат адреса, указывающие на команды, которые должны быть вы-

полнены после них; команды обращения к данным – адреса байтов и слов, с

которыми они работают. ОС переводит ссылки в коде программы (логиче-

ские адлеса) в реальные физические адреса, соответствующие текущему рас-

положению процесса в основной памяти рис. 13.

Управляющая

информация процесса 00000000 h Управляющий

блок процесса

Входная точка

 

программы

Команда

Код

программа

ветвления

Увеличение адресов Ссылка

на данные

Данные

программы

Текущая вершина стека Стек

FFFFFFFF h

Рис. 13.Образ процесса в оперативной памяти Система управления памятью характеризуется :

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

как по требованию процесса, так и с использованием стратегии предвари-

тельной выборки, при которой происходит загрузка страниц кластерами [3]. 2. Стратегией размещения. При использовани сегментации все вновь загруженные сегменты должны быть размещены в доступном адресном про-

странстве.

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

32

4.Стратегией очистки. Изменённые страницы процесса должны быть записаны (сохранены) при их замещении.

5.Управление загрузкой: заключается в определении количества процес-

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

Память может быть выделена статически в момент создания процесса, либо изменяться динамически в процессе работы [3].

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

цесса, известные как страницы (pages), могут быть связны со свободными болками памяти, известными как кадры (frames) или фрэймы. Каждый кадр может содержать одну страницу процесса. В любой момент времени некото-

рые из кадров памяти используются, а некотрые свободны. ОС содержит список свободных кадров (рис.14 а).

Кадр Осн.Пам.

Кадр Осн.Пам.

Кадр Осн.Пам.

Кадр Осн.Пам. Кадр Осн.Пам. Кадр Осн.Пам.

0

 

0

A.0

0

A.0

0

A.0

0

A.0

0

A.0

1

 

1

A.1

1

A.1

1

A.1

1

A.1

1

A.1

2

 

2

A.2

2

A.2

2

A.2

2

A.2

2

A.2

3

 

3

A.3

3

A.3

3

A.3

3

A.3

3

A.3

4

 

4

 

4

B.0

4

B.0

4

 

4

D.0

5

 

5

 

5

B.1

5

B.1

5

 

5

D.1

6

 

6

 

6

B.2

6

B.2

6

 

6

D.2

7

 

7

 

7

 

7

C.0

7

C.0

7

C.0

8

 

8

 

8

 

8

C.1

8

C.1

8

C.1

9

 

9

 

9

 

9

C.2

9

C.2

9

C.2

10

 

10

 

10

 

10

C.3

10

C.3

10

C.3

11

 

11

 

11

 

11

 

11

 

11

D.3

12

 

12

 

12

 

12

 

12

 

12

D.4

13

 

13

 

13

 

13

 

13

 

13

 

14

 

14

 

14

 

14

 

14

 

14

 

 

а)

 

б)

 

в)

 

г)

 

Д)

 

е)

Рис. 14 Распределение страниц процессов по свободным кадрам:

а) 15 доступных кадров, б) загрузка процесса А, в) загрузка процесса В,

г) загрузка порцесса С, д) выгрузка процесса В, е) загрузка процесса D.

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

33

и загружает страницы процесса А в эти кадры (рис. 14 б). Затем загружается процесс В, состоящий из трех страниц, и процесс С, сотоящий из четырех страниц. После этого процесс В приостанавливается и выгружается из основ-

ной памяти. Посже наступает момент, когда все процессы в памяти оказыва-

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

щий из пяти сраниц. Но непрерывной области кадров в памяти нет и ОС ис-

пользуя таблицу сраниц процесса (она есть у каждого процесса) размещает страницы процесса D в кадрах 4,5,6,11,12 (рис. 14 е).

 

Таблица

 

Таблица

 

Таблица

 

Таблица

 

 

Список

 

страниц

 

страниц

 

страниц

 

страниц

 

 

свободных

0

процесса А

0

процесса B

0

процесса C

0

процесса D

 

 

кадров

0

-

7

4

 

 

13

1

1

1

-

1

8

1

5

 

14

2

2

2

-

2

9

2

6

 

 

 

3

3

 

 

3

10

3

11

 

 

 

 

 

 

 

 

 

4

12

 

 

 

Рис. 15. Структуры данных процессов рис. 14е

Размеры оперативной памяти персональных компьютеров сегодняшне-

го дня постоянно отстают от запросов прикладного программного обеспече-

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

Выход из этой ситуации в использовании концепции виртуальной па-

мяти. Виртуальная память — это логический ресурс, эмулирующий опера-

тивную память путем использования как физической оперативной, так и дис-

ковой памяти. Благодаря этому емкость виртуальной памяти получается больше реальной. Активный программный код должен находиться в физиче-

ской оперативной памяти, остальной же код может временно храниться в ее

«продолжении» на жестком диске. Когда управление передается фрагменту кода, хранящемуся на жестком диске, он загружается в физическую память.

Если места в ней недостаточно, это приведет к выгрузке на диск пассивного кода. Процесс загрузки и выгрузки программного кода называется свопин-

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

34

нужд системы, он не обязательно должен быть непрерывным и может нахо-

диться на сжатом диске. Виртуальная память имеет страничную организа-

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

Страничная организация памяти. Каждый процесс имеет свою соб-

ственную таблицу страниц, которая создается при загрузке всех страниц процесса в основную память. Каждая запись в таблице страниц содержит но-

мер кадра соответствующей страницы в памяти (рис.15). Поскольку в основ-

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

дой записи таблицы должен иметься бит Р, указывающий на присутствие со-

ответствующей страницы в основной памяти. Если данная страница распола-

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

 

 

Виртуальный адрес

 

 

 

 

 

 

 

 

Запись таблицы страниц

Номер страницы

 

Смещение

 

 

Р

M

Др. управляющие биты

Номер кадра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А) страничная организация

 

 

 

 

 

 

 

 

 

 

 

Запись таблицы сегментов

 

Виртуальный адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер сегмента

Смещение

 

Р

M

 

Др. упр. биты

Длина

Начальный адрес сегмента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Б) сегментация организация

 

 

Виртуальный адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Запись таблицы страниц

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер сегмента

 

Номер страницы

Смещение

 

Р

М

Др. упр. биты

Номер кадра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Запись таблицы сегментов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Др. управляющие биты

Длина

Начальный адрес сегмента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В) комбинирование страничной организации и сегментации

Рис. 15. Типичные форматы систем управления памятью

35

Другим управляющим битом в записи таблицы страниц является бит модификации — М, который указывает, было ли изменено содержимое дан-

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

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

вместного использования памяти на уровне страниц.

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

ский адрес, который представляет собой номер кадра и смещение, с исполь-

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

пользуется в качестве индекса элемента, в котором ищется соответствующий номер кадра.

Виртуальный адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

Смещение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

страницы

 

 

 

 

 

 

Номер кадра

 

Смещение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистр

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Указатель

 

 

 

 

 

 

 

 

 

 

 

 

 

на таблицу

Таблица страниц

 

 

 

 

 

 

страниц

 

 

 

 

 

+

Номер

страницы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

 

 

 

Программа

 

 

 

 

 

 

 

 

кадра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Механизм страниц

Физический адрес

Смещение от началакадра

 

страницы

 

 

 

Кадр

 

 

 

Основная память

Рис. 16. Страничная организация памяти

Затем этот номер объединяется со смещением из виртуального адреса для получения реального физического адреса интересующей нас ячейки па-

36

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

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

щейся в настоящий момент [3].

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

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

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

са TLB. Этот кэш содержит те записи таблицы страниц, которые использова-

лись последними.

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

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

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

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

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

щего сегмента в основной памяти и его длина. Та же таблица сегментов нуж-

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

37

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

указывающий, было ли изменено содержимое сегмента со времени его по-

следней загрузки в основную память (рис.15).

Основной механизм чтения слова из памяти включает преобразование логического, адреса, состоящего из номера сегмента и смещения, в физиче-

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

Номер сегмента из виртуального адреса используется в качестве индек-

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

чения физического адреса к начальному адресу сегмента добавляется смеще-

ние из виртуального адреса.

Виртуальный адрес

 

 

 

 

 

 

 

 

Таблица сегментов

Номер

Смещение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

Начальный адрес + d

сегмента

= d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Регистр

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Указатель

 

 

 

 

 

 

 

 

 

 

 

 

 

на таблицу

 

Таблица сегментов

 

 

 

 

 

 

сегментов

 

 

 

 

 

 

+

Номер

 

сегмента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Длина

Начальный

 

 

Программа

 

 

 

 

 

 

 

 

 

 

адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Механизм сегментации

Физический адрес

d

Сегмент

Основная память

Рис. 17. Сегментная организация памяти

Комбинация сегментации и страничной организации памяти.

38

Страничная организация устраняет внешнюю фрагментацию и обеспе-

чивает эффективное использование основной памяти. Поскольку перемещае-

мые в основную память и из нее блоки имеют фиксированный размер, облег-

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

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

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

мента меньше размера страницы, он занимает страницу целиком. Логический адрес в этом случае состоит из номера сегмента и смещения в нем (рис.18).

Смещение в сегменте следует рассматривать как номер страницы опре-

деленного сегмента и смещение в ней. С каждым процессом связана одна таблица сегментов и несколько (по одной на сегмент) таблиц страниц [3].

Виртуальный адрес

Номер

сегмента

Номер

страницы

Смещение

Программа

Номер Смещение кадра

Регистр

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Указатель

 

 

 

 

 

 

 

 

Таблица

на таблицу

Таблица

 

 

 

 

страниц

 

 

 

 

страниц

 

 

 

сегментов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

 

 

 

Номер

страницы

 

 

 

 

 

 

 

 

 

+

сегмента

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Физический

адрес

Смещение от начала кадра

 

страницы

 

 

 

Кадр

 

 

 

Механизм

 

Механизм

 

 

 

страничной

Основная память

 

сегментации

 

организации

 

 

Рис. 18. Трансляция адреса при сегментной и страничной организации

39

При работе определенного процесса в регистре процессора хранится начальный адрес соответствующей таблицы сегментов. Получив виртуаль-

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

та, в качестве индекса в таблице сегментов.

1.6. Общие сведения о процессах и потоках

ОС имеет объектно-ориентированную структуру и поддерживает два типа объектов, связанных с выполнением приложений: процесс и поток.

Поток – это единица работы, используемая для распределения процес-

сорного времени, которая включает контекст процесса, куда входит содержи-

мое программного счётчика и указатель вершины стека, а так же свою собст-

венную область стека для организации вызова подпрограмм и сохранения ло-

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

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

Процесс – это набор из одного или нескольких потоков, а также свя-

занных с этими потоками системными ресурсами. Под системными ресурса-

ми понимается область памяти и данные, открытые файлы и различные уст-

ройства. Процесс является владельцем ресурсов и предиставляет их своим потокам. Процесс это контейнер для потоков.

Разбивая приложение на несколько потоков программист получает все преимущества модульности приложения и возможность управления связан-

ными с приложением временными событиями.

Приложение – это набор из одного или нескольких динамически за-

гружаемых процессов.

40