Как создать собственную операционную систему на базе ядра Linux

Обновлено: 01.07.2024

Немногие программисты когда-либо пытались создать операционную систему, и многие из тех, кто пытался это сделать, так и не создали работающую систему.

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

Нужен веб-хостинг?

Если вы запускаете новый сайт или просто ищете новый веб-хостинг, обратитесь к одному из наших лучших хостинг-провайдеров:

Блюхост

SiteGround

GreenGeeks

Что такое операционная система?

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

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

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

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

Краткая история операционных систем

Первая операционная система была создана компанией General Motors в 1956 году для работы на одном мейнфрейме IBM. Другие владельцы мейнфреймов IBM последовали этому примеру и создали свои собственные операционные системы.

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

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

Однако IBM была не единственным поставщиком, создававшим операционные системы в то время. Control Data Corporation, Computer Sciences Corporation, Burroughs Corporation, GE, Digital Equipment Corporation и Xerox также выпустили операционные системы для мэйнфреймов в 1960-х годах.

В конце 1960-х годов была разработана первая версия операционной системы Unix. Написанная на C и доступная бесплатно в первые годы своего существования, Unix легко портировалась на новые системы и быстро получила широкое распространение.

Многие современные операционные системы, включая Apple OS X и все разновидности Linux, восходят к Unix.

Microsoft Windows была разработана в ответ на запрос IBM на операционную систему для ряда персональных компьютеров.

Первая операционная система, созданная Microsoft, называлась не Windows, а MS-DOS. Она была создана в 1981 году путем приобретения операционной системы 86-DOS у Seattle Computer Products и модификации ее в соответствии с требованиями IBM.

Название Windows впервые было использовано в 1985 году, когда был создан графический пользовательский интерфейс, сопряженный с MS-DOS.

Apple OS X, Microsoft Windows и различные формы Linux (включая Android) в настоящее время занимают большую часть рынка современных операционных систем.

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

Операционные системы состоят из двух основных частей:

Ядро — это сердце операционной системы. Это первая программа, загружаемая при запуске компьютера, она управляет ресурсами компьютера и обрабатывает запросы от системных программ и приложений.

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

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

Что вам нужно знать

  • Базовые знания информатики;
  • Теория компьютерного программирования и лучшие практики;
  • Языки программирования низкого и высокого уровня.

Изучайте информатику

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

Вот несколько ресурсов для начала:

Coursera: Computer Science 101 – это курс, который вы должны пройти в первую очередь, если вы новичок в области компьютерного программирования и информатики.

Если у вас есть немного знаний и опыта, пропустите этот курс в пользу вариантов Udacity of edX. Однако, если вы новичок в этой области, этот курс использует подход без предварительного опыта для введения в темы информатики и программирования.

В Udacity: Intro to Computer Science используется подход веб-разработки к обучению информатике. Хотя это и не применимо напрямую к созданию операционной системы, это хороший курс, который предоставляет полезную информацию и дает хороший обзор основ компьютерного программирования.

edX: Introduction to Computer Science – это наиболее полный и углубленный курс по информатике в этом списке. Этот бесплатный курс для самостоятельного изучения был разработан Гарвардским университетом и повторяет содержание одноименного курса, предлагаемого в кампусе Гарвардского университета.

В этом обширном курсе вы узнаете об алгоритмах, структурах данных, управлении ресурсами, разработке программного обеспечения и познакомитесь с такими языками программирования, как C, PHP и JavaScript.

Изучайте программирование

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

Udacity: процесс разработки программного обеспечения — это отличный курс, который должен пройти каждый, если он никогда раньше не занимался масштабным сложным проектом по программированию. В этом курсе вы изучите инструменты и методы рабочего процесса и управления, такие как Git, и узнаете, как настроить интегрированную среду разработки.

Изучайте языки программирования

Чтобы разработать операционную систему, вам необходимо освоить как минимум два языка программирования:

  • Низкоуровневый ассемблер;
  • Язык программирования высокого уровня.

Языки ассемблера используются для прямого взаимодействия с ЦП. Каждый тип ЦП говорит на машинном языке, и для каждого типа ЦП существует только один соответствующий язык ассемблера. Наиболее распространенной компьютерной архитектурой является x86, она была первоначально разработана Intel и в настоящее время используется широким кругом производителей компьютерных микросхем, включая AMD, VIA и многие другие. В этом руководстве мы укажем вам направление изучения языка ассемблера x86.

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

