Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Разработка операционных систем - для начинающих и не только!


Информационный Канал Subscribe.Ru

Разработка операционных систем

Выпуск 13 от 2003-06-09

Сегодня в номере:

Intro

Сегодня мы сделаем небольшой перерыв в практических занятиях, чтобы у всех была возможность "переварить" полученную информацию. Да и практики осталось чуть-чуть - еще совсем немного и наша первая ОС увидит свет :)

Разбор полетов и ваших писем

Спасибо uncle Bob за ценные замечания:

> 2. После того, как ядро считано в память, можно остановить двигатель
> дисковода. В файле bootsect.asm, перед прыжком на загруженный код
> (перед jmp 0x0000:0x0700) предлагаю добавить вызов функции остановки
> привода дисковода:...
> call kill_motor
> jmp 0x0000:0x0700
> ...
>
> Функция имеет следующее содержание:
>
> kill_motor:
> push dx
> push ax
> mov dx,0x3f2
> xor al,al
> out dx,al
> pop ax
> pop dx
> ret
>
> 3. В функции i_setup() предлагаю убрать последнюю инструкцию -
> asm("sti"). В установщике обработчиков прерываний init_interrupts()
> следует вызов функций i_setup и i_enable. Получается, инструкция
> asm("sti") вызывается два раза подряд.

Очень интересный вопрос задал onlyforcoderov:

> 1. многие противники новых
> осей говорят о переносимости. но можно ли сделать
> ось с эмулятором другой, уже существующей, чтобы не
> только не оттолкнуть, но и привлечь людей
> возможностью совмещения несовметимого? 2. этот
> вопрос относительно ядра и основных системных служб
> (других важных частей os? назависимо от названия):
> что если их запустить  в двойном экземпляре (если
> позволяет память) - если один упадет в даун, то
> переключить на другой и нет проблем? а то многие
> оси мрут как мухи и оживают только ресетом (про XP)

Сделать ОС с эмулятором другой конечно можно, но это очень нетривиальная задача и неизвестно, окупятся ли затраты. Возьмем к примеру Windows NT, которая совместима с POSIX P1003.1, т.е. небольшая часть программ для UNIX совместима c NT на уровне исходных кодов. Также в ней есть подсистема OS/2, которая позволяет выполнять 16-битные программы для OS/2. Использует ли кто-нибудь практике эти возможности?

С другой стороны - представьте, что Linux получил возможность выполнять программы для Windows (нормальным образом, а не через WINE). Это бы очень сильно повысило его популярность.

А уж совсем с другой стороны - архитектура Linux (который, буквально, "писался на коленках") просто не позволит внести в систему такие изменения, чтобы выполнять программы для Win32 "естественным образом". Позже мы поговорим о различных типах структурной организации ОС (о монолитных, микроядрных и экзоядерных системах). Так вот, в силу того, что все популярные ОС на сегодняшний день принадлежат к классу систем с монолитным ядром, достичь той гибкости, которая необходима для совместимости "несовместимых" систем, практически нереально.

Насчет запуска системных служб в двойном экземпляре - как правило, если система в состоянии переключиться на второй экземпляр, то она же в состоянии перед этим его запустить :) Т.е. если контроль "ушел" от ядра, то тут уже ничем не поможешь.

Идеи

Напоминаю, что любые идеи касающиеся разработки ОС, вы можете присылать по адресу: lonesome@lowlevel.ru

Идея номер 2 (Автор: Ананьин Михаил aka Smile)

> Есть идея на счет файловой системы:
>
> Возможность работы с некоторыми типами (по расширению или
> специальному флагу) файлов как с директориями, на уровне поддержки
> операционной системы.
>
> 1) Работа с архивами - просто и удобно (здесь и коментариев не надо).
> 2) Работа с мультимедиа файлами, например, есть картинка picture.jpg,
> открываем ее как директорию и видим, о чудо:
>     picture.jpg/info
>     picture.jpg/materially.img
>     picture.jpg/image8b.img
>     picture.jpg/image16b.img
>     picture.jpg/image32b.img
>
> дальше в image8b.img:
>     image8b.img/info
>     image8b.img/palette
>     image8b.img/bitmap
>
> или в image32b.img:
>
>     image32b.img/info
>     image32b.img/bitmap
>
> при этом, конечно, данные для часть файлов будут переконвертированны
> из других данных.
>
> Другие примеры:
> файлы видео будут содержать:
>    каталок звуковых дорожек и каталок кадров видео
> --------------
>
> Так единообразным способом будет возможно работать с файлами данных
> сложной структуры имеющих единую природу.
>
> --------------
> Маханизм осуществления поддержки файлов:
>
>    1) администратор устанавливает необходимые файлы поддержки
>    2) программа сообщает ОС, что данный файл она умеет посмотреть (по
>       крайней мере на столько ей это необходимо), и этим будет
>       заниматься my_fs.vfs (естественно на время работы программы и
>       возможно ее потомков).
> --------------
> пример работы, программа ALPHA - графический редактор:
>
>    *  программа ALPHA
>         | (включит поддержку данного типа файлов, монопольно
>         |  через my_opener.vfs {файлы данных о пользователях и
>         |  настройках})
>         V
>    *   ОС
>         | (ответ на запрос)
>         V
>    *  программа ALPHA
>         | (запрос на обработку файла)
>         V
>    *   ОС
>         | (передача запроса соответствующему обработчику)
>         V
>    *   my_opener.vfs
>         | (отказ в обработке или данные)
>         V
>        ОС
>         | (ответ на открытие)
>         V
>    %  программа ALPHA
>         | (запрос на поддержку данного типа файлов)
>         V
>    %   ОС
>         | (ответ на запрос)
>         V
>    %  программа ALPHA
>         | (настройка стратегии работы обработчика {например, способ
>         |  преобразования цветов})
>         V
>    %   ОС
>         | (передача данных соответствующему обработчику)
>         V
>    %  обработчик 1
>         | (передача данных следующему обработчику поддержки данного
>         |  типа файлов {ну неумеет "обработчик 1" сжимать картинки})
>         V
>        ...
>         | (передача данных следующему обработчику поддержки данного
>         |  типа файлов)
>         V
>    %   ОС
>         | (ответ на настройку)
>         V
>    %  программа ALPHA
>         |
>         V
>    #   ...
>
> * - инициализация программы и возможно подключение новых сервисов
>   файловой-поддержки
> % - настройка сервисов файловой-поддержки
> # - дальнейшая работа
>

Outro

На сегодня все, уважаемые подписчики.
Как всегда, мой почтовый ящик открыт для вас: lonesome@lowlevel.ru
Также вы можете задавать интересующие вас вопросы в форуме lowlevel.ru
Предыдущие выпуски рассылки вы можете найти по этому адресу:
http://subscribe.ru/archive/comp.soft.prog.osdev
А все, исходники, опубликованые в рассылке, располагаются здесь:
http://www.lowlevel.ru/osdev/sources.htm
Всего наилучшего!
Lonesome



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное