30 -дневная самостоятельная операционная система [аффилированный код CD 30 дней 30 дней для написания графических упражнений ...
Вес товара: ~0.7 кг. Указан усредненный вес, который может отличаться от фактического. Не включен в цену, оплачивается при получении.
- Информация о товаре
- Фотографии
наименование товара: | 30 -дневная самостоятельная операционная система [аффилированный код CD 30 дней с нуля, чтобы написать графические упражнения…… | формат: | 16 |
Автор: | (День) Чуан Хексиу | Цены: | 99.00 |
Номер ISBN: | 9787115287960 | Опубликованная дата: | 2012-08-01 |
Издательство: | Люди после прессы | Время печати: | 2012-08-01 |
Версия: | 1 | Индийский: | 1 |
Выбор редактора
Это займет всего 30 дней
Написал графическую операционную систему со всеми пятью внутренними органами с нуля
39,1 КБ мини -система
Реализуйте много -task, китайский отображение символов, сжатие файлов и послушайте песни, чтобы смотреть картинки и играть в игры
Японский гений программирования
Откройте таинственную завесу процессора, память, диск и основной рабочий режим операционной системы
краткое введение
Написание операционной системы самостоятельно - это мечта многих программистов.Некоторые люди, возможно, бросили вызов этому, но они сдались, потому что это было слишком сложно.На самом деле, вы ошибаетесь.Итак, вы хотите снова бросить вызов?
Это книга, которая является и интересной, практичной и обучением.Автор начинает объяснять из структуры компьютера, языка сборки и языка C, чтобы вы могли овладеть алгоритмом на практике.В соответствии с руководством этой книги вы можете написать весь код из нуля, и вы можете создать 32 -битную мульти -тазирующую операционную систему с помощью оконной системы через 30 дней.
В этой книге преобладают субъекты, играя во время игры, помимо неясного языка, стиль письма очень случайный, и она также полон различных радостных рвоты.
об авторе
Хидеми Каваи
Родился в 1975 году, это один&«Легкий»”“ Неосновной тренд”В 2000 году он прославился своим собственным проектом Osask.OSASK -это микро -операционная система с открытым исходным кодом. Характеристики высокого уровня достигаются.Содержание этой книги можно рассматривать как Osak автора как план.
Оглавление
До развития 0 -го дня развития
1. Введение
2 Что такое операционная система
3 различных метода разработки операционных систем
4 Невежество бесстрашное
5 Как разработать операционную систему
6 трудностей в разработке операционной системы
7 Меры предосторожности при изучении этой книги (важная!)
8 Краткое описание каждой главы
В первый день от компьютерной структуры до программы сборки, начать
1 Переместите первую операцию
2 Что ты делал
3 Процедура сбора первого опыта
4 Обработка
День 2 Журнала изучение языка и макияж
1 Введение текстового редактора
2 Продолжить развитие
3 Сначала сделайте зону запуска
4 Makefile
Введите режим 32 -бит на 3 -й день и импорт C
1 Сделайте настоящий IPL
2 проб и ошибка
3 Прочтите 18 -сектор
4 Читать 10 поверхностей столбца
5 Исходная операционная система разработки
6 Выполните операционную систему из области запуска
7 Подтвердите выполнение операционной системы
8 32 -бит -режим подготовки
9 Начните импортировать язык C
10 Реализация HLT (HARIB00J)
День 4 Упражнения, отображаемые на языке C и дисплее
1 Реализовать написание памяти на языке C (Harib01a)
2 полосатые узоры (Harib01b)
3 Зарезов вызовов (HARIB01C)
Применение 4 указателя (1) (harib01d)
Применение 5 указателя (2) (harib01e)
6 настроек номера цвета (HARIB01F)
7 Нарисуйте прямоугольник (Harib01g)
8 Сегодняшнее достижение (Harib01h)
День 5 Структура, текстовое отображение и инициализация GDT/IDT
1 Получить информацию о стартапе (HARIB02A)
2 пробная структура (Harib02b)
3 пробная марка стрелы (Harib02c)
4 отображая символ (harib02d)
5 добавить шрифты (harib02e)
6 Show String (harib02f)
7 Значения переменной отображения (HARIB02G)
8 Показать указатели мыши (HARIB02H)
Инициализация 9 GDT и IDT (Harib02i)
День 6 Компиляция подразделения и прерывание прерывания
1 исходный файл (Harib03a)
2 сортировать Makefile (Harib03b)
3 Сортировать файл заголовка (Harib03c)
4
5 PIC инициализации (HARIB03D)
6 Производство процедур обработки прерываний (HARIB03E)
День 7 FIFO и контроль мыши
1 Получите кодирование кнопки (Hiarib04a)
2 Ускорить обработку прерывания (Hiarib04b)
3 Сделайте Fifo Buffer (HiaArib04c)
4 улучшить буфер FIFO (Hiarib04d)
5 Поверните в буфер FIFO (Hiarib04e)
6 Наконец -то говорите о мышью (Harib04f)
7 Примите данные с мыши (HARIB04G)
День 8 управление мышью и 32 -битный переключатель режима
1 интерпретация мыши (1) (Harib05a)
2 Маленькая компиляция (Harib05b)
3 Интерпретация мыши (2) (Harib05c)
4 Переместите указатель мыши (Harib05d)
5. Дорога в режим 32 -бит
День 9 Управление памятью
1 Сортировка исходного файла (Harib06a)
2 Проверка емкости памяти (1) (HARIB06B)
3 Проверка емкости памяти (2) (HARIB06C)
4 Задача управления памятью (HARIB06D)
День 10 суперпозиции обработка
1 Управление памятью (продолжение) (Harib07a)
2 наложенное лечение (Harib07b)
3 Улучшить скорость обработки суперпозиции (1) (HARIB07C)
4 Улучшить скорость обработки суперпозиции (2) (Harib07d)
День 11 производственного окна
1 Проблема отображения мыши (Harib08a)
2 Реализация поддержки вне экрана (HARIB08B)
3 Указанное упущение SHTCTL (HARIB08C)
4 Окно отображения (Harib08d)
5 небольшой эксперимент (Harib08e)
6 -Speed Counter (HARIB08F)
7 Устранение мигания (1) (harib08g)
8 Устраните мигание (2) (Harib08h)
День 12 таймер (1)
1 Используйте таймер (Harib09a)
2 Время измерения (Harib09b)
3 -й время (harib09c)
4 Установите несколько таймеров (Harib09d)
5 Ускорить прерывание (1) (harib09e)
6 Ускорить прерывание (2) (harib09f)
7 Ускорить прерывание (3) (harib09g)
День 13 таймер (2)
1 упрощенный строковый дисплей (Harib10a)
2 re -ructust в буфере FIFO (1) (Harib10b)
3 Тестовые характеристики (Harib10c ~ harib10f)
4 Re- Приспособление буфера FIFO (2) (Harib10g)
5 Ускорить прерывание (4) (Хариб10H)
6 Использование“ sentinel”
День 14 высокого разрешения и вход клавиатуры
1 Продолжить производительность теста (Harib11a ~ harib11c)
2 улучшить разрешение (1) (Harib11d)
3 улучшить разрешение (2) (Harib11e)
4 вход клавиатуры (1) (Harib11f)
5 вход клавиатуры (2) (Harib11g)
6 записей (1) (Harib11h)
7 записей (2) (Harib11i)
День 15 миссия (1)
1 переключатель задачи задачи (HARIB12A)
2 Advanced Switch задачи (HARIB12B)
3 Сделайте простой мульти -task (1) (harib12c)
4 Сделайте простую мульти -табу (2) (Harib12d)
5 Улучшить скорость работы (HARIB12E)
6 Скорость тестового прогона (HARIB12F)
7 многочисленных задач продвинуты (Harib12g)
ДЕНЬ 16 Многочисленные задачи (2)
1 Автоматизация управления задачами (HARIB13A)
2 Позвольте заданию спать (HARIB13B)
3 Увеличьте количество окон (Harib13c)
4 Установить приоритет задачи (1) (HARIB13D)
5 Установить приоритет задачи (2) (HARIB13E)
День 17 Командной строки окно
1 задача на холостое время (Harib14a)
2 Создайте окно командной строки (Harib14b)
3 окно ввода переключения (HARIB14C)
4 Ввод символов реализации (HARIB14D)
5 ввод символов (HARIB14E)
6 заглавных букв и строчные буквы (Harib14f)
7 Поддержка различных клавиш блокировки (Harib14G)
ДЕНЬ 18 Диральный командование
1 Управляйте флэш -флэш -другом (1) (HARIB15A)
2 Управляйте флэш -флэш -другом (2) (HARIB15B)
3 Поддержка Enter (HARIB15C)
4 поддержка прокатных окон (Harib15d)
5 MEM Command (Harib15e)
6 CLS Command (Harib15f)
7 Dir Command (Harib15g)
ДЕНЬ 19 заявление
1 Type Command (Harib16a)
2 Тип улучшения команды (Harib16b)
3 Поддержка жира (HARIB16C)
4 Кодовая отделка (HARIB16D)
5 Первое приложение (HARIB16E)
День 20 API
1 программирование (Harib17a)
2 Показать API (1) (harib17b) одного символа (harib17b)
3 Показать API (2) (HARIB17C) одного символа (HARIB17C)
4 Завершите приложение (Harib17d)
5 API (HARIB17E), который не меняется с версией операционной системы
6 названо заявлением (HARIB17F)
7 harib17g (harib17g)
8 Используйте API для отображения строки (harib17h)
День 21 Операционная операционная система
1 Атака на проблему——
2 Напишите приложение на языке C (Harib18b)
3 Защитная операционная система (1) (HARIB18C)
4 Защитная операционная система (2) (HARIB18D)
5 5 ненормальной поддержки (Harib18e)
6 Защитная операционная система (3) (HARIB18F)
7 Защитная операционная система (4) (HARIB18G)
В 22 -й день напишите приложение на языке C
1 Защитная операционная система (5) (Harib19a)
2 Помогите обнаружить ошибки (harib19b)
3 Бесконечное заявление на вход (HARIB19C)
4 отображать строку на языке c (1) (harib19d)
5 отображать строку на языке C (2) (Harib19e)
6 Окно отображения (HARIB19F)
7 Нарисуйте символы и блоки в окне (Harib19g)
День 23, связанный с графической обработкой
1 Напишите Malloc (harib20a)
2 точки рисования (Harib20b)
3 Обновить окно (harib20c)
4 Нарисуйте прямые линии (HARIB20D)
5 окно закрытия (Harib20e)
6 API ввода клавиатуры (HARIB20F)
7 Используйте ввод клавиатуры для воссоздания (Harib20G)
8 конец и закройте окно (Harib20h)
День 24
1 окно -переключатель (1) (harib21a)
2 оконного переключателя (2) (Harib21b)
3 Перемещение окна (Harib21c)
4 Закройте окно мышью (Harib21d)
5 переключить вход в окно приложения (HARIB21E)
6 переключить окно ввода с помощью мыши (HARIB21F)
7 таймер API (Harib21g)
8 Отменить таймер (harib21h)
На 25 -й день добавьте окно командной строки
1 harib22a (harib22a)
2 Добавить больше цвета (1) (harib22b)
3 Добавить больше цвета (2) (harib22c)
4 начальные позиции окна (Harib22d)
5 Добавить окно командной строки (1) (harib22e)
6 Добавить окно командной строки (2) (harib22f)
7 Добавить окно командной строки (3) (harib22g)
8 Добавить окно командной строки (4) (harib22h)
9 становится больше похожей на реальную операционную систему (1) (HARIB22I)
10 становится больше похожей на реальную операционную систему (2) (HARIB22J)
На 26 -й день, чтобы ускорить окно
1 Улучшить скорость движения окна (1) (Harib23a)
2 Улучшить скорость движения окна (2) (Harib23b)
3 Улучшить скорость движения окна (3) (Harib23c)
4 Улучшите скорость движения окна (4) (Harib23d)
5 Откройте только одно окно командной строки (HARIB23E) при запуске
6 Добавьте больше командных строк (Harib23f)
7 Закройте окно командной строки (1) (harib23g)
8 Закройте окно командной строки (2) (harib23h)
9 начало команды (Harib23i)
10 NCST Command (HARIB23J)
День 27 LDT и библиотека
1 Сначала исправим ошибку (harib24a)
2 Выключите окно командной строки (HARIB24B) при запуске приложения
3 Защита приложений (1) (harib24c)
4 Защита заявок (2) (Harib24d)
5 Оптимизировать размер приложения (HARIB24E)
6 Библиотека (Harib24f)
7 Сортировать среду создания (HARIB24G)
День 28 Работа файла и текстовое отображение
1 Alloca (1) (Harib25a)
2 Alloca (2) (Harib25b)
3 API операции файла (HARIB25C)
4 командная строка API (Harib25d)
5 Японский текстовый дисплей (1) (harib25e)
6 -й китайский текстовый дисплей (2) (harib25f)
7 Китайский текстовый дисплей (3) (harib25g)
На 29 -й день сжатия и простых приложений
1 ремонтный ошибка (Harib26a)
2 сжатие файла (HARIB26B)
3 стандартная функция
4 не -ректагольное окно (harib26c)
5 Барбал (Harib26d)
6 Alien Game (Harib26e)
Старший заявление на 30 -й день
1 калькулятор командной строки (Harib27a)
2 текстовый читатель (Harib27b)
3 MML Player (Harib27c)
4 изображения читателя (harib27d)
5 Улучшение IPL (HARIB27E)
6 CD -Rom Startup (Harib27f)
На 31 -й день, после завершения разработки
1 Продолжайте развитие, чтобы полагаться на все усилия
2 о размере операционной системы
3 совета по разработке операционной системы
4 Поделитесь этим с другими
5 о программном обеспечении на диске
6 предложений на открытый исходный код
7 Постхам
8 выпускная церемония
9 Приложение
Чтение в Интернете Чтение некоторых глав
1. Задача переключения задач (Harib12a)
“&Rdquo;
Мульти -task, называемый на английском языке“multitask”, как следует из названия“&Значение rdquo;.Проще говоря, в операционных системах, таких как Windows, несколько приложений работают одновременно (то есть состояние открытия нескольких окон одновременно), называется много -точками.
Для всех, кто живет в современном обществе, эта многократная таска, конечно, является всего лишь вопросом.Например, вы будете писать электронные письма во время воспроизведения программного обеспечения с помощью музыки.Для всех это обычное дело.Но что произойдет, если бы не было задач?Когда вы хотите написать электронные письма, вы должны отключить музыку, которая играет.…&Hellip;
Тем не менее, в прошлом не было никаких мульти -таков.В то время компьютер может запускать только одну программу за раз.
В то время родилась первоначальная многочисленная операционная система, и все чувствовали себя слишком замечательными.С этого момента мы должны подготовиться к этому&Ldquo;”Даже такая небольшая операционная система может выполнять несколько задач, что действительно заставляет людей вздохнуть, что она родилась.
Если мы подумаем об этом, мы обнаружим, что мульти -тара очень удивительна.Если у нас есть несколько процессоров на нашем компьютере, и запуск нескольких программ одновременно является логичным, но даже если у нас есть только один процессор, мы все равно можем выполнить несколько задач.
На самом деле, когда вы надеваете его, эти программы не работают одновременно, но, похоже, они работают одновременно: программа на некоторое время пробегает, программа B работает на некоторое время, а затем это Процедурный C, а затем вернуться в программу A.…&Hellip;“”
Чтобы этот аватар выглядел более идеальным, операционной системе необходимо как можно быстрее переключить задачу.Если вы меняете один раз каждые 10 секунд, вы можете заметить даже глаза человека.Кроме того, если мы отправим ключевую инструкцию в программу C, случилось, что система переключена на программу A в этот момент, и мы должны подождать 20 секунд, чтобы повторно перевести программу C реагировать на ключевую инструкцию.Это действительно безумно (плач).
В общих операционных системах это действие переключения выполняется каждые от 0,01 до 0,03 секунды.Конечно, чем быстрее скорость переключения, тем лучше это заставляет людей чувствовать, что эффект работы одновременно.Однако процессор переключается по программе (мы называем это“&Rdquo;) Само действие занимает определенное количество времени.Если процессор переключает задачу каждые 0,0002 секунды, 50%пропускной способности обработки процессора потребляется самим переключателем задачи.Это означает, что если вы запускаете 2 программы одновременно, скорость каждой программы составляет всего 1/4 во время выполнения.Если это превращается в этот результат, лучше не выполнять больше задач.
Напротив, даже если задача переключается каждые 0,001 секунды, способность обработки процессора потребляется на 10%от переключения задач.Кто -то подумает, что 10%не имеют большого значения?Но если вы посмотрите на то, сколько процессора продается за 10%от 10%стоимости, возможно, вы поймете это,&Ldquo;……&Rdquo;Именно по этой причине нехватка переключения задач составляет около 0,01 секунды.
Что касается проблемы мульти -тара, это почти то же самое.
Когда вы отправляете инструкции в ЦП, процессор сначала запишет все значения в регистре в памяти.Далее, чтобы запустить следующую программу, процессор прочитает значения во всех регистрах из памяти (конечно, адрес этого чтения должен отличаться от написанного адреса, иначе он эквивалентен ничего, что ничего не меняет .Время, которое нам нужно, до того, как переключение задач - это время, потребляемое с помощью операций по написанию и чтению в памяти.
Далее, давайте посмотрим, как контент в реестре записан в память.Следующая структура называется“&Rdquo;TSS имеет 16 и 32 -битные версии.Как следует из названия, TSS также является типом сегмента памяти, который необходимо использовать в GDT.
struct tss32 {
INT BACKLINK, ESP0, SS0, ESP1, SS1, ESP2, SS2, CR3;
Int EIP, EFLAGS, EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI;
Int Es, CS, SS, DS, FS, GS;
int ldtr, iomap;
};
Ссылаясь на определение вышеуказанной структуры, TSS содержит 26 членов Int, на общую сумму 104 байта (техническая информация из ЦП).С самого начала обратной связи до нескольких членов CR3 данные реестра не сохраняются, но информация, связанная с настройкой задачи.Мы будем использовать настройки здесь, в следующей части, но теперь вы можете первым игнорировать их.
Члены второй строки -32 -битные регистры, а третья строка -16 -бит.…&Hellip;Полное имя EIP“extended instruction pointer”, это“&Значение rdquo;.Здесь&Ldquo; расширение&Rdquo;
EIP - это реестр, который должен быть выполнен в памяти.“”.Без этого регистра процессор с плохой памятью забудет, где вы работаете, поэтому программа не будет работать нормально.Каждая инструкция выполняется, значение в регистре EIP будет автоматически накапливаться, что обеспечит тем самым, что адрес памяти следующей инструкции всегда указывает на следующую инструкцию.
Чтобы сказать немного, инструкция JMP на самом деле является командой для назначения регистра EIP.JMP 0x1234, процессор будет интерпретироваться как Mov EIP, 0x1234 и назначить значение EIP.Другими словами, эта инструкция фактически подделала адрес следующей инструкции в памяти ЦП, и ЦП был покрыт.Таким образом, когда ЦП читает следующую инструкцию, он будет читать инструкцию в адреса 0x1234.Видите ли, разве это не эквивалентно прыжке?
Кстати, если вы используете Mov EIP на языке собрания, написание 0x1234 совершит ошибку, так что не попробуйте это хорошо.На языке сборки JMP 0x1234 следует использовать вместо перемещения, 0x1234.
Если значение регистра EIP записано в TSS, то когда вы снова вернетесь к этой задаче, ЦП может понять, где прочитать программу для запуска.
Согласно здравому смыслу, регистр раздела должен быть 16 -битным талантом, но в структуре данных TSS он определяется как тип Int (то есть DWORD).Мы можем представить, что это смело, возможно, люди Intel превратят регистр секции в 32 -бит в будущем, поэтому очень интересно подумать об этом (смеется).
LDTR и IOMAP 4 -й строки также совпадают с членами первой строки, которая является частью настройки задачи, поэтому он не будет записан ЦП при переключении задачи.Может быть, вы думаете, как и первая строка, пока она не очень хорошо!Если вы назначаете значение, задача не может быть переключена нормально.
……