Модели памяти: какая предпочтительнее?

Kernel architecture questions

POLL Вы за

Total votes: 15
Плоскую модель
100%
15
Многосегментную модель
No votes
0

  • Я не в теме. Можно дайджест или ссылки на русские документы по теме?

    ..bw
  • Могу дать документацию по процессору intel 80486 по email... За сим - обращайтесь в ЛС...
  • Nameless wrote:В общем, я считаю, что правильнее использовать многомегментную модель памяти, т.к.

    1. Присутствует аппаратная поддержка подкачки
    2. Выгирыш в быстродействии за счет аппаратного контроля ссылко к памяти
    Ничего не понимаю.
    1. Это ты о чем? Какая аппоратная подкачка. Есть исключение которое происходит при отсутствии страници памяти. Но это уровень ниже чем сегментной модели(мули сигментая или флат не имеет значение).
    2. А это каким боком? Флат сегментая или мульти сегментая значение не имеет.

    Приемущества Флат. Памяити виртуальной больше. То 4ГБ на всех то 4ГБ кадаму.

    Поддерживается аппоратно. Процессор может хранить всебе только те сегменты которые загружены в регистры. А значит при загрузке другого сегмента падения скорости.
  • Подкачка
    страниц обеспечивает доступ к структурам данных, превышающим по
    размеру доступное пространство оперативной памяти, благодаря
    тому, что часть таких структур держится в оперативной памяти, а
    часть - на диске.
    Выбор модели сегментации памяти выполняется на основе требований
    надежности и быстродействия. Например, система, состоящая из
    нескольких программ, разделяющих данные в режиме реального
    времени, будет иметь наилучшие характеристики быстродействия при
    выборе модели, которая аппаратно контролирует ссылки к памяти.
    Это многосегментная модель памяти.

    В качестве другой крайности, рассмотрим систему, состоящую всего
    из одной выполняемой программы - такая система позволяет
    получить максимальный выигрыш в случае несегментированной
    "плоской" модели памяти. Отсутствие в программе "дальних"
    указателей и префиксов переопределения сегмента уменьшает размер
    кода и увеличивает его быстродействие. Также быстрее выполняются
    контекстные перключения, поскольку нет необходимости сохранять и
    восстанавливать содержимое сегментных регистров.

    Некоторые преимущества от использования сегментации также
    обеспечиваются за счет подкачки страниц. Например, разделение
    данных может выполняться за счет отображения одних и тех же
    страниц памяти в адресное пространство каждой программы.
    F воА ще, насколько я понимаю, процесор может адресовать всего 4 Гб адресного пространства... Или приходится использовать ухищрения типа оверлеев. Это относится к 32-х битным процам... 64 бит может адресовать до 16777216 Терабайт...
  • У тебя не точное представление как устроена память в x86.

    Есть два механизма управления памятью сегментный и страничный.
    Первый не исключает второго.
    Вот страничный механизм и реализует подкачку.

    Страничная модель лежит ниже сегментной. Поэтому во флат она присутствует и осуществляется точно также как и в мульти-сегментной. Так что с подкачкой нет проблем.


    Что мульти-сегментная модель, что флат функционируют одинаково.
    Есть сегменты. Не важно сколько. Дело в том что все они отображаются на адресатное пространство в 4ГБ (36 битный режим для упрощения не рассматриваем).
    Так что в этом плане флат и мульти-сегментная модель одинаковы.
    А дальше идет страничный механизм. Который и организует подкачку и возможность например, разделение
    данных может выполняться за счет отображения одних и тех же
    страниц памяти в адресное пространство каждой программы.

    Так что имея Флат модель организации памяти нам никто не запрещает воспользоваться страничным режимом для реализации всего этого.

    Преимущества мульти-сегментной модели это защитные механизмы. Сегменты можно задать права на доступ. Правда во флат это решается через другие механизмы.
  • Nameless

    Уходили, уходили от сегментированной памяти и на тебе...

    Кто это писал ?
    система, состоящая из нескольких программ, разделяющих данные в режиме реального времени, будет иметь наилучшие характеристики быстродействия при выборе модели, которая аппаратно контролирует ссылки к памяти.
    Это многосегментная модель памяти.
    Чушь полная, потому что все обращения к памяти в защищённом режиме контролируются аппаратно. По-другому просто не может быть.
    В качестве другой крайности, рассмотрим систему, состоящую всего из одной выполняемой программы - такая система позволяет
    получить максимальный выигрыш в случае несегментированной "плоской" модели памяти
    Вторая часть цитаты демонстрирует "доисторическое" понимание устройства плоской памяти. Плоская модель означает что все сегментные механизмы защиты отключены. Вся защита по привилегиям обеспечивается таблицами страниц. Страничная память даёт каждой программе непрерывное адресное пространство в 4 Gb надежно изолированное от других программ.
    Громоздкие и медленные механизмы сегментации становятся не нужны. По этой причине в АМД64 long mode защита на уровне сегментов просто отсутствует.
  • Млин... Может быть, и не прав.. Если бить не будете - поставлю виртуальное пиво :). Но несколько отступлений: Цитаты - фирма Intel в переводе на русский... Дело в том, что я сейчас практически все это дело изучаю, и изучаю именно то оборудование, которое стоит у меня и часто мне встречается... Поэтому. моя документация могла и устареть :(.
    Чушь полная, потому что все обращения к памяти в защищённом режиме контролируются аппаратно. По-другому просто не может быть.
    при отключенном механизме защиты (хотя процессор и находится в защищенном режиме) доступ к памяти аппаратно не контролируется. А во флат-модели, как я понимаю, защита и отключена...? Раз нет сегментов, следовательно - нечего защищать... Единственное - это генерация исключений при обращении кнесуществующим адресам памяти...? Просто во флат-модели защита работает на уровне страниц... А может быть это - когда отключен страничный режим.. Но, приношу свои извинения - протупил маленько...
  • Nameless

    Это на них похоже.
    Процессор разрабатывают одни люди а документацию пришут другие. Ещё и переводчики любят добавлять отсебятину.
    А в то время Интел просто сдвинулась на сегментной защите. Им показалось мало того что они нагородили и они разработали
    суперзащищённый i432. Кончилось всё полным провалом.

    >при отключенном механизме защиты (хотя процессор и находится в защищенном режиме)
    > доступ к памяти аппаратно не контролируется

    Я конечно погорячился когда писал что защита отключена. Это не так.
    Доступ к памяти контролируется всегда. Проверяется три условия: селектор не равен 0-3, смещение меньше или равно пределу сегмента, разрешение на запись в операциях записи. В случае с плоским сегментом предел равен 4Gb-1 так что услови 2 выполняется всегда. На практике у процессора RISC ядро, все команды разбиваются на микрооперации так что процессор может соптимизировать некоторые операции - если база сегмента 0 её не надо складывать со смещением, если предел 4Gb не надо проверять лимит.
    При включённой страничной адресации все проверки выполняются ещё раз.
    Проверяется присутствие страницы, право доступа к странице, право записи. Фактически доступ к памяти контролируется два раза. Только страничная память оказалась более удобным и гибким способом защиты поэтому от сложных многосегментных моделей и отказались.
  • Лично мне, прикалывает больше 0:base flat-mode, с вырублеными страницами, т.е, доступ по абсолютным адресам.. считаю эту модель более простой и близкой к 'железу', чем всё эти 'виртуальные наколки' с пейджингом, ну и DPL=0. 32-битный реальный режим, короче... круто..
  • Nameless, многосегментная модель - это понятие растяжимое. Должно ли приложение для доступа к различным участкам памяти использовать разные сегменты? Нет, т.к. это все усложняет, но не дает никаких преимуществ, потому что сейчас в отличии от эпохи 16-разрядных систем и через один сегмент можно осуществить обращение к любому участку памяти, доступной отдельной задаче. Должна ли система для каждого приложения создавать отдельные сегменты? Нет, т.к. современные системы используют механизм страничной переадресации, когда с использованием одних и тех же адресов разные приложения получают доступ к различным областям физической памяти. Должна ли система для своих собственных нужд использовать большое количество сегментов? Возможно, особенно если она состоит из множества загружаемых произвольным образом модулей, но не обязательно, если формат файлов, из которых загружаются модули, позволяет сохранить информацию для последующей релокации этих модулей в памяти. Более того, во всех описанных мной вариантах можно использовать сегментацию для защиты системной памяти, для борьбы с переполнением стека и т.п. путем изменения лимитов сегментов, но оставаясь при этом в рамках единой FLAT-адресации.

    N†OSKRNL, не использовать пейджинг нынче сложно, т.к. помимо всего прочего именно он позволяет преодолеть фрагментацию физической памяти.
  • он позволяет преодолеть фрагментацию физической памяти.
    ну наверное... только это актуально для 'больших' и геморных систем, типа Windows/Linux, в котором иногда обьём загруженого софта, так и лезет в своп, и обратно. Ну а вообще, дыры в памяти - это проблема загрузчика, распределяющего данные.
  • Who is online

    Users browsing this forum: No registered users and 4 guests