2013-02-19 3 views
2

Как явный проект, я в настоящее время разрабатываю ядро, чтобы лучше понять все аспекты реальной ОС. До сих пор я решил создать плоскую физическую модель памяти с поддержкой пейджинга и основными прерываниями (клавиатура и, возможно, трекпад/мышь далее). Я думал, что шаг вперед будет заключаться в реализации файловой системы, и я увлекаюсь ext2. Я огляделся вокруг, даже на SO, но нет явного ответа, который отвечает на мои вопросы:Пользовательское ядро: реализация файловой системы

  1. Возможно ли написать драйвер для доступа к файловой системе ext2 на C или мне нужно пойти ниже?
  2. Если я планирую получить доступ к файловой системе с устройства USB, я предполагаю, что мне нужно будет сначала запустить драйвер устройства для USB. Любая помощь по этому вопросу будет принята с благодарностью.
  3. Я знаю, что код для обнаружения файловой системы уже доступен в MINIX и других ядрах, но я действительно хочу знать, хочу ли я создать обычную, хотя и простую файловую систему, как мне это сделать? Я тоже рассматриваю эту возможность.

Приносим извинения, если вопрос и данные звучат немного неосведомленно, но я все еще участвую в процессе обучения.

Спасибо :)

+1

И все это в несколько сотен символов, которые вы можете ввести в ответе поле ... The 'ext2' в одиночку драйвер в ядре Linux несколько севернее 8000 строк кода ... – twalberg

+0

Вы пишете, что вы разрабатываете ядро? Вы создаете целую операционную систему или просто ядро? – swaechter

+0

Я не совсем понимаю, что вы говорите, twalberg. Я понимаю его сложность, поэтому я даже попросил руководство по написанию и обнаружению более простой файловой системы. Albertus, пока я стараюсь не различать ОС и ядро. Я могу с уверенностью сказать, что в пользовательском пространстве ничего нет. Я не ищу явный код, но больше абстрактного кикстарта для всего процесса. – plaknas

ответ

1

Я постараюсь дать вам несколько советов/советов - четкий ответ не так прост:

  1. Файловая система ext2 написана на C только C. C - это просто язык программирования - вы можете использовать C++, простое собрание или несколько других (несколько os'dever используют D), но не «управляемый» язык и т. Д. Но важно, чтобы у вас было твердое понимание этого язык. На мой взгляд, сборка ДОЛЖНА (взгляните на планировщик в операционной системе -> сборка в сборе)

  2. Вы действительно хотите написать драйвер USB? Это не «просто» простой USB-драйвер (Layer of abstractions). Почему драйвер USB, а не дискета или драйвер компакт-диска (Поверьте мне - драйвер флоппи-диска в 32-битном защищенном режиме не так уж и трудный)?

  3. Пожалуйста, сосредоточьтесь на своем проекте. Конечно, Linux (ранние версии) и Minix имеют пример кода, но заботятся о структуре дизайна (монолитный/микроядро или гибридное ядро) - и не смешивайте его, пишите свой собственный код.

Пожалуйста, сделайте шаг за шагом. Вы написали базовую обработку IRQ, и план состоит в том, чтобы написать драйвер клавиатуры/мыши - написать драйвер клавиатуры! Не мечтайте о загрузке и выполнении файлов (Rom не был построен за один день).

Вы должны прочитать документацию, например руководства Intel или другие «книги». Очень популярный форум - osdev.org - посмотрите на wiki. Как сказал twalberg, это очень большой модуль - сосредоточьтесь на основных частях вашей операционной системы.

Я знаю, это не ответ на ваш вопрос - но важно, чтобы не идти в неправильном направлении, и мечты о фантазии UI или что-то вроде этого;)

osdev.org forum
osdev.org wiki
Intel manuals

И несколько других книг в моей книжной полке можно найти здесь (Таненбаум, Silberschatz с Питером Гальвиной - большие книги!):

Books

+0

Спасибо за ваш ответ! Для 2: USB пришел мне в голову. Я также рассматривал возможность эмуляции дискеты на USB-накопителе и запись соответствующего драйвера для него Я не мечтаю о внедрении пользовательского интерфейса любого типа, но я хотел бы получить какую-то файловую систему, работающую над ним. Или вы предлагаете заняться чуть менее сложной задачей, такой как коммуникация процесса? – plaknas

+0

Я написал дискету, но, оглянувшись, я взял «El torito». Вы можете эмулировать гибкий диск или использовать его как обычный компакт-диск с GRUB: http://wiki.osdev.org/Bootable_El-Torito_CD_with_GRUB_Legacy С GRUB и заголовком с несколькими заголовками вы можете загружать модули - посмотрите на него (возможно, для загрузки некоторых деталей) – swaechter

+0

Скажите, пожалуйста, если я нахожусь на правильном пути здесь. В настоящее время я загружаю двоичный код ядра с помощью pendrive с помощью Grub. Если я захочу приблизиться к внедрению файловой системы, первым шагом я буду обрабатывать такие системные вызовы, как open и др., Прежде чем я смогу даже его обнаружить? С другой стороны, если я могу управлять пользовательской реализацией, я могу получить ветхую файловую систему? – plaknas

Смежные вопросы