Rambler's
Top100

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

Автор: lonesome [TSH/Digital Daemons]
Дата: 18.06.2003
Раздел: Разработка ОС

ПРЕДЫДУЩИЙ ВЫПУСК      СЛЕДУЮЩИЙ ВЫПУСК

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

Выпуск 13 от [SUBSCRIBE issue_date]

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

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


ПРЕДЫДУЩИЙ ВЫПУСК      СЛЕДУЮЩИЙ ВЫПУСК


Rambler's Top100