Язык ассемблера x86

Руководство по ассемблеру x86 – отличное место для начала изучения ассемблера. Этот краткий документ содержит краткий обзор языка ассемблера x86 и подготовит почву для более сложных ресурсов, к которым вы перейдете в следующий раз.

Программирование с нуля Джонатана Бартлетта – одна из определяющих книг по ассемблеру. В этой книге язык ассемблера используется в качестве основы для изучения информатики и программирования. Этот ресурс также доступен в Интернет-архиве.

Рэнди Хайд "Искусство языка ассемблера" — еще один культовый текст в мире обучения языку ассемблера. Первоначально написанный специально для курсов Хайда по программированию в Калифорнийском политехническом университете и Калифорнийском университете в Риверсайде, текст был выпущен в виде электронной книги в формате HTML в середине 1990-х годов и признан определяющей работой в этой области. Текст также размещен в виде серии PDF-файлов Yale FLINT Group.

  • Пошаговое руководство по языку ассемблера: программирование в Linux, автор Джефф Дантеманн;
  • Современное программирование на языке ассемблера X86, Дэниел Куссвурм.

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

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

Learn C the Hard Way – это бесплатная электронная книга в формате HTML, содержащая множество практических упражнений. Этот текст проведет вас через весь язык программирования C, и если вы потрудитесь, не торопитесь и выполните все упражнения, то к тому времени, когда вы начнете, вы уже будете на пути к тому, чтобы стать компетентным программистом на C. завершить это руководство.

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

  • Язык программирования C Кернигана и Ритчи;
  • Руководство по программированию на C для начинающих Перри и Миллера.

Руководства по разработке ОС

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

Linux From Scratch проведет вас через процесс создания полноценной операционной системы Linux. Полностью этот учебник не создаст полноценную операционную систему, но он даст вам прочную базу кода, на которой можно построить полную операционную систему. Воспользуйтесь расширенными руководствами, такими как Beyond Linux from Scratch, Automated Linux from Scratch, Cross Linux from Scratch или Hardened Linux from Scratch, чтобы превратить базовую ОС в полезное программное обеспечение.

Небольшая книга о разработке ОС, написанная Эриком Хелином и Адамом Ренбергом, была разработана как часть углубленного курса компьютерных наук, который авторы прошли, будучи студентами Королевского технологического института в Стокгольме. В этом курсе рассматривается весь процесс разработки операционной системы x86, начиная с настройки среды программирования, заканчивая программированием для многозадачности и попутно затрагивая такие темы, как управление системной памятью и разработка файловых систем.

  • Современные операционные системы Таненбаума и Боса;
  • Дизайн операционной системы UNIX Мориса Баха;
  • Концепции операционных систем Зильбершатца, Галвина и Ганя.

Сообщества разработчиков ОС

Когда вы начинаете путь разработчика ОС, есть несколько мест, где вы можете найти других разработчиков ОС, у которых можно поучиться и посочувствовать:

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

Обзор

Изучение разработки под ОС – одна из самых сложных задач программирования, которые вы можете выполнить. Тем не менее, если вы преуспеете в создании работающей ОС, вы станете компетентным программистом и тем, кто глубоко понимает, как процессоры, аппаратное обеспечение и компьютерные программы работают вместе, чтобы создать то, что остальной мир считает само собой разумеющимся функционирующим компьютером.< /p>

Дальнейшие шаги. Ищете веб-хостинг? Ознакомьтесь с нашим руководством по веб-хостингу и рекомендуемыми хостингами.

Также см. другие наши руководства по языкам программирования.

Сравните популярные планы веб-хостинга

Нужен отличный веб-хостинг? Хотите сэкономить время? Лучше всего начать с этого короткого списка:

Как собрать ядро ​​Linux с нуля

Ядро Linux — это основа Unix-подобных операционных систем. Ядро отвечает за связь между аппаратным и программным обеспечением и за распределение доступных ресурсов.

Все дистрибутивы Linux основаны на предустановленном ядре. Но если вы хотите отключить несколько параметров и драйверов или попробовать экспериментальные исправления, вам необходимо собрать ядро ​​Linux.

В этом пошаговом руководстве вы узнаете, как собрать и скомпилировать ядро ​​Linux с нуля.

