Программисты и сегментация в операционных системах

Я узнаю, что сегментация в операционных системах основана на разделении различных сегментов (для программы они могут представлять таблицу символов, исходный текст, стек...) на единицы, которые начинаются с логического адреса памяти 0. Это виртуальный адрес, который MMU (?) использует для получения реального в дополнение к смещению.

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

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

Спасибо!


person aralar    schedule 29.11.2014    source источник
comment
Python программисты и даже C++ программисты не заботятся о сегментации. Это нечто среднее между компилятором языка и ОС. Некоторых программистов на Assembly языках это волнует, и разработчики ядра ОС должны об этом знать. Сегментация — это аппаратная функция. В чем скрытая полезность вашего вопроса?   -  person xmojmr    schedule 30.11.2014
comment
Честно говоря, я не уверен. Я читал об этом, и одним из перечисленных преимуществ, помимо дополнительной простоты для компилятора, было то, что программистам было легче воспользоваться этим... например знать расположение логического адреса третьей локальной переменной в функции. В любом случае, спасибо за вашу помощь!   -  person aralar    schedule 30.11.2014


Ответы (1)


Сегментация не дает программистам никаких преимуществ. Сегментация — это кладж, разработанный для преодоления архитектурных ограничений. 16-разрядные компьютеры PDP-11 могли адресовать только 64 КБ памяти. Использование сегментации позволило программисту отображать память в адресном пространстве и из него для доступа к большему объему памяти.

Чип 8086 был ретроградным. IBM отбросила компьютерную индустрию на несколько лет назад, используя ее для ПК, а не 68000. В 8086 использовались сегменты для уменьшения размера инструкций. Вместо использования 32-битного адреса инструкции могут использовать смещение am от сегментного регистра.

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

person user3344003    schedule 30.11.2014
comment
Спасибо! А почему вы считаете сегменты мерзостью? Разве их нет сегодня на 64-битных машинах вместе с многоуровневым пейджингом? - person aralar; 30.11.2014
comment
Сегменты слишком сложны и совершенно не нужны для 32-битных и 64-битных машин. Сегменты ничего не добавляют к пейджингу. Сегменты отсутствуют в 64-битной версии Intel. - person user3344003; 30.11.2014