2008-09-24 4 views
32

Я планирую разработать операционную систему для архитектуры x86.Разработка операционной системы для архитектуры x86

  • Какие у меня языки программирования?
  • Какие типы компиляторов доступны, желательно в среде Windows?
  • Есть ли хорошие источники, которые помогут мне узнать больше о разработке операционной системы?
  • Лучше ли тестировать мою операционную систему на виртуальной машине или на физическом оборудовании?

Любые предложения?

+1

Что бы лучший язык для использования? в архитектуре X86 лучше всего выбрать язык ассемблера x86 и C! – AminM 2013-04-26 13:03:03

+1

Голосование закрывается слишком широко. См. Также: http://stackoverflow.com/questions/254149/how-do-you-write-a-basic-operating-system?rq=1u – 2015-08-15 20:23:53

ответ

1

Если вы делаете полную ОС, вам нужно будет использовать ряд языков. Я ожидал бы Ассамблеи, C и C++, по крайней мере.

Я бы использовал виртуальную машину для большей части тестирования.

+0

Зачем вам, возможно, нужны как C++, так и C? – 2008-09-24 21:37:44

+0

@ Даниэль: В то время как C отлично подходит для высокопроизводительных низкоуровневых программ около аппаратного уровня, я бы рекомендовал C++ для всех других материалов более высокого уровня. Не знаете, почему вам/не нужно/нужно C и C++. – GEOCHET 2008-09-25 00:49:22

+3

@Rich: Вам не нужно больше одного языка. Возможно, вы захотите использовать более одного. Давайте не будем путать «необходимость» с «очень хочу по уважительным причинам». – 2008-12-04 14:47:40

3

Возможно, вы захотите посмотреть XINU. это крошечная ОС для x86, которая на самом деле не используется ни для чего другого, кроме как для расчленения студентов.

-5

Если вы хотите написать ОС, вам нужно несколько человек. ОС не может писать ни одного человека. Я думаю, что лучше работать над существующими проектами OS

Это только короткий список проектов ОС. Как вы видите, есть проект для всех возможных языков.

+1

Написание ОС - это стандартный проект для студентов CS. Он занимает только семестр. – 2008-09-24 21:38:34

2

Я сделал это один раз для 386SX, который был на плате PCI. Хорошим источником того, как запустить процессор X86 в защищенном режиме, является исходный код Linux. Это всего лишь несколько инструкций сборки. После этого вы можете использовать gcc для компиляции своего C-кода. Результатом является код объекта в формате ELF. Я написал собственный компоновщик, чтобы сделать программу из кода объекта. И да, это сработало! Удачи.

5

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

Есть материалы на основах операционной системы. MIT has OpenCourseware on the subject. Прочтите Andrew Tannenbaum's Operating Systems series и посмотрите на такие вещи, как Minix.

Получить представление о том, что там есть. Начинайте возиться с вещами. Занимайте идеи и смотрите, куда они идут. Вы можете изобрести колесо, если хотите, но вы узнаете больше, опираясь на работы других.

3

Используйте ANSI C и начинайте с эмулятора. Когда вы перейдете на реальную машину, появится код ассемблера. Переключение контекста и обработка прерываний (например) легче писать на ассемблере.

Andy Tannenbaum написал хорошую книгу об ОС. Существует много других хороших.

Удачи вам!Нет ничего похожего на то, что вы написали свою собственную ОС, пусть и маленькую.

3

Также проверьте OSDev.org, у которых есть вся необходимая информация для начала работы.

41

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

https://github.com/stephenfewer/NoNameOS

Из моего опыта я могу рекомендовать следующее:

Вам будет потребность x86 ассемблер для различных частей, это неизбежно, но может быть сведено к минимуму. Довольно быстро вы получите код C, который является проверенным выбором для разработки ОС. Если у вас есть какой-то менеджер памяти, вы можете перейти на C++, если хотите (вам нужен какой-то менеджер памяти для таких вещей, как новый и удалить).

Независимо от того, какой язык вы выберете, вам все равно понадобится сборка & C, чтобы принести систему с загрузки, где BIOS оставляет вас в любой пригодной для использования форме.

В конечном счете, основной язык, который вы выберете, будет зависеть от типа ОС, который вы хотите разработать.

Моей средой разработки был порт Windows средств разработки GNU DJGPP вместе с ассемблером NASM. Для моего IDE я использовал Eclipse IBM с плагином CDT, который обеспечивает среду разработки C/C++ в Eclipse.

Для тестирования я рекомендую BOCHS, эмулятор ПК с открытым кодом x86 с открытым кодом. Это позволяет быстро загружать вашу ОС, что отлично подходит для тестирования и может быть интегрировано в eclipse, чтобы вы могли создавать и запускать свою ОС одним нажатием кнопки. Я также рекомендовал бы использовать как VMWare, так и физический ПК, так как вы можете подобрать некоторые тонкие ошибки.

P.S. Разработка ОС действительно забавная, но очень интенсивная, моя занимает большую часть 12 месяцев. Мой совет - хорошо спланировать, и ваш дизайн является ключом! enjoy :)

5

Это не имеет значения, какой язык вы выберете. Если язык Turing-complete, вы можете записать в него ОС.

Однако выразительность языка сделает некоторые виды конструкций очень легкими или очень сложными для реализации. Например, «живость» и динамизм старых операционных систем Smalltalk зависят от того, что они реализованы в Smalltalk. Вы могли бы сделать это в C тоже, но, вероятно, было бы так сложно, что вы даже не подумали бы об этом. JavaScript или Ruby OTOH, вероятно, будет отличным вариантом.

Microsoft Research's Singularity - еще один пример. Он просто не может быть реализован ничем иным, как Sing #, Spec# и C# (или подобными языками), так как большая часть архитектуры зависит от безопасности статического типа и статической проверяемости этих языков.

Следует иметь в виду: проектное пространство для ОС, реализованное на C, в значительной степени полностью изучено. Их буквально тысячи. На других языках, однако, вы можете обнаружить что-то, что никто раньше не обнаружил!В Java всего около дюжины OS, около полудюжины C#, что-то порядка двух ОС в Haskell, только один в Python и нет в Ruby или JavaScript.

Попробуйте написать ОС в Erlang или Io и посмотреть, как это влияет на ваше мышление об операционных системах!

4

В Университете штата Мэриленд есть курс ОС, который использует GeekOS. Это небольшая, широко прокомментированная ОС, предназначенная для образовательных целей, которая может быть запущена с использованием эмуляторов Bochs или QEMU.

Для примера того, как он используется в курсе, ознакомьтесь с предыдущим предложением курса в классе webpage. Там вы найдете задания, в которых вам нужно добавить различные функции для GeekOS.

Его отличный способ познакомиться с небольшой и простой ОС, которая работает на архитектуре x86.

1

Без сомнения, я хотел бы использовать Аду. Это лучший универсальный системный язык программирования, с которым я столкнулся, никого нет. Одним из примеров является то, что Ada намного лучше для указания расположения битов объектов в записи, чем C. Ada также поддерживает наложение записей на определенные ячейки памяти. C требует, чтобы вы играли с указателями, чтобы добиться такого же эффекта. Это работает, но более подвержено ошибкам. Ada также поддерживает язык для прерываний.

Другое: Безопасность. Ada по умолчанию привязывает проверочные назначения массивов, но позволяет вам отключить его, когда вам это нужно. C «по умолчанию» не требует проверки границ на массивах, поэтому вы должны делать это самостоятельно, когда захотите. Время показало, что это не по умолчанию. Вы забудете, где это необходимо. Эксперименты с переполнением буфера являются наиболее распространенным недостатком безопасности, используемым взломщиками. У них есть целые сайты, объясняющие, как их найти и использовать.

Что касается узнавания об этом, то две книги, о которых я знаю, - это XINU (Unix в обратном направлении, ничего общего с сайентологией) и Project Oberon. Первый из них был использован в курсе выпускников операционной системы, а второй был написан Никалусом Виртом, создателем Паскаля.

1

C, скорее всего, ... все основные ОС-е были написаны на C/C++ или Objective-C (Apple)

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