Ex3NDR
+1.
Cначала сделаем гую.
Теперь внимание вопрос: Кто нибудь кодить собираеццо?
Кирюшык
Чего кодить то? Для начала нужно определиться с многими вещами, а уж потом только кодить.
Одного бут сектора не достаточно.
Мои пять копеек:
1. Формат файловой системы. Идея из статьи ничего, но все же нужно подумать. Могу поделиться некорыми соображениями на этот счет.
2. Необходимо разработать формат жесткого диска.
а) Нужно выделить необходимый кусок дискового пространтсва под так называемую базу ОС. Т.е. там будут записаны весь код ядра операционной системы.
б) За этим блоком необходимо расположить виртуальную таблицу, аля DWORD base, DWORD faddr. И заполнить данную таблицу базовым адресом в оперативной памяти, в которую мы загрузим код ОС с диска, а поля faddr заполнить адресами из оперативной памяти куда все яункции ядра будут загружены.
в) Далее на харде пускаем файловую таблицу. А уже за файловой таблицей, сами файлы и папки.
Плюс здесь в том, что пользователь никогда не получит доступ к коду ядра ОС, этот раздел ему просто не доступен. И при любых попытках прочитать что либо с адреса меньшего чем фаловая таблица просто возвращать ноль. Исключения будут делаться только для кода самой ОС, каким путем - нужно подумать. Но самый простой вариант это проверять адрес откуда произошло обращение к коду ядра. Если этот адрес был из таблицы адресов кода ядра, т.е. функция ядра вызвала функцию ядра, то пропускаем, если нет, то возвращаемся на адрес обращения и в AX = 0.
Конечно хард можно подключить к другому компу и спокойно прочитать все данные, но разбираться в куче байтов врядли кто-то будет, на крайний случай можно шифрануть данные самый элементарным алгоритмом, а при загрузке в оперативку расшифровывать, но это под сомнением, так как если захотят сломать, сломают.
Вот это мне кажеться базовые вещи с которыми нужно определиться наверняка, а уж потом думать про форматы исполняемых файлов)
MIGoblin
Я хотел бы запускать в одном из разделов жёсткого диска.
Я предлагаю в корне делать две директории.
fs/ - сдесь будут все носители
dev/ - сдесь будут ссылки на все устройства в которые можно будет записывать как в файл.
И ещё для начала думаю, стоит сделать тупо заглушко ГУИ без исполняемых файлов) Так легче.
Кирюшык
Да заглушку, типа гуя мы сделаем, это не сложно, но ты подумай, без кода ядра ОС нам не обойтись, потому, что элементарный вывод пикселя на экран в 256 цветной палитре хоть и не сложен относительно других режимов, но дергать все время БИОС, не совсем гут. Потому, нужен код ядра, так сказать обертки над БИОС функциями. И в программе которая будет рисовать гуй, вызывать не БИОС по инту, а например DrawPixel и т.п.
По поводу разделов:
Разделы, а вернее их форматы нужно придумывать тоже самому) и писать специальный загрузчик, т.е.
Бут сектор кидает по адресу 0с70 или как там его, код нашего загрузчика, а уж он, определяет разделы, делать гибрид между разделами ОС ХРюшки и нашей (позвольте мне ее так называть) это не совсе гут, имхо. Так что разделы пока нужно оставить, а заняться именно ОС, если она будет рабочая, добавить загрузчик по разделам, не так уж сложно, сложнее ОС сделать.....
MIGoblin
Без Си не обойдёмся думаю.
Кирюшык
Вернулся из забытия)))))
Нет, только асм, причем самый брутальный кодинг аля debug.exe. Кто знает что это такое, тот поймет ;)
Кодить бум или не бум?
ВЫ только представьте:
Впервые, на форуме ГДР разработали свою операционную систему Zuxel или как там ее!
начинай...
для начала было бы не плохо, если бы кирюшик раздал всем план...
разбил необходимый код на минимодули, а там уже каждый бы забил себе кусок который стал бы реализовывать, а так я и знать не знаю что делать...
Ну нужен загрузчик 16 битный. Потом 32/64 битный. Нуно придумать как работать с памятью, потом ГУИ, потом запускать программы. Потом файлы а далее посмотрим.
Кирюшык
Если это все серьезно,я за выходные постараюсь оный наклепать)
кому интересно http://www.cs.utah.edu/flux/oskit/index.html
несколько отрытых библиотек для разработки OS)
правда последняя версия 2002 года но все равно большая функциональность)
MIGoblin
Ну насчёт серьёзности я не уверен. Но если делать то делать! Если ты шаришь то давай сначала разберёмся на чём писать и как? А вообще пиши.))
wereIsTat
Спс за всё что кидаешь.
Я хотя в asm ещё мало разбираюсь но думаю лучше писать на fasm. Он был написан автором для создания своей OS. Кроме того на форуме можно найти специальный раздел по OS программингу)
А если чесно он мне нравится иза IDE для виндоса и примерами по программингу
wereIsTat
nasm?
fasm мне больше нравится -> http://flatassembler.net/
Тема в архиве.