Отправляет email-рассылки с помощью сервиса Sendsay

Alexander (gljukonaft)

Пишем свою операционную систему. Менеджер физической памяти

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

Доброго времени суток! Сегодня в этом выпуске мы напишем реализацию менеджера физической памяти. Его задача - найти N свободных физических страниц, пометить их как занятые и отдать адрес первой. А также обратную операцию - пометка блока физических страниц как свободных. Мне известно 4 различных алгоритма: 1) Стек страниц. Создаётся специальная структура данных - массив физических адресов, количество элементов равно количеству страниц физической памяти. При 32-битном адресе это будет лишь 1/1024 всей памяти...

2012-07-26 03:02:21 + Комментировать Автор:

8 лет Центру Финансового Образования

Секреты инвестирования

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

подписчиков: 217879
Подписаться

и ответы на письма...

2012-07-25 10:01:47 + Комментировать Автор:

Пишем свою операционную систему. Менеджер памяти

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

Пришло время начать писать менеджер памяти - важнейший компонент любой операционной системы. Однако до его реализации в коде почему-то не дошла ни одна из известных мне рассылок. Напишем заголовочный файл 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...

2012-07-25 07:06:04 + Комментировать Автор:

Пишем свою операционную систему. Работа с клавиатурой

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

Доброго времени суток! До предыдущего выпуска пользователь не как не мог взаимодействовать с нашей операционной системой, лишь наблюдать её работу. Теперь она уже умеет как-то реагировать на нажатия клавиш, отображая текстовые сообщения, но этого мало для нормального ввода данных. Однако сначала приведу 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....

2012-07-24 18:56:12 + Комментировать Автор:

Пишем свою операционную систему. Обработка прерываний

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

Доброго времени суток! В предыдущем выпуске мы реализовали более-менее полноценный вывод текстовой информации на экран с возможностью управления позицией курсора и цветом текста, однако до сих пор пользователь никак не мог взаимодействовать с нашей ОС. Сегодня мы исправим этот недостаток, написав простой драйвер клавиатуры PS/2 (USB клавиатуры эмулируют PS/2, так что и они будут поддерживаться. Прерывания Нам уже известно два механизма взаимодействия процессора с остальными устройствами - через специальные...

2012-07-23 17:28:05 + Комментировать Автор:

Пишем свою операционную систему. Bugfix и printf

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

Приветствую всех своих читателей! Недавно заметил ошибку в написанном нами ещё давно 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 ...

2012-07-22 19:05:54 + Комментировать Автор:

Пишем свою операционную систему. Драйвер текстового экрана

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

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

2012-07-22 16:34:22 + Комментировать Автор:

Пишем свою операционную систему. Стандартная библиотека

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

Заголовочный файл стандартной библиотеки В прошлом выпуске мы наконец-то перешли с Ассемблера на язык высокого уровня Си и написали простейшее ядро. Поскольку мы пишем свою ОС, в нашем распоряжении лишь аппаратные возможности и конструкции языка Си, никакой стандартной библиотеки и функций - ведь они рассчитаны на работу под существующей системой (если вы компилируете программу в Linux, функции рассчитаны на работу с системными вызовами Linux, если под Windows, то функции уже другие и т. д. Сегодня мы напи...

2012-07-21 23:19:33 + Комментировать Автор:

Пишем свою операционную систему. Переходим на Си

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

Приветствую всех своих читателей! Предыдущие выпуски могли быть несколько запутанными. Начальная загрузка, Assembler, BIOS. Сегодня мы наконец переходим к более интересной и понятной части - мы начинаем писать ядро. И писать мы его будем на языке высокого уровня Си. В начальный загрузчик осталось внести всего пару дополнений и он будет полностью готов грузить любые 32-битные ядра. Определение объёма оперативной памяти Конечно, можно подсчитать объём памяти вручную в ядре - перебирать адреса от 0x100000 и п...

2012-07-16 19:16:15 + Комментировать Автор:

Пишем свою операционную систему. Страничная адресация

Пишем свою операционную систему

Пишем свою собственную ОС на Ассемблере и Си с нуля. Своя файловая система, архитектура и т.д. Рассылка может использоваться для изучения низкоуровневого программирования. Результаты рассылки могут преобразоваться в самостоятельный проект ОС.

подписчиков: 200
Подписаться

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

2012-07-15 18:55:38 + Комментировать Автор: