Alexander (gljukonaft)
О себе
- Бизнес и карьера Секреты инвестирования
- Компьютеры и интернет Новости Linux-дистрибутивов и практика их использования Дискуссия FreePascal.ru Linux: разрешение вопросов, перспективы и общение Пишем свою операционную систему Новости сайта "Системное Программирование" Перевод и доработка документации под Linux и другие системы Для бухгалтера: программы, новости, советы LinuxCenter News Channel: новости Linux
- Hi-Tech self-made-free
- Общество Загадки и тайны христианства
Пишем свою операционную систему. Менеджер физической памяти
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Доброго времени суток! Сегодня в этом выпуске мы напишем реализацию менеджера физической памяти. Его задача - найти N свободных физических страниц, пометить их как занятые и отдать адрес первой. А также обратную операцию - пометка блока физических страниц как свободных. Мне известно 4 различных алгоритма: 1) Стек страниц. Создаётся специальная структура данных - массив физических адресов, количество элементов равно количеству страниц физической памяти. При 32-битном адресе это будет лишь 1/1024 всей памяти...
8 лет Центру Финансового Образования
Как заставить деньги работать на вас? Управление личными финансами, инвестиции, фондовый рынок, иностранная валюта, банковские и страховые услуги, недвижимость, паевые фонды, доверительное управление и многое другое для частного инвестора.
и ответы на письма...
Пишем свою операционную систему. Менеджер памяти
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Пришло время начать писать менеджер памяти - важнейший компонент любой операционной системы. Однако до его реализации в коде почему-то не дошла ни одна из известных мне рассылок. Напишем заголовочный файл memory_manager.h, обозначив задачи на этот выпуск: #ifndef MEMORY_MANAGER_H #define MEMORY_MANAGER_H #include "stdlib.h" #define PAGE_SIZE 0x1000 #define PAGE_OFFSET_BITS 12 #define PAGE_OFFSET_MASK 0xFFF #define PAGE_TABLE_INDEX_BITS 10 #define PAGE_TABLE_INDEX_MASK 0x3FF #define PHYADDR_BITS 3...
Пишем свою операционную систему. Работа с клавиатурой
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Доброго времени суток! До предыдущего выпуска пользователь не как не мог взаимодействовать с нашей операционной системой, лишь наблюдать её работу. Теперь она уже умеет как-то реагировать на нажатия клавиш, отображая текстовые сообщения, но этого мало для нормального ввода данных. Однако сначала приведу Makefile для предыдущего выпуска: ifdef OS LDFLAGS = -mi386pe else LDFLAGS = -melf_i386 endif CFLAGS = -m32 -ffreestanding all: script.ld startup.o stdlib.o main.o interrupts.o tty.o ld (LDFLAGS) -T script....
Пишем свою операционную систему. Обработка прерываний
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Доброго времени суток! В предыдущем выпуске мы реализовали более-менее полноценный вывод текстовой информации на экран с возможностью управления позицией курсора и цветом текста, однако до сих пор пользователь никак не мог взаимодействовать с нашей ОС. Сегодня мы исправим этот недостаток, написав простой драйвер клавиатуры PS/2 (USB клавиатуры эмулируют PS/2, так что и они будут поддерживаться. Прерывания Нам уже известно два механизма взаимодействия процессора с остальными устройствами - через специальные...
Пишем свою операционную систему. Bugfix и printf
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Приветствую всех своих читателей! Недавно заметил ошибку в написанном нами ещё давно startup.asm: аргументы передавались не в том порядке, в котором их принимает kernel_main. Это не проявлялось бы, пока мы не начали использовать значения этих аргументов. Вот правильная версия: format ELF public _start extrn kernel_main section ".text" executable _start: movzx edx, dl push ebx push esi push edx lgdt [gdtr] call kernel_main add esp, 3 * 4 : cli hlt jmp @b section ".data" writable gdt: dq ...
Пишем свою операционную систему. Драйвер текстового экрана
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
До этого момента мы выводили текст на экран лишь с помощью прямого копирования байт в видео-память. Было бы не плохо реализовать функции вроде printf для более удобного вывода на экран. Вообще-то я хочу получить в итоге микроядро, и драйверу консоли там не место, однако поскольку эта рассылка имеет цель не только задокументировать ход работы, но и наглядно показать процесс разработки, я пока немного нарушу последовательность и напишу драйвер для ядра. Ничто не мешает в будущем удалить лишние модули из ядра...
Пишем свою операционную систему. Стандартная библиотека
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Заголовочный файл стандартной библиотеки В прошлом выпуске мы наконец-то перешли с Ассемблера на язык высокого уровня Си и написали простейшее ядро. Поскольку мы пишем свою ОС, в нашем распоряжении лишь аппаратные возможности и конструкции языка Си, никакой стандартной библиотеки и функций - ведь они рассчитаны на работу под существующей системой (если вы компилируете программу в Linux, функции рассчитаны на работу с системными вызовами Linux, если под Windows, то функции уже другие и т. д. Сегодня мы напи...
Пишем свою операционную систему. Переходим на Си
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Приветствую всех своих читателей! Предыдущие выпуски могли быть несколько запутанными. Начальная загрузка, Assembler, BIOS. Сегодня мы наконец переходим к более интересной и понятной части - мы начинаем писать ядро. И писать мы его будем на языке высокого уровня Си. В начальный загрузчик осталось внести всего пару дополнений и он будет полностью готов грузить любые 32-битные ядра. Определение объёма оперативной памяти Конечно, можно подсчитать объём памяти вручную в ядре - перебирать адреса от 0x100000 и п...
Пишем свою операционную систему. Страничная адресация
Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.
Доброго времени суток! В прошлом выпуске мы остановились на том, что перешли в защищённый режим и вывели один символ на экран. Сейчас пришло время рассказать об одной вещи, которая является, пожалуй, ключевым элементом в построении многозадачности и вообще сильно влияет на архитектуру любой полноценной операционной системы. Это - страничная трансляция адресов. Для начала познакомимся с тремя видами адреса - физический адрес , линейный адрес и виртуальный адрес . Во-первых, физический адрес - это непосредст...
- Бизнес и карьера Секреты инвестирования
- Компьютеры и интернет Новости Linux-дистрибутивов и практика их использования Дискуссия FreePascal.ru Linux: разрешение вопросов, перспективы и общение Пишем свою операционную систему Новости сайта "Системное Программирование" Перевод и доработка документации под Linux и другие системы Для бухгалтера: программы, новости, советы LinuxCenter News Channel: новости Linux
- Hi-Tech self-made-free
- Общество Загадки и тайны христианства