
    Основные особенности ОС. 

     1. Модульность.
     ════════════════
       Очевидно то, что при использовании страничного режима преобразования
     адреса, возрастают затраты времени требуемые на само преобразование 
     адреса. Сократить их можно только кешируя отдельные страницы в буфере TLB. 
     Псокольку кэш TLB не беспеределен, и составляет фиксированную величину 
     32 страницы по 4Kb для TLB команд (128Kb), и 64 страницы по 4Кб для 
     TLB данных (256Kb), то данная особенность ОС является наиболее необходимой 
     и наиболее важной. Так как совершенно очевидно что минимального размера 
     ядра можно добиться выделением всех сервисов и драйверов в отдельные 
     функциональные модули связанные с ОС унифицированным интерфейсом сообщений. 
     Кроме того данная особенность позволит вести разработку ОС нескольким 
     разработчикам совместно. 
        Разбивка на модули выглядит следющим образом:
           1. Загрузчик
           2. Пост-загрузчик
           3. Отладчик "Защищеного режима"
           4. Драйвера
           5. Ядро
              а) Планировщик задач
              б) Планировщик памяти
              с) Планировщик очереди системных сообщений
           6. Плагины (файловых систем и мултимедийных потоковых форматов)
           7. Сервисы (сетевых протоколов, сетевых служб, внутрисистемных служб)
           8. GUI

     2. Сегментированная или селекторная модель памяти
     ══════════════════════════════════════════════════
       Приемущества данной модели в локализации ошибки происходящей либо в
     результате сбоя оборудования, либо в результате ошибки программы. 
     Приоритеты не позволяют задачам и сервисам изменять или передавать 
     управление в ядро и драйвера, помимо строго заданных шлюзов в таблице
     IDT или системных вызовов функций ядра и драйверов. В свою очередь ядро
     имея наивысший приоритет может осуществлять контроль любого участка памяти
     без ограничений.
          Разбивка по приоритетам выглядит приерно следующим образом:
            Ядро          - 0
            Драйверы      - 1
            Сервисы       - 2
            Апликации     - 3
      
      3. Ядро.
      ════════
        Псокольку необходимо обеспечить прогрнозируемое время реакции на любое
      событие и минимальный размер ядра, то речь идет скорее об микроядре.
      Ядро должно обеспечивать 
        1. Переключение задач и работу с очередью задач по их приоритетам.
        2. Прием и передачу сообщений уровня "железа" к задачам и от задач
           по разделенной системной очереди сообщений для каждой задачи.
           Последнее обеспечивает бессбойное функционирование очереди, и
           снижение времени продвижения сообщения к сервисам и задчам.










 GDT                                   IDT
 (Дескрипторы)                         (Шлюзы, ловушки)


 HardwareLayer

    Interrupt Controller (Pic1 <- cascade <- Pic2)

    Timer (Pit Chanel0...Chanel3)
  
    Keyboard (loop byffer, LED)