Пишем свою ОС — Начало (1)

Автор Filip Sergienko
Пишем свою ОС — Начало (1)

Привет меня зовут.

Арсений Барецкий и этим видео. Я начинаю серию уроков по разработке своей операционной системы с нуля в этом уроке мы запустим наши простейшие игру на эмуляторе и выведем приветствие на экран разработка своя операционная система — это занятие чрезвычайно и занимательно и поэтому усаживаясь поудобнее и смотри повнимательнее поехали к концу этого видеокурса мы с тобой полноценно ядро со своей дочкой так например ты сможешь посмотреть список процессов с помощью команды. ПСЖ также ты сможешь выполнить исполняемый файл с помощью команды Excel и убить, что он отработал с помощью команды Kill ты сможешь завершить процесс по его номеру когда процессов больше не останется ты попадёшь журнал ядра сообщением об ошибке код к первому занятию содержится в моём репозитории ветки Lesson 1 в массе жилетки содержатся полноценные.

Рабочая ядро с оболочкой.

Ну, а теперь поехали. Конечный результат нашей работы над сегодняшним уроком будет выглядеть для того чтобы всё — это собрать и запустить тебя конечно потребуется Linux самый простой способ скачать virtualbox и запустить в нём дистрибутив Linux который ты можешь легко найти в интернете его не нужно конфигурировать устанавливать он работает из коробки того чтобы ты мог кодировать своей любимой операционной системе тебе потребуется расшарить папку открываем в среду разработки и создаём простейший Make File как ты уже заметил наши ядро будет собираться в формате. Эльф стандартом для исполняемых файлов на многих unix-подобных операционных системах. Однако нам нельзя пользоваться библиотекой языка си который предоставляет эпилятор по умолчанию для того чтобы что-то вывести на экран нам потребуется три файла. входа на ассемблере точка входа носи и небольшой файл для вспомогательных утилит со строками теперь вкратце рассмотрим формат исполняемых файлов. Эльф как ты видишь он состоит из заголовков и секции нас больше всего секция текст. Поскольку Оно содержит исполняемый код. Наша задача сделать так чтобы она по адресу 1 мегабайт оперативной памяти для этого нужно написать небольшой скрип для линкера здесь мы указали точку входа. Старт для нашего ядра, а также, что секция текст будет располагаться по первому мегабайт в оперативной памяти за которые будут следовать секции дата ibss загрузку образы ядра в памяти передача управления на метку производят загрузчик операционной системы. Обрати внимание, что мы запускаем к ему собственником которой. Передаем образ ядра в этом случае к ему запускают встроенный multiboot совместимые загрузчик теперь перейдём к другой рассмотрим. у входа в ведро которое находится в секции текст специфика multiboot регламентирует начальное содержимое регистров, а также требует чтобы в начале 7 текст располагался небольшой заголовок выровнены по границе двойного слово если он сделан правильно загрузчик передаст управления на мягкую. Старт дела. Мы запрещаем прерывание поскольку мы ещё не готовы их обрабатывать любой прерывание от таймера. Может просто убить нашу систему 2 команды мы переходим на собственный стык следующими тремя командами мы вызываем функции curl. Старт с двумя аргументами. Напомни, что по соглашению языка си и левой параметры кладётся в стык последнем и наконец последней командой мы останавливаем процессор весь этот файл ты можешь скопировать себе и больше не заморачиваться бы его существование после этого наконец можно приступить к написанию кода на си нашей функции канал старт два аргумента один из которых содержит важную системная структура загрузчика попробуем что-нибудь вывести на экран по умолчанию график работы в текстовом режиме. А — это означает всё, что вы видите в видеопамять начинающиеся по адресу b8000 будет непосредственно. Выведи на экран размеры экрана составляет 80 символов в ширину и 25 высоту при этом после каждого символа стоит символ атрибута которая определяет цвет символа и фон для этого нам потребуется две функции math is straight мы определим их стандартную библиотеку который будет пользоваться нашей операционной системы, а также программа запускает создаем в каталоге инклуд каталог клип и в нём File string сюда мы будем добавлять все функции для работы со строками которые будут похожи на функции стандартной библиотеки языка си теперь перейдем к реализации смотрим сначала функцию копирования строк string Copy как ты помнишь строки в языке си — это просто массив байт заканчивающиеся на любом байтом. Поэтому просто копируем символы из одного указателей в другой до тех пор пока не встретиться на любой момент. МФЦ работает похожим образом, но вместо копирования строки в другую строку она туда постоянное значение и указывается сколько раз его нужно копировать функция с текст посимвольно копировать строку в буфер, но при этом после каждого символа составляет ещё один символ атрибута на этом всё готово можно запускать теперь расскажу о том. Зачем вам понадобилось структура multiboot с её помощью можно определить размер доступной оперативной памяти, но больше всего здесь нас интересует структура Mod undertale с помощью неё мы будем определять адрес в памяти куда загрузчик поместила начальную файловой системы. Поэтому просто. Сохрани её на будущее. Если тебе интересно ты можешь открыть спецификацию на тему посмотреть назначение тех или иных полей добавим ещё один полезный. Файлик в нашу библиотеку чтобы кот был более читабельным нам нужно вести алиасы для наших типов теперь точно всё если ты ещё не определился со средой разработки той.

0 комментариев
0

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