Поясните пожалуйста насчет колец защиты

Тема в разделе "WASM.OS.DEVEL", создана пользователем _220, 16 апр 2007.

  1. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Pavia
    Ну 16, подумаешь 4 на 4 умножить сразу не получилось!
     
  2. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    И 16 тоже не будет. Адресное пространство для 32битного процессора не может превышать 4 ГБ. Можно адресовать физических 64 ГБ, если включить PAE, но вирутальное адресное пространство все равно будет 4 ГБ и сегментация здесь не при чем, это делается на уровне страничного преобразования.
     
  3. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Но если 4 сегмента - размер каждого - максимум 4 Гига, то почему программа не может использовать 4*4=16 Гигабайт виртуального пространства?
    Или ты имеешь ввиду что раз 32 бита используется в шине данных, то команды процессора не смогут без переназначения сегментов адресовать больше 2^32 = 4 гигабайт?
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Сегментов может быть до 8192. Каждый из них может иметь привилегии доступа от нуля до трех. База каждого сегмента описывается четырьмя байтами. Лимит -- 20 бит с граниляцией либо 0, либо четыре килобайта, что дает лимит 2^20 * 2^12 = 2^32, т.е. четыре гигабайта.

    Все это хорошо описано в третьем томе Intel Manual.
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Pavia
    Можно и больше, если сегментацию использовать... Другое дело, что в 64-разрядном режиме сегментации уже нет, а ОС надо ориентировать всё ж на будущее, а не на прошлое.

    AndreyMust19
    Потому что виртуальный (логический в терминах ИА-32) адрес, состоящий из селектора сегмента и смещения в этом сегменте, сначала преобразуется в линейный адрес, который имеет размер всего 32 разряда. Поэтому в каждый момент времени программа на ИА-32 не может адресовать больше 4 Гбайт памяти даже с помощью сегментации. Увеличить объём адресного пространства, доступного задаче, можно, но для этого размер сегментов надо уменьшать, причём программисту придётся время от времени загружать в сегментные регистры нужные селекторы, поскольку одновременно всё равно более 4 Гбайт доступно не будет.
     
  6. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    SII
    Каким образом, если речь идет о 32битном режиме? На базу сегмента выделено четыре байта, на лимит -- двадцать бит, как я уже писал. Можно, конечно, создать много сегментов с различными базами, но они либо будут пересекаться, либо в сумме дадут те же четыре гигабайта.