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

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

Хорошая статья, узнал некоторые интересные особенности архитектуры.
Спасибо. Посмотрите и другие статьи Gustavo Duarte — человек пишет о сложных вещах простым языком.
Ошибка с user\supervisor флагом — всё с точностью до наоборот. Если устанволен, то есть доступ из 3-ring, если сброшен, то доступ только с 0-ring.
Правда Ваша. Поправили.
Оригинальная 386BSD 0.0 от William Jolitz (один из первых портов BSD на i386, 1991 год) и UNIX SYSV на i386 используют именно Call Gate для вызова ядра из пользовательской программы, а конкретно — инструкцию lcall $0x7,0 (AT&T синтаксис). Не могли бы вы разъяснить, как я понимаю, это аналогично CALL FAR 0:0 но 2-й бит селектора — это использовать LDT и биты 0 и 1 -> CPL=3. Почему CALL 0:0? Почему CPL=3? Мы и так в user-mode.

Кстати, FreeBSD и Solaris >8 тоже используют int 0x80 (но сохранают и старый механизм через Call Gate).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий