Какой С++ мне нужно научиться создавать собственное ядро ​​ОС?

Какой вид С++ (переформулировать для программирования) мне нужно научиться создавать собственное ядро ​​ОС? (Я знаю, что мне также нужно будет учиться сбору.) EDIT *** Подобно прерываниям, клавиатурный драйвер, получающий вход. ***

Хорошо, все, что я сделал на самом деле 3 основных ОС и хотел бы поделиться им.

Здесь вы идете. http://bcsy.hostzi.com/BytOS.zip

Компиляция на linux

Ответы

Ответ 2

У меня есть друг, который написал ядро ​​ОС в С++:

http://sourceforge.net/projects/ekp/

Так что это определенно возможно. (Некоторые из комментариев выше говорят, что это невозможно. Неверно.)

Возможно, вы даже захотите украсть его bootstrapping и build code, так что вы можете просто погрузиться в начните реализацию "забавного материала".

Ответ 3

Учитывая ваш выбор сегодня, нет абсолютно никаких оснований для "создания" ОС. Изучайте язык очень хорошо и очень комфортно работайте с Windows или версией Linux. C или С++ - это замечательно.

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

Ответ 4

Я рекомендую вам посмотреть OSDev wiki. Это фантастический источник информации о программировании ОС на многих языках, включая С++.

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

Наконец, ознакомьтесь с форумами OSDev, там много пользователей от новичков до опытных. Они обычно более чем рады помочь людям (пока они показывают, что они попробовали, прежде чем спросить: -P)

Ответ 5

Есть только один вид, который должен помочь сузить его. Начнем с изучения руководств по архитектуре процессора. Intel бесплатно доступна . Получение документации для BIOS будет сложной задачей.

Ответ 6

просмотрите nanoos, его проект ОС на С++!

В ответ на ваш вопрос:

Операционная система (обычно сокращенно до OS или O/S) является интерфейс между оборудованием и Приложения; он отвечает за управления и координации деятельности и ограниченные ресурсы компьютера. операционная система выступает в качестве хоста для приложения, выполняемые на машина. Поэтому вам нужно изучить биты на С++, которые позволяют вашей программе (ОС) взаимодействовать с оборудованием, на котором он будет работать.

Затем он должен выйти за рамки взаимодействия с оборудованием и предоставить пользователю возможность.

Для этого вернитесь еще раз и посмотрите, что делается в nanoos в качестве отправной точки (для изучения С++ потребностей того, что повлечет за собой создание ОС на С++)

Особенности, найденные в nanoos:

  • Время выполнения С++

  • 32-битный защищенный режим Менеджер памяти

  • Обнаружение ЦП, обнаружение памяти и IDE обнаружение жесткого диска

  • Считывание жесткого диска IDE

В принципе, чтобы написать Операционная система, просто проверьте, что должна делать ОС (или что это такое)

Если бы я должен был написать ОС, прежде чем рассматривать язык, я постараюсь понять, что такое ОС, это отличная книга: Разработка операционных систем и Реализация.

alt text http://ecx.images-amazon.com/images/I/3125C47MR4L._SL500_AA180_.jpg

Прочитайте. Удачи.

Ответ 7

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

Хорошие ресурсы:

Ответ 8

По ряду технических причин Linux не запрограммирован ни на каком языке, кроме C. По различным политическим причинам несколько других os'es программируются на С++.

Если вы хотите узнать о ядрах программирования, операционная система/микроядро Minix специально разработана для изучения дизайна операционной системы. Он маленький и минимальный. Он также запрограммирован в C.

Ответ 9

Я предлагаю взглянуть на nachos (не совсем полностью эвристическая операционная система). Это учебная ОС, которую мы использовали для курса операционной системы в колледже.

Ответ 10

Newos - хорошее ядро ​​С++. Так что eCos и L4, Newos - это микроядро бывшим разработчиком BeOS. L4 также представляет собой микроядро, известное своей невероятно быстрой передачей сообщений. И eCos является монолитным ядром.

Ответ 11

Все. Это не тривиальная задача, вам нужно узнать большинство аспектов языка, я бы рекомендовал искать программирование ядра. По внешнему виду я искал логические теории и парадигмы для языков программирования, прежде чем встраиваться в синтаксис. Есть аппаратные уровни и просто так много вам нужно будет учиться намного больше, чем от ответа, который вы собираетесь получить на этом сайте или путем поиска в google.

Удачи!

Ответ 12

Я бы не рекомендовал использовать С++ при создании монолитного ядра, периода. Однако, если вы рассматриваете проект на микроядрах, вы можете писать серверы (сеть, консоль, fs, vfs и т.д.) На С++, сохраняя само ядро ​​с помощью C/inline asm.

И снова, если вы просто собираетесь на x86, это не имеет значения.

Каковы цели разработки вашей ОС?

Ответ 13

Отправляйте список рассылки linux kernel FAQ для общих вопросов (которые относятся к любой разработке ядра) и не обескураживают этот пункт.

Ответ 14

Единственная ОС любого значительного размера, которую я знаю о том, что была запрограммирована на С++ до "голого металла", - это ОС OS/400 OS/400 (после v3r6).

Там ничего особенного, что мешает вам делать какую-либо ОС на С++ - особенно, когда вы помните, что ваниль C "почти" действительно С++ в любом случае. То, что становится интересным, делает new/delete на самых низких уровнях, потому что вам нужно гарантировать отсутствие утечек и т.д. Это приводит к необходимости повторной реализации функций new.

Я помог сделать v3r6, но прошло около 13 лет, и я не помню волосатых деталей. Я не знаю о каких-либо публикациях, но если вы действительно заинтересованы, попробуйте написать Marshall Cline в http://www.parashift.com. p >

(Augh. "delete" vice "free".)

Ответ 15

Глядя на L4Ka:: Pistachio, ядро ​​Haiku или Symbian EKA2 может быть хорошей идеей, если вас интересуют примеры "реальных" ядер на С++, которые использовались в качестве основы сложных, загруженных операционных систем.

Я нашел, что последнее хорошо структурировано и состоит из очень краткого и читаемого кода, но другие могут не согласиться. Однако на данный момент его трудно получить и построить (поскольку в настоящее время веб-сайты Symbian Foundation не работают в автономном режиме), хотя копия отображается в Google Code.

В стороне, я обнаружил, что L4Ka:: Pistachio является одним из самых простых в построении ядер, но настройка и реализация компонентов более высокого уровня - это еще один способ - хотя Genode казалось многообещающим путем быстрого создания компонентов более высокого уровня, когда я тестировал его, давным-давно.