Вильям Столлингс - Операционные системы. Внутренняя структура и принципы проектирования
Название: | Операционные системы. Внутренняя структура и принципы проектирования | |
Автор: | Вильям Столлингс | |
Жанр: | Аппаратное обеспечение, компьютерное железо, Linux, Windows, ОС: теоретические вопросы, ОС: администрирование, мониторинг, диагностика | |
Изадано в серии: | неизвестно | |
Издательство: | Диалектика | |
Год издания: | 2020 | |
ISBN: | 978-5-907203-08-2 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Операционные системы. Внутренняя структура и принципы проектирования"
Аннотация к этой книге отсутствует.
Читаем онлайн "Операционные системы. Внутренняя структура и принципы проектирования". [Страница - 118]
(см" например,
Модифицированная версия системы двойников исполь
[ 118)).
зуется для распределения памяти ядром
UNIX
(подробнее об этом вы узнаете в главе
"Виртуальная память").
Исходный блок
IM
IМбайт
Заnрос 100 Кбайт 1 А= 128К
1
1 28К
256К
512К
Заnрос 240Кбайт 1 А= 128К
1
128К
В= 256К
512К
Заnрос 64 Кбайт 1 А= l 28K
lc= 64кl 64К 1
В = 256К
5 1 2К
Заnрос 256 Кбайт 1 А= l 28K
lc•64KI64К 1
В= 256К
D = 256К
256К
1
256К
D = 256K
256К
ic= 64кl 64К 1
256К
0=256К
256К
Заnрое 75 Кбайт 1 Е = 128К iс · 64к/ 64К /
256К
D=256K
256К
256К
D=256K
256 К
О = 256К
256К
Освобождение В 1 А= 128К lc = 64кl 64К
Освобождение А 1
Освобождение С
1
Освобождение Е
1
128К
Е= 128К
1
128К
5 1 2К
Освобождение О
lM
Рис.
7.6.
Пример системы двойников
8,
ГЛАВА 7. УПРАВЛЕНИЕ ПАМЯТЬЮ
414
IM
512К
256К
128К
64К
256К
Q
Лист для выделенного
блока
Рис.
7. 7.
Q
256К
D = 256K
Лист для невыделенного
блока
@ Внутренн_ий узел, не
ЯВЛЯЮЩИИСЯ листом
Представление системы двойников в виде бинарного дерева
Перемещение
Перед тем как мы рассмотрим способы, с помощью которых можно избежать недо
статков распределения, следует до конца разобраться в вопросах, связанных с разме
щением процессов в памяти. При использовании фиксированной схемы распределения,
показанной на рис.
7.3,
а, можно ожидать, что процесс всегда будет назначаться одному
и тому же разделу памяти. Это означает, что какой бы раздел ни был выбран для нового
процесса, для размещения этого процесса после выгрузки и последующей загрузки в
память всегда будет использоваться именно этот раздел. В данном случае можно исполь
зовать простейший загрузчик, описанный в приложении к данной главе: при загрузке
процесса все относительные ссылки в коде замещаются абсолютными адресами памяти,
определенными на основе базового адреса загруженного процесса.
Если размеры разделов равны (см. рис.
для разделов разного размера (см. рис.
7.2) и существует единая очередь процессов
7.3, 6), процесс по ходу работы может занимать
разные разделы. При первом создании образа процесса он загружается в некоторый раз
дел памяти; позже, после того как он был выгружен из памяти и вновь загружен, про
цесс может оказаться в другом разделе (не в том, в котором размещался в последний
раз). Та же ситуация возможна и при динамическом распределении. Так, на рис.
и
7.4,
з процесс
2
7.4,
в
занимает при размещении в памяти различные места. Кроме того,
при выполнении уплотнения процессы также перемещаются в основной памяти. Таким
образом, расположение команд и данных, к которым обращается процесс, не является
7.2. РАСПРЕДЕЛЕНИЕ ПАМЯТИ
415
фиксированным и изменяется всякий раз при выгрузке и загрузке (или перемещении)
процесса. Для решения этой проблемы следует различать типы адресов. Логический
адрес представляет собой ссылку на ячейку памяти, не зависящую от текущего располо
жения данных в памяти; перед тем как получить доступ к этой ячейке памяти, необходи
мо транслировать логический адрес в физический. Относительный адрес представляет
собой частный случай логического адреса, когда адрес определяется положением отно
сительно некоторой известной точки (обычно
-
начала программы). Физический адрес
(известный также как абсолютный) представляет собой действительное расположение
интересующей нас ячейки основной памяти.
Программа, которая использует относительные адреса в памяти, загружается с по
мощью динамической загрузки времени выполнения (см. приложение к данной главе).
Обычно все ссылки на память в загруженном процессе даны относительно начала этой
программы. Таким образом, для корректной работы программы требуется аппаратный
механизм, который транслировал бы относительные адреса в физические в процессе вы
полнения команды, которая обращается к памяти.
На рис.
7.8
показан обычно используемый способ трансляции адреса. Когда процесс
переходит в состояние выполнения, в специальный регистр процессора, иногда называ
емый базовым, загружается начальный адрес процесса в основной памяти. Кроме --">
Модифицированная версия системы двойников исполь
[ 118)).
зуется для распределения памяти ядром
UNIX
(подробнее об этом вы узнаете в главе
"Виртуальная память").
Исходный блок
IM
IМбайт
Заnрос 100 Кбайт 1 А= 128К
1
1 28К
256К
512К
Заnрос 240Кбайт 1 А= 128К
1
128К
В= 256К
512К
Заnрос 64 Кбайт 1 А= l 28K
lc= 64кl 64К 1
В = 256К
5 1 2К
Заnрос 256 Кбайт 1 А= l 28K
lc•64KI64К 1
В= 256К
D = 256К
256К
1
256К
D = 256K
256К
ic= 64кl 64К 1
256К
0=256К
256К
Заnрое 75 Кбайт 1 Е = 128К iс · 64к/ 64К /
256К
D=256K
256К
256К
D=256K
256 К
О = 256К
256К
Освобождение В 1 А= 128К lc = 64кl 64К
Освобождение А 1
Освобождение С
1
Освобождение Е
1
128К
Е= 128К
1
128К
5 1 2К
Освобождение О
lM
Рис.
7.6.
Пример системы двойников
8,
ГЛАВА 7. УПРАВЛЕНИЕ ПАМЯТЬЮ
414
IM
512К
256К
128К
64К
256К
Q
Лист для выделенного
блока
Рис.
7. 7.
Q
256К
D = 256K
Лист для невыделенного
блока
@ Внутренн_ий узел, не
ЯВЛЯЮЩИИСЯ листом
Представление системы двойников в виде бинарного дерева
Перемещение
Перед тем как мы рассмотрим способы, с помощью которых можно избежать недо
статков распределения, следует до конца разобраться в вопросах, связанных с разме
щением процессов в памяти. При использовании фиксированной схемы распределения,
показанной на рис.
7.3,
а, можно ожидать, что процесс всегда будет назначаться одному
и тому же разделу памяти. Это означает, что какой бы раздел ни был выбран для нового
процесса, для размещения этого процесса после выгрузки и последующей загрузки в
память всегда будет использоваться именно этот раздел. В данном случае можно исполь
зовать простейший загрузчик, описанный в приложении к данной главе: при загрузке
процесса все относительные ссылки в коде замещаются абсолютными адресами памяти,
определенными на основе базового адреса загруженного процесса.
Если размеры разделов равны (см. рис.
для разделов разного размера (см. рис.
7.2) и существует единая очередь процессов
7.3, 6), процесс по ходу работы может занимать
разные разделы. При первом создании образа процесса он загружается в некоторый раз
дел памяти; позже, после того как он был выгружен из памяти и вновь загружен, про
цесс может оказаться в другом разделе (не в том, в котором размещался в последний
раз). Та же ситуация возможна и при динамическом распределении. Так, на рис.
и
7.4,
з процесс
2
7.4,
в
занимает при размещении в памяти различные места. Кроме того,
при выполнении уплотнения процессы также перемещаются в основной памяти. Таким
образом, расположение команд и данных, к которым обращается процесс, не является
7.2. РАСПРЕДЕЛЕНИЕ ПАМЯТИ
415
фиксированным и изменяется всякий раз при выгрузке и загрузке (или перемещении)
процесса. Для решения этой проблемы следует различать типы адресов. Логический
адрес представляет собой ссылку на ячейку памяти, не зависящую от текущего располо
жения данных в памяти; перед тем как получить доступ к этой ячейке памяти, необходи
мо транслировать логический адрес в физический. Относительный адрес представляет
собой частный случай логического адреса, когда адрес определяется положением отно
сительно некоторой известной точки (обычно
-
начала программы). Физический адрес
(известный также как абсолютный) представляет собой действительное расположение
интересующей нас ячейки основной памяти.
Программа, которая использует относительные адреса в памяти, загружается с по
мощью динамической загрузки времени выполнения (см. приложение к данной главе).
Обычно все ссылки на память в загруженном процессе даны относительно начала этой
программы. Таким образом, для корректной работы программы требуется аппаратный
механизм, который транслировал бы относительные адреса в физические в процессе вы
полнения команды, которая обращается к памяти.
На рис.
7.8
показан обычно используемый способ трансляции адреса. Когда процесс
переходит в состояние выполнения, в специальный регистр процессора, иногда называ
емый базовым, загружается начальный адрес процесса в основной памяти. Кроме --">
Книги схожие с «Операционные системы. Внутренняя структура и принципы проектирования» по жанру, серии, автору или названию:
Стивен Ф Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с... Жанр: Аппаратное обеспечение, компьютерное железо Год издания: 2007 |
И. В. Антошина, Ю. Т. Котов - Микропроцессоры и микропроцессорные системы (аналитический обзор) Жанр: Аппаратное обеспечение, компьютерное железо Год издания: 2005 |