Автор: lonesome [TSH/Digital Daemons]
Дата: 18.06.2003
Раздел: Разработка ОС
Сегодня в номере:
Сегодня мы сделаем небольшой перерыв в практических занятиях, чтобы у всех была возможность "переварить" полученную информацию. Да и практики осталось чуть-чуть - еще совсем немного и наша первая ОС увидит свет :)
Спасибо 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
> # ...
>
> * - инициализация программы и возможно подключение новых сервисов
> файловой-поддержки
> % - настройка сервисов файловой-поддержки
> # - дальнейшая работа
>
На сегодня все, уважаемые подписчики.
Как всегда, мой почтовый ящик открыт для вас: lonesome@lowlevel.ru
Также вы можете задавать интересующие вас вопросы в форуме lowlevel.ru
Предыдущие выпуски рассылки вы можете найти по этому адресу:
http://subscribe.ru/archive/comp.soft.prog.osdev
А все, исходники, опубликованые в рассылке, располагаются здесь:
http://www.lowlevel.ru/osdev/sources.htm
Всего наилучшего!
Lonesome