Операционные системы. Макушкина Л.А - 30 стр.

UptoLike

30
Как видно, сегментное распределение памяти имеет очень много общего со
страничным распределением.
Механизмы преобразования адресов этих двух способов управления памятью
тоже весьма схожи, однако в них имеются и существенные отличия, которые
являются следствием того, что сегменты в отличие от страниц имеют
произвольный размер. Виртуальный адрес при сегментной организации памяти
может быть представлен парой (g, s), где g номер сегмента, a s смещение в
сегменте. Физический адрес получается путем сложения базового адреса сегмента,
который определяется по номеру сегмента g из таблицы сегментов и смещения s
(рисунок 13).
Рисунок 13 - Преобразование виртуального адреса при сегментной организации
памяти
В данном случае нельзя обойтись операцией конкатенации, как это делается
при страничной организации памяти. Действительно, поскольку размер страницы
равен степени двойки, следовательно, в двоичном виде он выражается числом с
несколькими нулями в младших разрядах. Страницы имеют одинаковый размер, а
значит, их начальные адреса кратны размеру страниц и выражаются также
числами с нулями в младших разрядах. Именно поэтому ОС заносит в таблицы
страниц не полные адреса, а номера физических страниц, которые совпадают со
старшими разрядами базовых адресов. Сегмент же может в общем случае
располагаться в физической памяти начиная с любого адреса, следовательно, для
определения местоположения в памяти необходимо задавать его полный
начальный физический адрес. Использование операции сложения вместо
конкатенации замедляет процедуру преобразования виртуального адреса в
физический по сравнению со страничной организацией.
Другим недостатком сегментного распределения является избыточность. При
сегментной организации единицей перемещения между памятью и диском
является сегмент, имеющий в общем случае объем больший, чем страница. Однако
во многих случаях для работы программы вовсе не требуется загружать весь
сегмент целиком, достаточно было бы одной или двух страниц. Аналогично при
отсутствии свободного места в памяти не стоит выгружать целый сегмент, когда
можно обойтись выгрузкой нескольких страниц.
   Как видно, сегментное распределение памяти имеет очень много общего со
страничным распределением.
   Механизмы преобразования адресов этих двух способов управления памятью
тоже весьма схожи, однако в них имеются и существенные отличия, которые
являются следствием того, что сегменты в отличие от страниц имеют
произвольный размер. Виртуальный адрес при сегментной организации памяти
может быть представлен парой (g, s), где g — номер сегмента, a s — смещение в
сегменте. Физический адрес получается путем сложения базового адреса сегмента,
который определяется по номеру сегмента g из таблицы сегментов и смещения s
(рисунок 13).




 Рисунок 13 - Преобразование виртуального адреса при сегментной организации
                                   памяти

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


                                     30