Что означает термин «Unix-подобный»? Это общий способ обозначить множество различных операционных систем, которые имеют одну и ту же общую структуру, в отличие от той, которая используется Microsoft.

Unix-подобный также вырос из путаницы и споров по поводу того, что следует считать системой Unix. Найти ответы по по любым системам Unix можно на сайте https://unixhow.com.

Когда мы называем ОС «Unix-подобной», это обычно означает, что исходный код ОС (версия программного обеспечения в том виде, в котором она была изначально закодирована) напрямую отслеживается, имеет аналогичные свойства и явно основан на Unix. . Примерами являются True64 от Compaq, Solaris, IRIX, HP-UX и IBM AIX.

Термин «подобный Unix» также относится к клонам Unix. Клон — это программное обеспечение, которое работает аналогично другому программному обеспечению, но не имеет того же исходного кода.

Пара ключевых характеристик UNIX или Unix-подобных

Ключевые конструктивные особенности исходной версии Unix совпадают с современными операционными системами.

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

Другой аспект Unix, который делает его особенным, заключается в том, что существует только одна файловая система, через которую программное обеспечение может обмениваться данными и взаимодействовать. Все компоненты вычислительной экосистемы представлены файлами в рамках этой модели, включая специальные файлы с подробными сведениями о системе и даже оборудованием. Отличие от этой архитектуры — буквы дисков Windows (C, D и т. Д.), Формат, который Microsoft перенесла из DOS. В отличие от разделения всего на диски, в Unix существует одна унифицированная иерархия каталогов.

Как можно создать ОС?

  1. Мастер языка С

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

  1. Ядро vs. ОС

Вы должны понимать разницу между ядром и ОС. Ядро — это, по сути, мозг ОС. ОС представляет собой набор приложений, объединенных вместе. Например, Mac OS X включает в себя: ядро, интерфейс (GUI), встроенные стандартные приложения (Finder — это просто абстракция для визуализации файловой системы, TextEdit, оболочки и т. д.)

  1. Не ныряйте сразу

Невозможно начать разработку ядра за несколько дней или недель. Предлагается начать со следующего:

  • Ознакомьтесь с этапами компиляции GCC (что происходит при запуске gcc, как создается исполняемый файл и что происходит при запуске программы). Вы также можете написать простой ассемблер на C (возьмите ассемблерный код в качестве машинного кода ввода и вывода). Это требует от вас понимания того, какие разделы .data, .text и .bss находятся в сборке (очень полезно в будущем для понимания виртуальной памяти ОС). Вы также поймете адресацию на уровне машины и способы разрешения ветвей.
  • Ознакомьтесь с инструментами и программами машинного уровня.
  • Ознакомьтесь с основными атаками на ОС.
  • Узнайте о системных вызовах, потоках и процессах на C. Оттуда разработайте свою собственную оболочку на C.
  • Узнайте о распределении памяти и реализуйте malloc и free на C. Узнайте о компромиссах при проектировании, стратегиях выделения, стратегиях освобождения.
  • Узнайте о многопоточности на C. Оттуда погрузитесь в механизмы синхронизации (блокировки, мьютексы, семафоры) и разработайте пул потоков на C, которые могут использовать другие программы.
  1. Теперь вы можете приступить к реальной, но упрощенной разработке ядра ОС.

На этом этапе вы можете начать разработку на реальной ОС как разработчик ОС.