Средства разработки OS: совет необходим

Таким образом, я получил новый компьютер для Рождества, и оно шло с предварительно установленным Windows 8. Теперь я испытал Более чем достаточно затруднений, заставив его управлять и Linux Ubuntu и W8 на том же самом двигателе. Наличие 2 операционных систем единственного жесткого диска требует, чтобы двигатель был разделен так, чтобы 2 OS не находились в противоречии друг с другом. Теперь есть программа, вызвал Мини-Волшебника Инструмента Разделения , который управляет внутренним Windows 8 (и есть подобная программа для Linux, названного gparted), который позволяет вам созданному, и измените размеры разделов жесткого диска, пока вы не переписываете операционную систему, которую вы в настоящее время используете.

Короче говоря: Я желаю написать свою очень собственную мини-операционную систему, которая должна использоваться исключительно для контроля за ботинком и управления жестким диском. Таким образом, как только я получаю его письменный, отлаженный и собранный в исполняемый код, я помещу его на карту памяти USB, от которой я могу загрузить в меню BIOS и затем непосредственно настроить разделы жесткого диска и даже отформатировать свой жесткий диск при необходимости. Я вполне удивлен, что у BIOS нет пользовательских вариантов выполнения его самостоятельно.

Таким образом, мой вопрос: я могу сделать это исключительно использование инструментов C/C++? Или у меня должен быть код встроенного ассемблерного кода? Или, возможно, напишите модуль ассемблерного кода, который используется в программе C++. Вполне уверенный, что Мини-Волшебник Инструмента Разделения не открытый исходный код (ни один не Windows). Никогда письменный и OS прежде, таким образом, я - n00b к этому, но желающий и способный занять время, чтобы изучить, как он сделан.

2
nl ja de
osdev.org и вам будет нужно собрание.
добавлено автор user529758, источник

1 ответы

Я могу сделать это исключительно использование инструментов C/C++? Или у меня должен быть код встроенного ассемблерного кода?

Вам будет нужно некоторое собрание а не действующий вид. Ваш собранный код C/C++ ожидает, что число вещи будет настроено и уже формироваться (например, 32-битный защищенный режим центрального процессора, стека, значений различных регистров центрального процессора, драйверов устройств, перерывов, диспетчера памяти C/C++, и т.д.), в то время как BIOS просто загружает один сектор 512 байтов длиной от диска и передает контроль ему, ничего не настраивая, с центральным процессором, все еще находящимся в 16-битном способе.

Так, необходимо было бы написать некоторый ассемблерный код:

  • загружает больше материала от диска, вы не предполагаете, что все впишется в 512 байтов, не так ли?
  • выключатель центральный процессор в 32-битный защищенный режим
  • повторно формирует контроллер прерываний, таким образом, перерывы не наносят на карту на те же самые векторы прерывания как исключения защищенного режима (хорошо, эта крошечная часть может быть сделана в C)
  • пишет обработчики исключений
  • пишет обработчиков прерываний для основного материала как таймер и клавиатура (если разработано тщательно, вы, возможно, только должны сделать небольшую часть этого на собрании, и остальные могут быть сделаны в C)

И затем необходимо будет написать 32-битные драйверы для устройства ввода-вывода для всего остального, так как после выключателя вы не можете использовать BIOS. Альтернативно, вы могли осуществить виртуальные 8086 машин (использующий виртуальные 8086 способов), чтобы делегировать этот материал назад к BIOS, и это не тривиальная вещь также. Большая часть из этого может быть сделана в C, но некоторое знание или использование ассемблерного кода все еще будут необходимы.

Необходимо будет также повторно осуществить некоторые части стандартной библиотеки C (C++), так malloc() /, новый , putch() , getchar() , fopen() , , время() и так далее использует ПЧЕЛУ низкого уровня вместо Windows или Linux'.

Подготовьтесь жечь несколько лет, чтобы не получить ни от чего и отсутствия знаний и опыта к чему-то работу.

И да, можно действительно начать изучать материал в osdev.org. Также есть некоторые полезные телеконференции: аккомпанемент lang.asm.x86 и alt.os.development.

1
добавлено