2015-07-08 7 views
2

Я разработал базовое ядро ​​в сборке/c, которое запускает базовый терминал. Я установил его, чтобы убежать от iso с grub.Файловая система Toy OS

Я хотел бы продолжить эту ОС, но без файловой системы мне кажется, что я ничего не могу сделать. После много времени в Интернете, я придумал действительно ничего, что я могу сделать, чтобы реализовать это.

Люди заявили о внедрении FAT или создании VFS, но ничего больше, ни учебники, ни ссылки нигде.

Не могли бы вы объяснить, как работает файловая система, где я могу начать/где я могу подключиться к предварительно подготовленной системе и как ее использовать?

Кроме того, у меня нет доступа к стандартным библиотекам при компиляции моих os. Я использую gcc, nasm, ld и grub-mkrescue (для образа диска). Я использую qemu для эмуляции.

EDIT, чтобы сделать меньше OT

Может кто-то описать в деталях, как работает файловая система, поэтому, когда я смотрю на источники файловых систем, которые были реализованы, как FAT, я могу понять, как применить его к моей собственной операционной системе?

EDIT - Simpler

Еще проще. Как я могу напрямую получить доступ к жесткому диску? Мое ядро ​​работает полностью в защищенном режиме, поэтому я могу отключить и записать прямо на жесткий диск. Файловая система может быть реализована с файлом вида:

имяспециальный символтекстспециальный обугленного

т.е.:

привет world.script0x00println «Привет, мир!»0x00

Где бы не нужна специальная сегментацию, вы бы просто посмотреть, пока вы не найдете имя файла и специальный символ (что-то не в строку, как «\ 0»), а затем читать, пока вы найдите второй нестроковый символ.

Будет ли доступ к жесткому диску путем включения и выхода из защищенного режима или записи драйвера жесткого диска для его реализации?

+0

Извините. Вопросы, предлагающие нам рекомендовать или находить книгу, инструмент, библиотеку программного обеспечения, учебное пособие или другие ресурсы вне сайта, не соответствуют теме переполнения стека, поскольку они, как правило, привлекают упрямые ответы и спам. Вместо этого опишите проблему и то, что было сделано до сих пор, чтобы ее решить. – Olaf

+3

Вы ничего не нашли, например, в файловой системе FAT? Что относительно [Проекта файловой системы FAT] (https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system)? Это всего лишь одна из многих ссылок, полученных при поиске в Google. Конечно, нет учебников, которые помогут вам поэтапно составить код файловой системы, но все детали, которые вам нужны о том, как разложены различные файловые системы, существуют с диаграммами и т. Д. – lurker

+2

Ответ на ваш вопрос вопрос о том, как работает файловая система, зависит от файловой системы. Есть много информации, если вы Google «как работает файловая система». Вот одна статья, которая может быть полезной для начала, поскольку она объясняет некоторые вещи в целом несколькими примерами: [Files Systems: FAT, NTFS и HFS +] (http://study.com/academy/lesson/files-systems -fat-HFS-NTFS-и-ffs.html). Вы можете найти похожие статьи, в которых рассказывается о файловых системах Linux (ext2, ext3 и т. Д.). К сожалению, вопрос по-прежнему слишком широк, чтобы быть в теме для этого форума. – lurker

ответ

7

Прежде всего, прочитайте wikipage на file systems, чтобы иметь широкий вид.

Соответствующий ресурс о разработке operating systemOSdev (но, возможно, ваш вопрос не в теме). Kernelnewbies также может помочь (объясняя, как работает Linux). OSdev имеют wikipages, объясняющие FAT & Ext2 в деталях.

Вы можете проектировать ОС без каких-либо файлов (но некоторые другие машины persistence). См. this answer. У вас могут быть постоянные процессы (см. Также около application checkpointing, garbage collection, continuations, hibernation).

Но вы должны прочитать несколько хороших книг об операционных системах (например, by Tanenbaum). Быть свободным от некоторых существующих ОС свободного программного обеспечения, например. Linux (& POSIX), поэтому читайте Advanced Linux Programming (по крайней мере, чтобы понять многие концепции и получить хорошую терминологию).

IMHO, FAT - такая уродливая и неэффективная файловая система, на которую не стоит смотреть (за исключением причин устаревания и совместимости). Ext4 (см. here) должен быть лучше & wikipage на Ext2 имеет приятное изображение.

Вы можете адаптировать некоторую библиотеку, предоставляющую файловую систему (например, libext2) вашему ядру.

Возможно, вы можете адаптировать sqlite для работы с разделом необработанного диска.

Возможно, у вас есть понятие file, которое не похоже на файлы MSDOS (или Windows) или POSIX или <stdio.h>. Например, это может быть последовательность записей фиксированного размера (например, 1 Кбайт), а не поток байтов.

Вы можете организовать свою ОС как microkernel и иметь файловые системы, заданные кодом приложения. Посмотрите на VSTa и HURD.

Нужно, конечно, драйвер диска, который извлекает/записывает блоки (4 Кбайт) с вашего диска (дисковый ввод-вывод всегда по блокам или disk sectors. У старых маленьких дисков было 512 байтов. Новые большие диски имеют 4 Кбайт , см. advanced format). Он должен быть прерван и используется DMA. Вам нужна задача scheduler. AFAIU, вы используете won't для этого BIOS (возможно, UEFI); вам нужно понять, насколько распространено оборудование (SATA & AHCI).

Вы должны опубликовать (сегодня!) вашу игрушку ОС, как free software (например, при GPLv3 + на github), чтобы получить обратные связи и взносы.

Вы можете скопировать (если лицензии совместимы) существующий код из других операционных систем free software, и вы, конечно же, изучите их исходный код, чтобы понять вещи.

Так что код какой-то планировщик заданий, обработчик page fault, virtual memory, а затем добавьте прерывистый диск IO и некоторый код файловой системы выше этого. Тогда вы начнете понимать, что ОС не может быть маленькой игрушкой .... Вы можете рассмотреть микроядро или подход exokernel.

+0

FAT является уродливым и неэффективным, но OP, очевидно, является новичком, а FAT очень прост в концепции и дизайне. Так что это может быть хорошей отправной точкой. – lurker

+0

Тогда Ext2, вероятно, лучше, и лучше объяснил –

+0

OSDev - это то место, где вы хотите перейти на ОС dev. Имеет множество статей о файловых системах. – Qix

3

Проще всего использовать существующую файловую систему с открытым исходным кодом, если условия лицензии соответствуют вашим потребностям. ELM FatFs - одна из таких библиотек, без каких-либо ограничений использования. Вам нужно только предоставить уровень интерфейса управления устройством, используя предоставленные заглушки и примеры.

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