Вот Вам картинка, упрощенная структура ОСи WIN.
1-программа пользователя;
2-виртуальная машина;
3-отладчик;
4-операционная система;
5-ядро ОСи;
6-функции уровня пользователя(3);
7-драйверы прописанные в системе(1..2);
8-функции уровня ядра(0);
9-менеджер ресурсов, т.е. всего, что есть на материнской плате;
0-материнская плата, т.е. сам процессор, мосты, память, видео-адаптер, клавиатура, диски: HDD, FDD, SDD, Flash, LAN и остальное
Теперь просмотрим цепочку: пользователь запускает программу, ОСь нагружает менеджер ресурсов(9)- выделить новой программе память, процессорное время и прочее, под новую программу создается виртуальная машина,(2) которая будет посредником, между программой и операционкой
Если программа пользователя, к примеру хочет вывести сообщение: она вызывает MessageBox, запрос получает виртуальная машина(2), обрабатывает и передает его функции уровня пользователя(6), после этого запрос передается функции уровня ядра(8), которая запрашивает менеджер ресурсов(9), в данном случае менеджер видеоадаптера на вывод информации. С помощью менеджера ресурсов, организовывается многозадачность, т.е. распределение процессорного времени между программами.
Если программа запускается под отладчиком, под программу отладчик создает "аналог" виртуальной машины(2'), некоторые операции он эммулирует, остальные передает виртуальной машине (2) операционной системы.
Трассеры вешаются на функции уровня ядра(8), ниже им не даст опустится сама ОСь.
Для простых процессоров, типа Z80, возможно создать эммулирующие отладчики, которые будут находится между (9) и (0), из-за простоты организации кода.
Создания такого отладчика под х86, очень трудоемко как в реализации, так и в человеко-часах, из-за сложности формирования кода операции..
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.