Подтвердить что ты не робот

Как работают операционные системы?

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

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

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

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

4b9b3361

Ответ 1

Ну, ответ живет в книгах: Современные операционные системы - Андрей С. Таненбаум - очень хороший, Иллюстрация ниже.

Простейшим, но полным ядром операционной системы, подходящим для обучения или просто любопытства, является Minix. < br/" > Здесь вы можете просмотреть исходный код.

Современные операционные системы http://www.cs.vu.nl/~ast/books/mos2/big_cover.jpg

Ответ 2

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

Operating System Concepts

Концепции операционной системы

Ответ 3

Если вам действительно интересно, я бы направил вас на Linux из Scratch в качестве хорошего места, чтобы узнать все входы и выходы операционной системы и как все части подходят друг к другу. Если это больше информации, чем вы ищете, то эта статья в Википедии об операционных системах может быть хорошим началом.

Ответ 4

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

Теперь, как OS настраивает все с помощью системы? У аппаратного обеспечения также есть API. Они написаны с системным программистом.

Я видел много bare-bone OS, и это действительно абсолютное ядро. Есть много встроенных встроенных ОС, которые все они делают и ничего больше.

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

Ответ 5

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

В самом центре компьютера компьютер запускается с фиксированным адресом, что означает, что при запуске компьютера он устанавливает счетчик программ на заранее определенный адрес и только начинает выполнять машинный код.

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

Эта предопределенная последовательность (начало CPU, загрузка диска) позволяет программистам начинать добавлять все больше и больше кода на ранних этапах запуска ЦП, что со временем может в конечном итоге запустить очень сложные программы.

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

Но для простой системы, с ограниченными ресурсами, вам действительно не нужно много для "ОС" .

В качестве простого примера многие небольшие контроллеры имеют очень маленькие "ОС" , и некоторые из них просто можно рассматривать как "монитор", предлагая немного больше, чем простой доступ к последовательному порту (или терминалу или ЖК-дисплею), Разумеется, в этих условиях в большой операционной системе не так много потребностей.

Но также рассмотрим нечто вроде классической системы Форта. Здесь у вас есть система с "ОС" , которая дает вам дисковый ввод-вывод, консольный ввод-вывод, управление памятью, а также фактический язык программирования, а также ассемблер, и он вмещает менее 8 КБ памяти на 8-разрядная машина.

или старые дни CP/M с его BIOS и BDOS.

CP/M - хороший пример того, где простая ОС хорошо работает как уровень абстракции, чтобы позволить переносным программам работать на огромном наборе аппаратных средств, но даже тогда система заняла менее 8 КБ ОЗУ для запуска и запуска.

Вдали от МБ памяти, используемой современными ОС. Но, если быть справедливым, у нас есть MB памяти, и наша жизнь намного проще (в основном) и намного более функциональна из-за этого.

Написание ОС - это весело, потому что интересно, чтобы HARDWARE печатал "Hello World", перетаскивая данные 1 байт за время некоторого неясного порта ввода-вывода или набивая его на какой-то магический адрес памяти.

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

Ответ 6

В принципе... ваш компьютер может просто запустить диск, потому что:

В BIOS входит это дисковое устройство в порядке загрузки.

При загрузке BIOS сканирует все загрузочные устройства по порядку, например, флоппи-дисковод, жесткий диск и компакт-диск. Каждое устройство обращается к своему носителю и проверяет жестко закодированное местоположение (обычно это сектор на диске или компакт-диске) для отпечатка пальца, который идентифицирует носитель, и указывает местоположение для перехода на диск (или носитель), где начинаются инструкции. BIOS сообщает устройству перемещать голову (или что-то еще) в указанное место на носителе и читать большой кусок инструкций. BIOS передает эти инструкции в CPU.

Процессор выполняет эти инструкции. В вашем случае эти инструкции собираются запустить Ubuntu OS. Они также могут быть инструкциями для остановки или добавления 10 + 20 и т.д.

Как правило, ОС запускается, беря большой кусок памяти (опять же, непосредственно из ЦП, так как библиотечные команды, такие как "GlobalAlloc" и т.д., недоступны, так как они предоставлены еще не- загруженной ОС) и начинает создавать структуры для самой ОС.

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

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

Например, без ОС каждое приложение должно иметь дело с ситуацией, когда другая программа пытается распечатать, и "делать что-то", как печать в любом случае, или отменять другое задание и т.д. Вместо этого, только ОС чтобы справиться с этим, приложения просто говорят ОС "распечатать этот материал", и ОС гарантирует, что одно приложение будет печататься, а всем другим приложениям просто нужно подождать, пока первый не завершится, или пользователь отменит его.

