Какой С++ мне нужно научиться создавать собственное ядро ОС?
Какой вид С++ (переформулировать для программирования) мне нужно научиться создавать собственное ядро ОС? (Я знаю, что мне также нужно будет учиться сбору.) 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 казалось многообещающим путем быстрого создания компонентов более высокого уровня, когда я тестировал его, давным-давно.