Как собрать ядро ​​Linux

  • Система под управлением Linux
  • Доступ к терминалу/командной строке
  • Учетная запись пользователя с правами sudo/root
  • 12 ГБ свободного места на жестком диске

Сборка ядра Linux

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

Следуйте приведенным ниже шагам, чтобы собрать самое последнее ядро ​​Linux на момент написания этой статьи.

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

Шаг 1. Загрузите исходный код

<р>1. Посетите официальный сайт ядра и загрузите последнюю версию ядра. Загруженный файл содержит сжатый исходный код.

Загрузка последнее ядро ​​Linux». ширина=

<р>2. Откройте терминал и используйте команду wget для загрузки исходного кода ядра Linux:

По завершении загрузки в выходных данных отображается сообщение «сохранено».

 Используйте команду wget для загрузки исходного кода.

Шаг 2. Извлеките исходный код

Когда файл будет готов, запустите команду tar, чтобы извлечь исходный код:

В выходных данных отображается извлеченный исходный код ядра:

Извлечение исходного кода

Шаг 3. Установите необходимые пакеты

Установите дополнительные пакеты перед сборкой ядра. Для этого выполните следующую команду:

Команда, которую мы использовали выше, устанавливает следующие пакеты:

Установка дополнительных пакетов.

Шаг 4. Настройте ядро

Исходный код ядра Linux поставляется с конфигурацией по умолчанию. Однако вы можете настроить его под свои нужды. Для этого выполните следующие действия:

<р>1. Перейдите к linux-5.9.6. каталог с помощью команды cd:

<р>2. Скопируйте существующий файл конфигурации с помощью команды cp:

Переход к ядру папку и копирование файла конфигурации». ширина=

<р>3. Чтобы внести изменения в файл конфигурации, выполните команду make:

Команда запускает несколько скриптов, которые затем открывают меню конфигурации:

Загрузка меню конфигурации.

<р>4. Меню конфигурации включает в себя такие параметры, как прошивка, файловая система, сеть и параметры памяти. Используйте стрелки, чтобы сделать выбор, или выберите ПОМОЩЬ, чтобы узнать больше о параметрах. Когда вы закончите вносить изменения, выберите СОХРАНИТЬ, а затем выйдите из меню.

Изменение настроек в навигации меню.

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

Шаг 5. Создайте ядро

<р>1. Начните сборку ядра, выполнив следующую команду:

Процесс сборки и компиляции ядра Linux занимает некоторое время.

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

Использование команды make для сборки ядро». ширина=

<р>2. Установите необходимые модули с помощью этой команды:

Установка модулей ядра.

<р>3. Наконец, установите ядро, набрав:

По завершении вывод показывает, что сделано:

Установка ядра.

Шаг 6. Обновите загрузчик (необязательно)

Загрузчик GRUB — это первая программа, которая запускается при включении системы.

Команда make install выполняет этот процесс автоматически, но вы также можете сделать это вручную.

<р>1. Обновите initramfs до установленной версии ядра:

<р>2. Обновите загрузчик GRUB с помощью этой команды:

Терминал распечатывает процесс и подтверждающее сообщение:

Обновление файла grub.

Шаг 7. Перезагрузите и проверьте версию ядра

После выполнения описанных выше шагов перезагрузите компьютер.

Когда система загрузится, проверьте версию ядра с помощью команды uname:

Терминал выводит текущую версию ядра Linux.

Проверка версии ядра.

Из этого пошагового руководства вы узнали, как собрать ядро ​​Linux с нуля и установить необходимые пакеты.

Если вы будете внимательно следовать инструкциям, процесс будет успешно завершен на вашем компьютере с Linux.

Ядро Linux имеет модульную структуру. Функциональность расширяется с помощью модулей или драйверов. Узнайте, как использовать команду modprobe для добавления или удаления модулей в Linux.

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

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

Однако, возможно, вы не хотите тратить время на просмотр и тестирование каждого отдельного дистрибутива, особенно если их существует более 1000. Может быть, вы не хотите рисковать в отношении того, является ли дистрибутив совпадением, заключенным на небесах, но вместо этого вам нужна гарантия. Что может быть лучше, чем убедиться, что у вас есть идеальная пара, чем самому сделать операционную систему?

Почему я должен?

