Как стать автором
Обновить

Комментарии 14

Странно, я когда Intel Reference Manual читал в Университете, то там как раз приводилась модель, основанная на сегментации и трансляции страниц. В этой связи очень странно выглядит утверждение:

Наиболее распространенная модель адресации памяти - плоская, когда у каждого элемента памяти есть глобальный адрес.

Вроде как в рамках самой распространенной архитектуры все не так.

x86 - хорошо известная, но не единственная архитектура с сегментной адресацией. Эта статья была задумана с целью немного рассказать про Plessey System 250 и Intel iAPX 432.

по топику меньшая половина статьи. Ну как-то не очень с названием связь.

Вроде как в рамках самой распространенной архитектуры все не так.

С точки зрения прикладного программиста - всё именно так.

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

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

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

Сейчас самой распространенной архитектурой стала amd64

Сейчас самая распространенная архитектура -- это ARM (сурс), рынок мобильных устройств передаёт привет.

Да, но там сегментная адресация не поддерживается.

В превью статьи написано про гигабайт адресуемой памяти, а в статье про мегабайт.

Где-то тут баг.

Хмм, это было в черновике, я просто уже забыл, что такой объем памяти бывет, но вовремя заметил и исправил. Конечно, там мегабайт.

Как-то реверсил старые x86 утилиты попутно переписывая их на C в BorlandС 3.1. Но возня с этими farmalloc и farcalloc настолько меня утомила, что установил DJGPP с плоской моделью памяти - и процесс пошел гораздо приятнее.

Можно было историю начать с Intel 8080 и Zilog Z80. Архитектура Intel 8086 является развитием 8080.

Там не было поддержки серментной адресации. Хотя был i86-совместимый процессор Nec V20, поторый позволял запускать код i80 в отдельном сегменте...

Да, но безсегментный (плоский) формат COM напрямую перенесён в DOS из предшественника. А этот формат, как мы помним, был весьма популярен. Кроме того, 8080 поддерживал работу стека в отдельном пространстве памяти.

Я не помню у 8080 или Z80 возможности использования внешнего стека. Более того, это выглядит странно, поскольку усложняет шину памяти без большой пользы, разделить код и данные было бы полезнее.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории