Описание тега osdev
Разработка операционных систем: ядро, оболочка, сеть, кросс-компиляция и т. Д.
1
ответ
Ограничения реального режима в части разработки драйверов устройств
Мой запрос касается разработки драйвера устройства. Если я хочу использовать реальный режим для создания игрушечной ОС, но решаю написать сетевой стек / набор сетевых драйверов, достаточно ли места для этого? Должен ли я сделать как DOS и перейти в …
28 май '15 в 19:01
1
ответ
CPUID на нескольких ядрах /NUMA
Я работаю над обнаружением процессора и общим кодом обнаружения среды для моей хобби ОС. Есть ли когда-нибудь случай, когда CPUID нужно вызывать несколько раз? То есть, если система имеет несколько ядер, должна ли ОС вызывать CPUID на каждом ядре? Т…
19 дек '11 в 22:00
1
ответ
Ошибка синтаксиса встроенного ассемблера
Я получал какую-то странную ошибку при разработке своей операционной системы. Я делал драйвер ввода-вывода, используя outb а также inb, мой outb Функция выглядит следующим образом: static inline void outb(uint16_t port, uint8_t val) { __asm("outb %0…
09 фев '16 в 08:52
1
ответ
Операция ввода-вывода с отображением в память (в процессоре Intel) с использованием команды ввода / вывода... все еще кэшироваться?
Будет ли кэшированная операция ввода-вывода в память (в процессоре Intel) по-прежнему кэшироваться, если диапазон адресов сопоставленного ввода-вывода печатается как запись с обратной записью (WB), даже если я использую инструкцию ввода / вывода? РЕ…
15 янв '11 в 06:51
1
ответ
От каких стандартных функций C зависит libgcc?
У меня есть кросс-компилятор с libgcc, скомпилированный для целевой платформы, но никакой стандартной библиотеки C нет. От каких функций зависит libgcc и где я могу найти эту информацию?
20 апр '14 в 19:04
0
ответов
Intel VT-x: физическое и линейное адресное пространство не совпадает
В настоящее время я разрабатываю ядро x86-64 с нуля для исследовательских целей. Цель состоит в том, чтобы виртуализировать мою собственную ОС с использованием технологии виртуализации Intel (VT-x). Однако я наткнулся на чрезвычайно странную пробл…
22 окт '18 в 22:48
1
ответ
Чтение сектора из-за сбоя диска
Я пытаюсь сделать очень простой двухэтапный загрузчик и сталкиваюсь с проблемами при чтении второго этапа. Когда я пытаюсь использовать int 13h с ah = 2, Прерывание завершается ошибкой с кодом возврата 1 (недопустимая команда). Я компилирую с nasm и…
05 май '18 в 20:57
1
ответ
Как настроить новый сегмент стека для программ в x86, чтобы отделить от моего ядра?
Я занимаюсь разработкой 32-битной ОС, и мне нужно иметь возможность настраивать НОВЫЕ сегменты данных / сегменты стека для программ. Однако я не могу найти ЛЮБОЙ хорошей информации о том, как использовать эти регистры сегментов в защищенном режиме. …
11 янв '13 в 23:36
2
ответа
Ядро не загружается по правильному адресу
Хорошо, я вырвал оставшиеся волосы у меня с этой проблемой... По сути, я пытаюсь разработать очень простую хобби ОС. Операционная система будет работать на платформе X86 без дискеты FAT12. Прежде чем протестировать его на своем компьютере, я создаю …
31 июл '13 в 05:20
0
ответов
Как установить 16-битную версию libcc
$uname -i x86_64 $ uname -r 4.15.0-041500-generic Я пытаюсь скомпилировать, что получает карту памяти системы. OSDev показывает некоторый код, как это можно сделать. Код выглядит следующим образом: // running in real mode may require: __asm__(".code…
31 май '18 в 12:55
3
ответа
Вычислить следующий кластер
Недавно я прочитал несколько хороших руководств по разработке ОС на BrokenThorn: это хорошая серия OSDev. У меня возникли проблемы с пониманием идеи "вычисления следующего кластера", когда я хочу загрузить второй этап нашего загрузчика. Код является…
12 дек '12 в 15:59
1
ответ
Вызов прерываний с использованием регистра
Я пытаюсь вызвать некоторые прерывания из защищенного режима в C++, возвращаясь в реальный режим, вызывая прерывание и возвращаясь обратно в защищенный режим. Я получаю ошибку: C2400: неправильный тип операнда Я пытаюсь это исправить, но я не знаю, …
19 май '16 в 17:33
1
ответ
Сборка Почему, когда я изменяю код, результат не загружается
Я разрабатываю операционную систему на ассемблере. Во время разработки я изменяю небольшую часть кода, и выходной файл не является загрузочным. Есть код: BITS 16 start: mov ax, 07C0h ; Set up 4K stack space after this bootloader add ax, 288 ; (4096 …
15 дек '18 в 19:03
0
ответов
Загрузка с USB-накопителя с QEMU
Я играю с моей хобби операционной системой. Он имеет простой загрузчик на основе BIOS, который использует int 0x13; Ах =0x42 для загрузки данных с USB-накопителя. Мой загрузчик отлично читает сектора, если я запускаю qemu следующим образом: $ qemu-s…
29 июн '17 в 15:46
1
ответ
Адресация в защищенном режиме
Я пробую учебники по разработке загрузчиков. Я могу читать загрузчик stage2, используя соглашения FAT12. Сейчас я пытаюсь загрузить ядро в реальном режиме, а затем скопировать его по адресу 0x0100000. Я получаю тройную ошибку при копировании + пер…
03 фев '18 в 16:48
1
ответ
Сборка INT 0x13: ошибка при попытке чтения с диска
Всякий раз, когда я запускаю это в QEMU, я, похоже, не получаю сообщение об ошибке, но сообщение не выводится на экран, поэтому я не уверен, что на самом деле происходит, чего я не вижу. Вот мой код: [org 0x7c00] mov bp, 0x8000 mov sp, bp mov si, na…
25 июл '15 в 05:25
0
ответов
Write28 Dosent всегда записывать на жесткий диск / диск
У меня проблема с этой функцией Write28(), которая записывает в драйвер ATA (драйвер жесткого диска) в режиме 28-битного PIO. Ну, во-первых, вы можете увидеть в моем kernel.C++ здесь, я называю это: ret_chr_arr file_contents=filealgo.File_to_char(sa…
24 сен '16 в 03:28
1
ответ
Не могу показать верхнюю и нижнюю память
ОС Dosent по какой-то причине отображает верхнюю и нижнюю память. Как вы можете видеть здесь, в Викитете Обнаружения Памяти: http://wiki.osdev.org/Detecting_Memory_(x86), там написано Обратитесь к mbd->mem_lower для обычной памяти (например, физичес…
22 авг '16 в 03:43
0
ответов
Странное поведение компоновщика: перемещение сокращено до нужного
У меня есть скрипт компоновщика для ядра с двумя абсолютными символами: _kernel_start а также _kernel_end, Однако я получаю ошибку перемещения компоновщика только для _kernel_end: In function `kernel::mem::mm::setup_memorymap': /home/virtlink/kernel…
08 апр '15 в 10:11
0
ответов
Перезагрузите цикл при включении прерываний с помощью sti
Всякий раз, когда я пытаюсь включить прерывания, используя sti По команде, эмулятор мгновенно перезагружается. Я выполняю следующий код в защищенном режиме при загрузке: void* idt = (void*) 0x00000; struct { uint16_t length; void* base; } __attribut…
13 май '17 в 08:45