Введение в Little Operation System.


Leonardo's BIGGEST project in 1999.



ЭПИТЕТ...


Итак, здравствуйте! Звать меня можно по имени - Александр Николаевич, а можно и вообще никуда не звать ( шутка ); но чаще всего меня можно увидеть под псевдонимом "Leonardo". Родился я в маленьком городе деревенского типа под названием Щекино, примерно лет 19 назад, а точнее 16 марта 1980 года. Ныне обучаюсь в Тульском Государственном Университете на специальности "Электронные Вы числительные Машины, системы, комплексы, сети", студент гр. 220271 (2271) второго курса.
Так вот, сидим мы как-то на лекции ( ох и скучно... ), делать нечего, балду, так сказать, пинаем. Вот разговор между соседями про Windows 95 пошел. Ну пошел и пошел... Меня очень заинтересовала основная идея разговора - что мол Win'95 - MUST DIE ( и это точно ), и т.д. НО!!! Но почему-то все ей пользуются?! Вот так прикол!!! Я им говорю: "Так что ж вы ее бедную ОБ"#;ЕТЕ и ей же ползуетесь?" А они мне - ничего лучшего нету, вот и сидим под ней как в тюрьме. Почесал я затылок и ####, и подумал - вот бы свою мультизадачную ОС написать - вот было бы ништяк!!! Подумал - сказал! ( Эх, блин, зачем же я это сказал??? Я думал - прикольнусь, а Макс, чтоб его, Крентовский - давай, говорит - пиши. Пиши, пиши... ) Ну тут как всегда меня петух жареный в попу и клюнул! А что - НАПИШУ!!! Не быть мне Leonardo!!! А сейчас сижу и пишу эту маленькую паршивенькую операционную систему... ( А смешно звучит - ЛОСъ ? )
		        	Ладно, я не гордый: LOS - Leonardo's Operation System.
				Если я смогу ее написать до 2000 года -
				то ... Билл Гейтс разорится !!! :)))
ДА ПУСТЬ ЖЕ ЭТО БУДЕТ ПЕРВАЯ ВСЕМИРНОИЗВЕСТНАЯ ОПЕРАЦИОННАЯ СИСТЕМА,НЕСЛЕТАЮЩАЯ МУЛЬТИЗАДАЧКА В РЕАЛЬНОМ ВРЕМЕНИ,ВЫПУЩЕННАЯ НА НАШЕЙ КРОВНОЙ РОДИНЕ - РОССИИ !!!
Конец ЭПИТЕТА -
15:53 17.05.1999


ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ или С ЧЕМ ЭТО ЕДЯТ.


Операционная система - программа, которая управляет запуском, выполнени ем и следит за корректной работой всех программ на компьютере. Кстати я считаю, что необходимо провести главную и очень значимую грань между понятиями "ОПЕРАЦИОННАЯ СИСТЕМА" и "ОПЕРАЦИОННАЯ ОБОЛОЧКА" ( соответственно ОС и ОО ).
ОС должна представлять собой всего лишь набор программ - драйверов, упр авляющих работой всей аппаратуры и виртуальных устройств ( например - файловой системы ). Также она должна содержать в себе самый главный блок - блок контроля за работой, ошибками. А драйвера должны предоставлять более высокий уровень программирования, чем просто непосредственный доступ к устройствам.
ОО в моем понятии - это некая виртуализация, т.е. программа, производя щая интерфейс ( взаимодействие ) между человеком и ОС.
Отсюда важный вывод - ОС может быть только одна, а ОО - сколько ваша фантазия себе наштампует! А так как я собираюсь разрабатывать ОС, то про ОО я насильно забываю!!! ( Маленькое дополнение - ОС я буду писать на Assembler, а для разработки ОО он не нужен - используйте языки высокого уровня !)

Так вот, теперь только об ОПЕРАЦИОННОЙ СИСТЕМЕ.
Основная идея - ОС должна быть мультизадачной ( потом можно еще при же лании сделать ее и мультипользовательской ), неглюкавой - стабильной, т.е. не должна рушиться до самого онца - как Win'95, и по возможности - быстрой !
Понятие мультизадачности обязательно тянет за собой "Квантование време ни" и "Разделение ресурсов", "Взаимозащищенность".

    Система состоит из следующих ОСНОВНЫХ блоков:
  • Загрузочный сектор, который выполняет загрузку в память модулей блока предустановки и передает этому модулю управление. ( На этом этапе CPU в Real Mode и загрузка производится средствами BIOS )
  • Блок предустановки. Получает управление от загрузочного сектора. Его цель - загрузка в память и размещение там всех необходимых IMPLANT - драйверов, т.е. драйверов, которые загружаются при старте си стемы и не могут быть в последствии выгружены. Этот же блок параллельно выстраивает информацию о страницах, памяти и подготавливает ко входу в Protected Mode.
  • Блок инициализации - включает защищенный режим, исполняет процеду ры инициализации implant-драйверов и теста их работы и теста поддержива емых ими устройств. Исполняя тест последнего драйвера мы попадаем в его цикл ( Главный цикл ОС, а имя драйвера - bathroom ).
  • Bathroom читает файл начальной установки - там содержится информация о загрузке NEEDBY-драйверов (т.е. тех, кото рые могут быть загружены,протестированы и выгружены по ходу работы ОС ) В этом же файле находятся директивы, например: go - перемещаться по файловой системе, list - показать файлы в каталоге, run - запу стить на выполнение любой файл ( или ОО ) - эти программы будут иметь приоритет N2 - предпоследний.
    При окончании файла bathroom читает клавиатуру на наличие этих же команд - вот мы и получили главных ЦИКЛ ОС!!!
  • Блок деинициализации - последовательность этапов для выгрузки ОС нафик ( вызывается комбинацией Ctrl-Alt-Del ) и восстановления состо яния компа до загрузки ОС с возможностью загрузки иной ОС.


Для обеспечения необходимой защиты я разделяю уровни привелегии так:
Уровень
Обладатель
0
Главный драйвер - PROTOX, и все драйвера,работающие с аппаратурой.
1
Драйвера виртуальных устройств
2
Программы привелегии 2, ОО
3
Программы под управлением ОО.


Таким образом обеспечивается контроль:
Первая картиночка


Т.е. целостность ОС обеспечивается наглухо при одном условии - PROTOX никогда не будет вызывать сбой - будет выполнен великолепно, без изъянов!
    Для самого минимального старта нужны драйвера:
    • 2 in 1:
    • PROTOX - для диспетчеризации и обработки исключений
    • MONITOR - чтоб за всем подсекать
  • PIC - для контроля аппаратных прерываний
  • DMA - для контроля пересылок DMA
  • TIMER - для часиков и квантования времени
  • KEYBOARD - с чего командовать
  • VIDEO - без глаз не проживешь ( хотя бы TEXT & VGA )
  • DISKS - для работы с диском
  • FILESYSTEM - текущая (главная) файловая система
  • SWAPPER - поддержка виртуальной памяти
  • BATHROOM - командный процессор

Оригинальная версия документа - здесь