S>Статья хоть и содрана с официального руководства, но содрана некачественно!!!
вот насмешил! интеловцы очень много "интересного" узнают про адресные пространства, если почитают... А потом коллективно посмеются, не более. Статья лишь показывает, до каких бредовых идей, которые невозможно оспорить, можно дойти
S>Ты раскритиковал всех в наигрубейших ошибках, а у себя ещё более грубой не обнаружил: таблица GDT единственная в системе, а таблица LDT может быть своя для каждой задачи!!! Регистр LDTR содержит 16-ти разрядный селектор, по которому в таблице GDT находится дескриптор LDT.- в нём хранится базовый адрес таблицы LDT и её предел!!!
гениально. с таким же успехом ты можешь создать 100 таблиц GDT, перегружая регистр GDTR ты получишь свою GDT для каждой задачи. Это уже полнейший маразм. Да, чтоб ты знал — win и nix не используют LDT, также как и кучу других "аппаратных возможностей проца"
********************************************* www.k-medulla.com
Best software protection system on the market
> гениально. с таким же успехом ты можешь создать 100 таблиц GDT, > перегружая регистр GDTR ты получишь свою GDT для каждой задачи. Это уже > полнейший маразм. >
Тогда надо было на этом хоть какой-то акцент сделать!!!
> Да, чтоб ты знал — win и nix не используют LDT >
Знаю!!!
Кстати, почему?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
S>А не теряют ли они от этого? Хотя бы в производительности?
я с TSS специально проводил эксперимент такой (цикл с FFFF переключениями по TSS и по ручному сохранению в стеке). Результаты — по скорости все один в один практически (RDTSC). Иногда на несколько тактов был впереди тот или иной метод, но программный немного чаще даже. Да и если подумать — где самое тормозное место? В обращении к памяти конечно. А что при аппаратном, что при программной реализации от обращения к памяти никуда не уйдешь (регистры в TSS по волшебству не попадут). Поэтому они (ms) молодцы, что убрали всю лишнюю хрень
********************************************* www.k-medulla.com
Best software protection system on the market
> Скорее всего — для лучшей "переносимости" >
Наверное для того, чтоб не было ограничений на количество работающих задач!!!
Согласись, что даже 8191 процессов — не так уж и много, да ещё если учесть, то что самому ядру нужны дескрипторы!!!
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
А кстати, как в винде происходит переключение задач? По таймеру (IRQ0)?
И нафига Intel пичкает в свои процессоры команды и вещи, которые себя не оправдывают?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
S>А кстати, как в винде происходит переключение задач? По таймеру (IRQ0)?
конечно по таймеру. там очень сложный алгоритм, основан на приоритетности и каких-то "магических числах" т.п. я где-то читал, что алгоритм переключения задач в винде — самый сложный по запутанности из всех реализованных в ней алгоритмов
S>И нафига Intel пичкает в свои процессоры команды и вещи, которые себя не оправдывают?
это вопрос к интелу. возможно, это чисто рекламные трюки, а возможно сама ms у них заказывывала все эти фишки, а позже отказывалась по каким-то причинам, история умалчивает
********************************************* www.k-medulla.com
Best software protection system on the market
Здравствуйте, Stanky, Вы писали:
>> Скорее всего — для лучшей "переносимости" >> S>Наверное для того, чтоб не было ограничений на количество работающих задач!!! S>Согласись, что даже 8191 процессов — не так уж и много, да ещё если учесть, то что самому ядру нужны дескрипторы!!!
не соглашусь. 8191 процессов (не пойму при чем здесь правда это) достаточно, чтобы винда легла вечным сном. у меня на машине в данный момент при запущеной туче приложений типа фаеров, асек и тв-тюнеров работает 35 процессов и 310 потоков. Думаю, уже после 100 работающих процессов система начнет притормаживать, а после 200 просто ляжет и не будет реагировать даже на движение курсоров. 8000 — это из области фантастики )
********************************************* www.k-medulla.com
Best software protection system on the market
> не соглашусь. 8191 процессов (не пойму при чем здесь правда это) > достаточно, чтобы винда легла вечным сном. у меня на машине в данный > момент при запущеной туче приложений типа фаеров, асек и тв-тюнеров > работает 35 процессов и 310 потоков. Думаю, уже после 100 работающих > процессов система начнет притормаживать, а после 200 просто ляжет и не > будет реагировать даже на движение курсоров. 8000 — это из области > фантастики ) >
И чегож они тогда от LDT отказались? Неужели эффективней для каждого процесса иметь свою GDT?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
> конечно там одна GDT. Все построено на страничной модели, у каждого процесса своя таблица страниц и т.д... >
Вообще-то действительно так получается гораздо проще: всё что нам нужно, чтоб сменить адресное пространство — изменить значение в CR3, а сегментные регистры вообще не трогаются (достаточно грубо говоря)!!!
А для чего в винде ядро находится в адресном пространстве задач? Неужели абсолютно раздельные адресные пространства задач и ядра на столько бьют по скорости или ещё каким-то вещам?
Posted via RSDN NNTP Server 1.9
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
b> уже полнейший маразм. Да, чтоб ты знал — win и nix не используют b> LDT, также как и кучу других "аппаратных возможностей проца"
LDT используют. есть даже вызов modify_ldt. Обычно его вызывает Glibc.
как я понял для организации thread_area исползуется регистр gs.
причём для этих целей выделено 3 поля в GDT, а дальше всё в Ldt.
Fedora Core 2 (Glibc 2.3.4 + K 2.6.5).
с помощью set_thread_area можно создать дескриптор в gdt. появилось с ядра 2.6 (если не считать 2.5)
с помощью modify_ldt можно создать дескриптор в ldt(или удалить или ... см. man).
появилось с ядра 2.4.20