Почему и как можно создать собственную операционную систему Linux? Это довольно просто (ну, во всяком случае, относительно), поскольку существует проект, помогающий людям начать работу с чем-то вроде этого. Проект Linux From Scratch был создан специально для того, чтобы люди продолжали создавать свою собственную операционную систему Linux для удовлетворения своих собственных потребностей, будь то специальные аппаратные приспособления, максимальная производительность, стремление оставаться на переднем крае или изучение внутренностей Linux.

Не думайте, что Linux From Scratch — это еще один дистрибутив, который просто начинается с голых костей. На самом деле LFS — это просто набор документации, поэтому все, что вы делаете, буквально исходит из исходного кода каждого проекта. Другими словами, с помощью документации LFS вы можете скачать исходный код ядра Linux прямо с их сайта и работать оттуда, пока не создадите полную операционную систему — или, по крайней мере, такую ​​же часть операционной системы. как вам нужно.

Использовать Linux для создания Linux

При создании собственной операционной системы Linux вам необходимо понимать, что вам придется использовать дистрибутив Linux для создания другой. Это связано с тем, что, поскольку вы создаете все непосредственно из исходного кода, вам потребуются стандартные инструменты, поставляемые с большинством дистрибутивов Linux, для компиляции и установки вашей системы LFS. Вам не нужно устанавливать временный дистрибутив; вы можете просто запустить его с LiveCD, такого как Ubuntu, если хотите.

Начало работы/Разметка

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

Первым реальным шагом после открытия документации является создание нового раздела, в который вы установите новую операционную систему LFS. Вам не нужно делать ничего отличного от того, что вы обычно делаете, будь то один раздел ext4 для хранения всего, отдельные корневой и домашний разделы или что-то еще, что вы можете сделать. Вы можете создавать эти разделы с помощью своего любимого инструмента для создания разделов, например GParted.

Загрузка исходного кода

После того как разделы будут готовы, вам нужно будет перейти к главе 3, чтобы загрузить исходный код для всех необходимых пакетов и исправлений. Насколько мне известно, все эти пакеты абсолютно необходимы, поэтому ваша система не будет работать без них. С другой стороны, на первой странице LFS хвастается, что систему можно уменьшить всего до 5 МБ, но для этого вам действительно нужно знать, что вы делаете.

Сборка и установка базовой системы

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

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

Заключение

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

Для чего бы вы создали собственную систему LFS? Какое программное обеспечение он будет включать и какова будет его цель? Вы бы даже создали свою собственную систему LFS? Дайте нам знать в комментариях!


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

< бр />

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


Разжечь

Вы когда-нибудь хотели создать собственную операционную систему, но не знали, с чего начать? Тогда эта книга для вас! В этой книге автор объясняет все, что вам нужно знать, от получения и установки необходимых инструментов до написания, компиляции, развертывания и тестирования вашей собственной операционной системы. К тому времени, когда вы закончите, у вас будет операционная система, которую вы сможете назвать своей. И не беспокойтесь о разрушении существующей аппаратной и программной среды, поскольку все в этой книге написано с намерением работать в виртуализированной среде. Однако, если вы решите это сделать, автор также объяснит, как развернуть и протестировать вашу новую ОС на «голом железе». Первые несколько глав дают краткий обзор того, как работают современные компьютеры. В этих главах вы (повторно) изучите все, от распределения памяти, стеков и загрузчиков до низкоуровневого машинного кода и языков программирования. После этого вы перейдете к загрузке и установке инструментов, которые будете использовать для создания собственной операционной системы. Здесь вы узнаете, как разработать загрузчик и ядро ​​так же, как современные компьютеры полагаются для работы. В последних нескольких главах объясняется, как развертывать и тестировать вашу операционную систему, а также как расширять вашу ОС, чтобы делать больше, и даже как кросс-компилировать вашу новую блестящую операционную систему для других устройств, таких как Raspberry Pi. Чтобы дать представление о том, что вы можете найти в этой книге, ниже приводится оглавление. 0x01 Основы ОС 0x02 Введение в машинный код 0x03 Введение в язык программирования на ассемблере 0x04 Введение в язык программирования C 0x05 Начало работы - Установка VirtualBox - Установка Linux - Установка GNOME - Подготовка CentOS и виртуальной машины - Устранение неполадок гостевых дополнений VirtualBox - Подготовка среды разработки 0x06 Начальная загрузка с помощью загрузчика — Создание точки входа — GNU GRUB — Компиляция точки входа 0x07 Добро пожаловать в ядро ​​0x08 Собираем все вместе 0x09 Тестирование операционной системы 0x0A Запуск библиотеки архитектуры — Расширение консоли 0x0B Расширение ОС 0x0C Кросс-компиляция для других архитектур — Создание собственного кросс-компилятора — Портирование для Raspberry Pi — Тестирование на физическом оборудовании Заключение Благодарности Указатель приложения