Наименьшее количество байтов, которые должны быть ОС, на самом деле не имеет смысла, поскольку "ОС" может означать множество или очень мало функций. Если бы все, что вы хотели, было выполнить программу с компакт-диска, это было бы очень мало байт. Однако это не ОС. Задача ОС - предоставлять услуги (я называю их функциями), чтобы разрешить запуск многих других программ, а также управлять доступом к этим службам для программ. Это сложно, и чем больше общих ресурсов вы добавляете (сети, и Wi-Fi, и CD-рекордеры, и джойстики, и видео iSight, и два монитора, и т.д. И т.д.), Тем сложнее он становится.

Ответ 8

Один из самых последних проектов операционной системы, который я видел, который имеет серьезную поддержку, был проектом MS Research под названием Singularity, который полностью написан на С#.NET с нуля.

Чтобы понять, сколько работы требуется, есть 2 основных разработчика, но в любой момент времени у них есть до дюжины стажеров, и им все еще требуется два года, прежде чем они смогут даже заставить ОС до такой степени, будет загружать и отображать BMP-изображения (как они используют свои презентации). Это заняло гораздо больше работы, прежде чем они могли даже добраться до точки, где была командная строка (например, около 4yrs).

Ответ 9

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

Ответ 10

Вы можете получить книгу "Разработка и внедрение операционной системы FreeBSD" для получения очень подробного ответа. Вы можете получить его из Amazon или эта ссылка на сайт FreeBSD.org выглядит как книга, как я ее помню: текст ссылки

Ответ 11

Я не могу поверить, что это не упоминалось... но классическая книга для обзора дизайна операционной системы Операционные системы - дизайн и Реализация, написанная Andrew S Tanenbaum, создателем MINIX. Многие примеры в книге ориентированы непосредственно на MINIX.

Если вы хотите узнать немного больше, ОС Dev - отличное место для начала. Особенно вики. На этом сайте полно информации, а также разработчики, которые пишут персональные операционные системы для небольшого проекта/хобби. Это отличный учебный ресурс, так как на той же лодке, как и на OSDev, много людей, которые хотят узнать, что входит в ОС. В конце концов, вы тоже можете попробовать себя!

Ответ 12

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

Если в первые дни работы микрокомпьютеров вы можете поместить ОС в 16K ROM и жестко подключить материнскую плату, чтобы начать выполнение инструкций машинного кода в начале адресного пространства ROM. Этот процесс "начальной загрузки" затем загрузит код для драйверов для других устройств, таких как клавиатура, монитор, флоппи-дисковод и т.д., И через несколько секунд ваш компьютер будет загружен и готов к использованию.

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

Ответ 13

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

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

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

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

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

Ответ 14

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

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

Ответ 15

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

Если вы REALY хотите узнать больше об этом, я бы посоветовал прочитать книгу... о микроконвертерах, особенно о том, где вы создаете небольшую ОС в c для 8051 или т.д... или изучите сборку x86 и создайте очень маленькая "ОС загрузчика".

Ответ 17

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

Если вы заинтересованы в написании своей собственной ОС, ознакомьтесь со своим вопросом:

Как начать работу в разработке операционной системы

Ответ 18

Вы спрашиваете , как несколько байтов вы могли бы поместить на диск и все еще работать как ОС? Ответ зависит от того, что вы ожидаете от своей ОС, но самой маленькой полезной ОС, которую я знаю, в 1,7 мегабайта. Это диск Tom Root Boot, и это очень хорошая небольшая ОС с приложениями "спасения", которые подходит для одной гибкой дискеты. Еще в те дни, когда на каждой машине был флоппи-дисковод, а не у каждой машины был привод CD-ROM, я часто использовал его.

Ответ 19

Я считаю, что это похоже на твою собственную жизнь. Во-первых, вы знаете очень мало - достаточно, чтобы ладить. Это похоже на то, что предоставляет BIOS - он знает достаточно, чтобы искать диск и читать информацию. Затем вы учитесь немного больше, когда идете в начальную школу. Это похоже на загрузку загрузочного сектора в память и управление им. Затем вы переходите в среднюю школу, которая похожа на загрузку ядра ОС. Затем вы переходите в колледж (водители и другие приложения.) Конечно, это тот момент, когда вы подвержены CRASH. HE HE.

Нижняя строка - это то, что слои с большей и меньшей способностью медленно загружаются. В ОС нет ничего волшебного.

Ответ 21

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

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

Ответ 22

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

Ответ 23

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

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

Ответ 24

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

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

Начало OS - это дает основы того, что действительно нужно для ОС MAKE, как мы можем это сделать и как можно модифицировать представить открытый исходный код ОС самостоятельно.

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

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

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

Ответ 25

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

Я не могу не упомянуть серию видеороликов "Пишите свою собственную операционную систему" ​​на YouTube, так как я сделал это: -)

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