Проект №1 ОС Newinfo20ХХ Описание: Ну вот я начал заниматься разработкой ОС. В этом плане я опишу всё что я хочу реализовать в этой ОС. Это будет 32-разрядная ОС работающая в защищённом режиме с механизмом многозадачности и со страничной трансляцией. ОС использует всего 2 уровня защиты - нулевой и третий. Память делится на две части. На системный и прикладной причём для системы отводится фиксированая область в памяти и не может быть расширена во время работы, но это только для начала. Размер системной области будет от 8 Мб до 32 Мб в зависимости от объёма ОЗУ, кстати, об объёме... память поддерживается только до 1 Гб. Это ограничение введено для некоторых целей. Нету SWAP-файла. Это относительно строения ОЗУ. Ф.С. - FAT16-FAT32 Предполагается конвертация в свою Ф.С где-то во второй версии. Насчёт многозадачности. Здесь я долго думал как её реализовать. И вот придумал: 1.Все системные задачи не выгружаются из памяти и поэтому имеют минимум информации. 2.Все прикладные задачи должны будут указывать будут ли они использовать определёные участки памяти, FPU, MMX,XMM и т.д. 3.Возможность прикладной и системной задачи создавать дочерные процессы чтобы не они не мешались задачи в целом работать дальше. 4.API-функции вызываемые через INT64h. 5.к каждому приклданому процессу будет в памяти весить дополнительно на 100 Кб - 1100 кб взависимости от объёма памяти и выбора возможностей программы (32 Мб - 1024 МБ ОзУ) 5.Из тех 100 Кб - 1100 Кб будет каталог страниц. 6.События произошедшие в системе будут рассылаться тем программам, которые определили заранее какие получать события, например, если произошло прерывание от клавиатуры, то сначала проверется активная программа принимает ли она события от клавиатуры, а потом уже неактивные при этом смотрит, если при неактивном состояние задача не обрабатывает, а только при активном, то пропускает, а если наооборот, то посылает или же при активном и неактивном состаяние, если ни одна задача не обрабатывает, то система обрабатывает сама, хотя система во всяком случае система будет последеней обрабатывать это исключение.:) Но не все прерывания будут так действовать некоторые, например FPU, будет смотреть ту задачу, которая вызвала это прерывание и если в этой задачи нету такого обработчика,тоо система просто напросто смотря по исключению сама обработает, возможно будет просто сбрасывать и подаст системное сообщение об ошибке,которое невозможно обработать.Насчёт системных сообщений.Обрабатывает их сама система, но последней так как сначала обрабатывают программы, если таковы имеются, но некоторые сообщения будет сперва обрабатывать система(естественно только критические). 7.Возможность делать активные и пассивные процессы причём активный процесс может быть только один ;) 8.Также если процесс использует экран или другое устройство вывода будет использоваться отдельный для этого участок памяти, но с этим я чуть позже разберусь. :) Так это основное. Работа с жёсткими дисками тоже будет.Возможно со второй версии или даже первой :) некоторые данные при многозадачности: 32кб+6 байт+104 байт*2+512 байт(PII)+1024кб+6 байт+2 байта 0-откладка 1-into 2-Bound 3-Исключение ошибки стека 4-Ошибка плавающей точки в x87 FPU (Ошибка математики) 5-Исключение плавающей точки SIMD 6-таймер(в будущем ;)) 7-клава 8-COM 2/4 9-COM 1/3 10-LPT2 11-LPT1 12-Исключение сопроцесора 13-Контроллер винчестера HDC 14-системные сообщения 15-сообщения от других программ 16-обычная программа/резидентная программа 17-резерв 18-резерв 19-(резерв) 20-активная 21...31-резерв Индефикатор_программы смещение_TSS Флаги_сообщений смещение_данных размер_проги смещение_стека Размер_UPMM_byte 2 байта 4 байта 4 байта 4 байта 4 байта 4 байта 4 байта рассчитано на 2000 процессов (52000 байт)-данные программы 1000 Кб - данные FPU 208000 байт - данные TSS а дальше уже от возможностей 21.08.06 Изменения в размещение прог в памяти. Теперь размер каталога страниц для каждой задачи будет зависеть прямо пропорционально от размера задачи включая доп. библеотеки. :)