Клиенты, просматривавшие этот товар, также просматривали

Операционные системы: принципы и практика

Компиляторы: принципы, Методы и инструменты

Клиенты, купившие этот товар, также купили

Доказательства: Полный учебник по математике (серия полных учебников по математике)

PTFM: Purple Team Полевое руководство

Аннотированный Тьюринг: Экскурсия по Алану Тьюрингу

Аннотированный Тьюринг: экскурсия по исторической статье Алана Тьюринга о вычислимости и машине Тьюринга

Редакционные обзоры

Об авторе

Люкус Дарнелл (1981 г.р.) всю жизнь проработал в сфере высоких технологий. Он получил свой первый компьютер в возрасте 7 лет, написал свое первое программное приложение в возрасте 9 лет, а с 18 лет построил и продал несколько предприятий, связанных с технологиями. технологических компаний по всему миру и продолжает путешествовать по всему миру по сей день, чтобы работать с компаниями в каждой отрасли. В последние годы его основное внимание уделяется домашней автоматизации, Интернету вещей, искусственному интеллекту и компьютерному зрению, но он по-прежнему продолжает обучать другим технологиям по различным каналам.

Подробнее о продукте

Видео

Отзывы клиентов

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

Лучшие отзывы из США

Сейчас возникла проблема с фильтрацией отзывов. Повторите попытку позже.

Если вы думаете, что программа на чистом железе, которая глушит "Hello world!" в контроллер дисплея — операционная система, вам понравится. Если вы считаете, что можете написать обработчик прерывания, не зная, что такое кадр стека, вы движетесь к золоту Даннинга-Крюгера, и это ваше руководство.

Я писал приложения для «голого железа», и это очень весело. Я занимался разработкой операционной системы класса Unix, и это было очень весело, и я получил удовольствие от написания драйвера устройства, который находится на ПЗУ сетевой карты, где холодный запуск может найти его для загрузки по сети. (Я также занимался разработкой микрокода для компилятора и набора инструкций для мэйнфреймов, и это тоже весело, но не по теме.)

Среди очень многих других вещей:
-- Вы не видите "ничего" после изображения строки C в памяти. Вы видите NUL (нулевой) байт, и это часть строки, завершение NUL является частью строки. Невозможность предсказать значение или доверять ему — ничто — холодный, твердый, известный, надежный ноль — это ничто. Теперь они уязвимости безопасности. Пожалуйста, не принимайте предложение включить их в свою "операционную систему".
-- Примитивы синхронизации могут запускаться, но не заканчиваться отключением прерываний. Не за полвека развития информатики и компьютерной архитектуры.

Похоже, этот разработчик гордится своим опытом разработки IoT (Интернета вещей). Что ж, недавняя атака Mirai превратила устройства IoT (включая множество камер видеонаблюдения) в рекламу продуктов для улучшения мужских качеств. Я полностью понимаю "Это просто! Это весело!" подход к разработке программного обеспечения, особенно на нижних уровнях.

Я также понимаю обязанности настоящих инженеров при создании нашего мира. У меня нет диплома инженера (в отличие от других специалистов в моей семье), даже инженера-программиста, но я полностью согласен с сертификацией инженеров, выполняющих жизненно важную работу, я хорошо знаком с MISRA, FDA, FAA и Стандарты Министерства энергетики США по надежности программного обеспечения. Поэтому мне кажется довольно странным, что этот автор не проявляет такой осведомленности.

Это весело, да, это очень весело. (Я программировал на VHDL примерно столько же, сколько на различных ассемблере или Java.) результат, это непросто.

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

PS: Моя жена придиралась ко мне по поводу написания собственного текста ОС для разработчиков, занимающихся встраиваемыми системами; Я считаю это ударом под дых. Я вел университетские курсы ОС для студентов CS и EE, и я думаю, что последние очень плохо обслуживаются. Как текст ОС, это никому не нужно.

Читайте также: