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

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

IA-16 — это что именно имеется ввиду?
ограничение адресации ОЗУ в 320Кб

В 8086 было 20 адресных линий (до 1 мб), в 80286 — 24 (до 16мб). 320Кб не было ни у кого.

При всем уважении к работе, хотелось бы больше прочитать про «почему вы выбрали такие решения»? Почему именно такие дескрипторы в GDT? Где IDT? Как вы определяете размер памяти (ну где стек размещать)? Ну и т.д.

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

Листинги хорошие, а статья - не знаю, т.к. статьи нет.

Вот написали вы про недостатки "IA-16", точнее про недостатки реального режима работы процессора. И дальше отрывок из Википедии. Извините за такой вопрос, но почему там отрывок про GDT, а не ВУРС, к примеру? Представьте, что вашу статью, соверненно неожиданно, читает человек, который не знает, что такое GDT и зачем нужны дескрипторы.

Вернемся к написанию статьи:

Итак, реальный режим плохой, есть более удобный вариант - защищенный. В нем память адресуется линейно, все 4ГБ адресов, помещающихся в регистр x86 процессора. Но за годы работы в реальном режиме уже выяснили, что адресовать физическую память напрямую очень неудобно (как минимум, возникает вопрос загрузки в неё нескольких процессов так, чтобы они не конфликтовали), небезопасно (процессы могут нарушать память друг друга), да и вообще памяти может быть меньше 4ГБ и было бы удобно назначать разным участкам виртуальной памяти разные права (Read, Write, Execute или ничего). Поэтому придумали страничную адресацию и виртуальную память.

Каждый процесс имеет свои виртуальные 4ГБ, а процессор соотносит виртуальный адрес с реальным, проверяя, заодно, права на запрошенную операцию. Для этого виртуальная память делится на страницы. Страница - как сегмент, но она может начинаться в произвольном месте физической памяти, иметь произвольный размер, настройки доступа и предназначение. Описание страницы, по-английски - "дескриптор" содержит все эти свойства. А список всех страниц, соответственно, будет называться таблицей дескрипторов. Почему таблицей? Потому, что для доступа к разным страницам можно будет просто указать номер дескриптора нужной страницы в сегментном регистре (теперь это "селектор").

Было бы удобно иметь глобальную таблицу десткрипотов, одну на всю систему, для доступа к разделяемым библиотекам и для целей ядра системы, и откальные - по одной на каждый поток/процесс. Называются они, соответственно, Global Descriptor Table и Local Descriptor Table.

И дальше можно писать про GDT, но ради бога, не расшифровку аббревиатуры с Википедии, а что-нибудь интересное или имеющее практическую пользу.

Спасибо за замечание! Просто делалась статья "на коленке", так что возможны недочеты. Думаю, вы не будете против, что отрывок из вашего комментария попадет в статью слово-в-слово?

Без проблем.

3. Отсутствие некоторых возможностей. Думаю, и здесь можно понять, что IA-32 лучше чем х86-16 как архитектура.

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

Анекдот

Спрашивает грузин у армянина:

— Кто лучше, грузины или армяне?

— Армяне.

— А чем лучше?

— Чем грузины.

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

Интересная идея в 2022, я помню в 2010 хотел сделать свою ОС с экзоядром, барышнями и преферансом (ник кстати тоже оттуда) - и уже тогда всё это было немножко не на острие прогресса так сказать. Вам конечно желаю успехов и настойчивости!

Спасибо большое :)

Все хотели, а больше всех хотел Густ Каксис, программист из Литвы

https://habr.com/ru/post/160427/

А лучше всего все его потуги характеризует эта фраза, взята с его же странички

Hidden text

Huston we have a problem.

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

Публикации

Истории