Как операционные системы "сделаны"? - PullRequest
46 голосов
/ 31 декабря 2008

Создание ОС выглядит как массивный проект. Как кто-нибудь еще может начать?

Например, когда я вставляю Ubuntu в мой привод, как мой компьютер может просто запустить it? (Я думаю, это то, что я действительно хотел бы знать.)

Или, если взглянуть на это с другой стороны, какое наименьшее количество байтов может быть на диске и все же «работать» как ОС?

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

Ответы [ 25 ]

2 голосов
/ 31 декабря 2008

В принципе, существует множество аргументов о том, что на самом деле является ОС . Если вы все согласились с тем, что конкретно представляет собой ОС (это только ядро? Все, что работает в режиме ядра; является ли оболочка частью ОС; является ли часть ОС X? Является ли веб-браузер частью ОС?), Ваш вопрос? ответили! В противном случае, нет конкретного ответа на ваш вопрос.

1 голос
/ 31 декабря 2008

О, это весело. Я сделал все это в тот или иной момент и был там на протяжении большей части эволюции.

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

Этот кусок кода обычно загружает что-то еще, но это не обязательно: вы можете написать программу, которая должна работать на голом металле. Такая программа делает что-то полезное само по себе.

Реальная операционная система больше и имеет больше частей. вам нужно загрузить программы, поместить их в память и запустить их; вам нужно предоставить код для запуска устройств ввода-вывода; когда он становится больше, вам нужно управлять памятью.

Если вы действительно хотите узнать, как это работает, найдите книги Дину Комера по Xinu и книгу Энди Tannenbaum по операционной системе Minix .

1 голос
/ 31 декабря 2008

операционная система (ОС) - это уровень программного обеспечения, который управляет оборудованием. Чем проще аппаратное обеспечение, тем проще ОС и наоборот; -)

Если на заре появились микрокомпьютеры, вы могли бы установить ОС в 16К ПЗУ и жестко подключить материнскую плату, чтобы начать выполнять инструкции машинного кода в начале адресного пространства ПЗУ. Этот процесс начальной загрузки затем загрузит код драйверов для других устройств, таких как клавиатура, монитор, дисковод гибких дисков и т. Д., И в течение нескольких секунд ваша машина будет загружена и готова к использованию.

В наше время ... тот же принцип, но все более и более сложное оборудование; -)

1 голос
/ 31 декабря 2008

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

Что делает компьютер, когда его запуск сильно зависит (может быть, очевидно?) От конструкции ЦП и других «низкоуровневых вещей»; поэтому трудно предугадать, что ваш компьютер делает при загрузке.

0 голосов
/ 15 декабря 2016

Во-первых, чтение, чтение и чтение о том, что такое ОС; тогда каковы виды использования / типы / характер / цели / потребности / различных ОС. Некоторые из ссылок следующие: Новичку понравятся эти ссылки:

Современная ОС - это дает представление об общей ОС.

Запуск ОС - это дает основы того, что на самом деле нужно, чтобы СДЕЛАТЬ ОС, как мы можем это сделать и как можно изменить существующий открытый код ОС самостоятельно.

Wiki OS - Дает представление о различных ОС, используемых в разных областях и их использовании (Объекты / особенности ОС.)

Давайте посмотрим, в общем, что ОС содержит (не сложный Linux или Windows)

ОС нужен процессор, а для выгрузки в него кода вам нужен bootloader. ОС должна иметь цели для полного выполнения, и эти цели должны быть определены в оболочке, которая называется Kernel Внутри у вас может быть scheduling time и ISR's (зависит от цели и ОС, которые вам нужно сделать)

0 голосов
/ 13 марта 2017

Разработка ОС сложна. Есть несколько сайтов, таких как osdev или lowlevel.eu (немецкий), посвященных этой теме. Есть также некоторые книги, о которых уже упоминали другие.

Не могу помочь, но также ссылаюсь на серию видео «Напиши свою собственную операционную систему» ​​на YouTube, так как я тот, кто сделал это: -)

См. https://www.youtube.com/playlist?list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M

0 голосов
/ 08 октября 2009

На самом деле, некоторые люди посещают 4-летний колледж, чтобы получить общее представление об этом.

0 голосов
/ 02 мая 2014

По своей сути ОС предельно проста. Вот руководство для начинающих, ЧТО делают успешные ОС: 1. Управляйте процессором с помощью планировщика, который решает, какой процесс (запущенный экземпляр программы) планировать. 2. Управляйте памятью, чтобы решить, какие процессы используют ее для хранения инструкций (кода) и данных (переменных). 3. Управляйте интерфейсами ввода / вывода, такими как дисководы, сигналы тревоги, клавиатура, мышь. Теперь требования выше 3 порождают потребность в процессах для взаимодействия (а не борьбы!), Взаимодействия с внешним миром, помощи приложениям в выполнении того, что они хотят. Чтобы глубже понять, КАК это происходит, прочитайте книгу о динозаврах:)

Таким образом, вы можете сделать ОС настолько маленькой, насколько захотите, при условии, что вам удастся обработать все аппаратные ресурсы. При загрузке BIOS сообщает ЦПУ начать чтение загрузчика (который загружает первую функцию ОС, которая находится по фиксированному адресу в памяти - что-то вроде main () небольшой программы на Си). Затем это создает функции, процессы и потоки и запускает большой взрыв!

0 голосов
/ 31 декабря 2008

Ну, у вас есть что-то, связывающее запуск чипа с «биосом», а затем с ОС, что обычно является очень сложной задачей, выполняемой многими службами кода.

Если вы ДЕЙСТВИТЕЛЬНО хотите узнать об этом больше, я бы рекомендовал почитать книгу ... о микроконтроллерах, особенно о том, где вы создаете небольшую ОС на c для 8051 или тому подобное ... или изучаете какую-то сборку x86 и создаете очень маленький "загрузчик ОС".

0 голосов
/ 18 марта 2009

Еще одна очень маленькая операционная система, которая умещается на одном диске, - это QNX (когда я последний раз смотрел на нее давным-давно, вся ОС с интерфейсом графического интерфейса, веб-браузером, доступом к диску и встроенным веб-сервером умещалась на одной дисковод).

С тех пор я не слишком много слышал об этом, но это операционная система реального времени, поэтому она разработана для очень быстрой работы.

...