Главная » Архив меток: osdev

Архив меток: osdev

UHCI, или самый первый USB

Доброго времени суток, дорогой читатель! Меня просили написать про UHCI — хорошо, пишу. Простой пример: хотите написать свою ОС для мини-ПК, дабы какая-нибудь винда или очередной дистрибутив линукса не загружали железо, и вы использовали всю его мощь исключительно в своих целях. Возможно, вам пригодиться эта статья, если, к примеру, вы не имеете достаточных навыков написания драйверов и чтение документации к ...

Читать далее »

Ядра процессора или что такое SMP и с чем его едят

Введение Доброго времени суток, сегодня хотелось бы затронуть достаточно простую тему, которая почти никем из обычных программистов неизвестна, но каждый из вас, скорее всего, ей пользовался.Речь пойдет о симметричной мультипроцессорности(в народе — SMP) — архитектура, которая встречается во всех многозадачных операционных системах, и конечно же, является неотъемлемой их частью. Каждый знает, что чем больше ядер у процессора — тем мощнее ...

Читать далее »

Написание собственной работоспособной ОС за пол года

Предыстория Здравствуйте! Всех категорически приветствую, сегодня хотел бы рассказать Вам о своём опыте написание работоспособной ОС под архитектуру x86.Как-то весенней ночью у меня родилась гениальная идея — попробовать себя в написании собственной ОС, которая может позволить запускать программы, работать с устройствами, да и в общем выжимать всю мощь из Intel'овской архитектуры в своих нуждах: к примеру, для своей фабрики или ...

Читать далее »

ReactOS теперь запускается с BTRFS раздела

Привет, Хабр! В этой серии мы продолжаем усиленно дружить драйвер WinBtrfs с ReactOS. После предыдущего поста, был реализован мини-драйвер для загрузчика FreeLoader, позволяющий в read-only режиме читать файлы с раздела BTRFS. А этот ваш Windows так умеет?Начнем по порядку. Здесь для поиска inode структуры (эта структура содержит базовую информацию о файле) в директории используется хеш имени файла, это позволяет ходить ...

Читать далее »

Операционные системы с нуля; уровень 3 (младшая половина)

Т.е. В этой лабе мы будем реализовывать возможность запуска пользовательских программ. В начале разберёмся как переключаться из привилегированного кода, как переключать контексты процессов. процессы и всю зависимую инфраструктуру. В конце концов выведем наш шелл из пространства ядра в пространство пользователя. Затем реализуем простенький round-robin планировщик, системные вызовы и управление виртуальной памятью. оригинал Нулевая лаба Первая лаба: младшая половина и старшая ...

Читать далее »

[Перевод] Операционные системы с нуля; уровень 3 (старшая половина)

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

Читать далее »

Операционные системы с нуля; уровень 2 (младшая половина)

В этой части мы напишем менеджер памяти для того, чтоб разблокировать использование Vec, String, HashMap и всего этого. Сразу после этого реализуем файловую систему FAT32 и подключим драйвер для EMMC (такая штука для общения с SD-карточками). В конце концов в нашей командной оболочке появятся пара новых команд: cd, pwd, cat, ls. Нулевая лаба Первая лаба: младшая половина и старшая половина ...

Читать далее »

Операционные системы с нуля; Уровень 1 (младшая половина)

Эта часть посвящена улучшению навыков работы с Rust и написанию парочки полезных утилиток и библиотек. Напишем драйверы для GPIO, UART и встроенного таймера. Реализуем протокол XMODEM. Используя это всё, напишем простенький шелл и загрузчик. Перед прочтением настоятельно рекомендуется убедиться в прочтении Книги. По крайней мере от начала и до конца. Для ленивых, но чуть более опытных можно рекомендовать это. На ...

Читать далее »

[Перевод] Операционные системы с нуля; Уровень 0

Добрый день/вечер/ночь/утро! Есть один экспериментальный курс по операционным системам. Есть он в Стэнфордском университете. Но часть материалов доступно всем желающим. Помимо слайдов доступны полные описания практических занятий. Чем этот курс отличается от прочих других? Большая часть кода пишется самостоятельно и выполняется на вполне реальном современном железе. В качестве целевой платформы выбран Raspberry Pi 3 model B. Т.е. достаточно актуальная архитектура ...

Читать далее »

Операционные системы с нуля; уровень 1 (старшая половина)

Настало время следующей части. Это вторая половина перевода лабы №1. В этом выпуске мы будем писать драйверы периферии (таймер, GPIO, UART), реализуем протокол XMODEM и одну утилитку. Используя всё это мы напишем командную оболочку для нашего ядра и загрузчик, который позволит нам не тыкать microSD-карточку туда-сюда. Младшая половина.Начинать чтение стоит с нулевой лабы. Фаза 3: Не раковина (Not a Seashell) ...

Читать далее »