Comments 21
Когда есть такой скелет, тогда можно и многозадачность, на многоядерности замутить.
Пусть для начала и статическую, сколько ядер, столько и крутящихся статических задач.
Причём 640кб позволят запустить до 128 задач, при наличии 128 ядер.
Почему в sp загружается нечетное число? Всё-таки выравнивание… Может, прибавить единицу?
Не делается проверка на поддержку расширенных функций чтения через int 13h, ну да это ладно, надеемся, что на старых компьютерах не будут запускать. Хотя если даже развивать тему и сделать защищенный режим, то запускать можно хоть на 286 в теории, 386 — более вероятно. Тогда однозначно проверка нужна.
И ещё, что касается загрузки… Не лучше ли сделать загрузчик так, чтобы систему можно было запускать на компьютере, где есть и другие ОС? То есть сделать загрузочный сектор с таблицей разделов ИЛИ чтобы он учитывал смещение от начала диска (если загружать его с раздела, а не из MBR).
Спасибо за отзыва, я сейчас, можно сказать, только вникаю как работать в защищенном режиме, читаю про порты, что бы написать драйвер для клавиатуры и тд, что бы ОС можно было запускать с другими ОСями надо ставить grub и тд, это не сложно, просто grub автоматически перевожит процессор в защищенный режим, а ос нацелена на realmode
чтобы он учитывал смещение от начала диска
Тогда придётся вникать в структуру ФС. Какую ФС вы собираетесь использовать?
Тогда придётся вникать в структуру ФС. Какую ФС вы собираетесь использовать?
Тип ФС в целом тут не играет роли. Тип таблицы разделов — да, пожалуй. Я в них не силен, и предполагаю, что будет обычная таблица разделов, которая принята в DOS была.
MBR-загрузчик выбирает раздел, с которого загрузиться. Если же загрузчик более крутой (типа GRUB), обычно есть возможность выбора раздела, с которого грузиться.
В итоге запускается код из BOOT-сектора выбранного раздела, а тому просто необходимо знать, с какого сектора его раздел начинается. Поэтому BOOT-сектор раздела обычно и содержит этот самый номер сектора.
То есть у вас ось работает в режиме реальных адресов. Вы описали то, с чего начинался совремнный хрюсофт в том числе. Вы же MS DOS помните?
Но сейчас технические возможности современных процессоров позволяют использовать и защищённый режим и страничную адресацию.
Только использовать системные вызовы биос уже не получится
Рекомендую почитать http://sasm.narod.ru/index.htm
Обнаружил пару опечаток. (... Функция 17h прерывания 90h(по сути просто бертка ...) - наверное обёртка. (... сделю вторую, третью и тд части ...) - наверное сделаю. Спасибо за статью. Побольше бы таких.
BIOS проверяет...
А без BIOS?
Ставите свою микросхему со своим кодом на видеокарту. ( Или в сетевую карту). Процессор (при подаче питания) послушно выставляет на шине адреса адрес ПЗУ, считывает команды и исполняет их же.
И никто не обязан считывать некий сектор с некого HDD. А если контроллера нету просто?
Вытащите микросхему BIOS, и работайте на "голом железе". В конце-концов, BIOS тоже кто-то пишет.
так ни кто и не говорит делать так, как написанно в этой статье, в начале статьи написанно , что это мои личные наблюдения и тд)
Где это видано?
Радуйтесь, что биос есть в каждом нормально работающем компьютере.
Во первых, лишний слой совместимости вам только поможет
Во вторых, без биос вам придётся проделывать вручную инициализацию оборудования.
Если ещё оперативку не сожгёте, выставив неправильно таймауты
Здравствуйте, прочитал статью. Всегда хотел написать свою собственную OC. Был бы очень благодарен, если бы вы мне подсказали какие книги почитать, чтобы относительно быстро и безболезненно разобраться в этой теме и приступить к созданию собственной OC.
https://fasmworld.ru/uchebnik/
https://wiki.osdev.org/Expanded_Main_Page
http://www.codenet.ru/progr/dos/
это основные ресурсы из которых я брал инфу
Класс!
А почему:
mov al,NUM
mov bl,4h
mul bl
Это ж просто сдвиг влево на 2 разряда. Не?
А есть такое же, но на UEFI ? Можно, например, на основе Clover OS X посмотреть и сделать -
https://wiki.archlinux.org/title/Clover
16-битная ОС на fasm + Cи. Часть 1