Udemy [Udemy] Разработка многопоточного ядра с нуля! (2023)

  • Автор темы Trinity
  • Дата начала
[Udemy] Разработка многопоточного ядра с нуля! (2023)

N5zfDQS.png


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

Разработка в режиме Real Mode

Real Mode - это устаревший режим во всех процессорах Intel, который заставляет процессор запускаться в устаревшем состоянии, работая так же, как старые процессоры Intel 8086.

В разделе "Разработка в режиме Real Mode" курса мы начинаем с изучения процесса загрузки и принципов работы с памятью, затем переходим к созданию собственного загрузчика, который мы тестируем на реальной машине! Этот загрузчик будет выводить простое сообщение "Hello World!" на экран, и мы пишем его на чистом языке ассемблера.

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

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


Разработка в режиме защиты (Protected Mode)

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

Этот раздел очень подробный, вам будут рассказаны все аспекты страничной организации памяти и виртуальной памяти. Мы используем умные инструкции в процессорах Intel, чтобы позволить всем процессам использовать одинаковые адреса памяти, что называется виртуализацией памяти. Мы отображаем адреса памяти на различные физические адреса памяти, создавая иллюзию того, что каждый выполняемый процесс загружен по одному и тому же адресу. Это очень распространенная техника в разработке ядра и также используется в файле подкачки (swap files), который компенсирует нехватку оперативной памяти.

Мы создаем собственный слой виртуальной файловой системы, который использует дизайн, подобный ядру Linux. Это умная абстракция, вдохновленная опытом преподавателя в написании драйверов ядра Linux.

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

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

В этом курсе вы также узнаете, как работает управление памятью. Мы реализуем функции "malloc" и "free", создавая собственную кучу, которая предназначена для отслеживания используемой памяти. Управление памятью является неотъемлемой частью любой операционной системы и ядра.

И не забудем, что мы также создадим загрузчик ELF-файлов. Мы будем компилировать все программы нашей операционной системы в ELF-файлы и позволим загружать двоичные программы или ELF-программы. ELF-файлы содержат много информации, которая описывает нашу программу, например, где она должна быть загружена в память и различные секции программы.

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

Assembly language bonus

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

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

Материал на английском языке

Подробнее:
Скачать:
 

Похожие темы

Trinity
Ответы
0
Просмотры
95
Udemy.com
Trinity
Trinity
Trinity
Ответы
0
Просмотры
61
Udemy.com
Trinity
Trinity