Главная страница
Навигация по странице:

  • Таблица Структура исполняемого файла (MiniOS.bin) Таблица Multiboot information structure

  • Таблица Содержимое Multiboot information structure в виртуальной машине QEMU

  • Таблица Содержимое GDT

  • 3. 5Исследование готовых файлов 5


    Скачать 438.97 Kb.
    Название3. 5Исследование готовых файлов 5
    Дата12.09.2018
    Размер438.97 Kb.
    Формат файлаdocx
    Имя файла1. MiniOS doc.docx
    ТипДокументы
    #50456
    страница5 из 6
    1   2   3   4   5   6

    6.Диаграммы


    Диаграмма Структура загрузочного образа (hdd.img)

    Сектора

    Название области

    Содержимое

    Описание

    0

    MBR (Master Boot Record)
    Главная загрузочная область

    Код загрузчика (446 байт)

    GRUB stage 1, находится указатель на следующую часть (GRUB stage 1.5)

    Таблица разделов

    Содержит информацию о каждом разделе (у нас один раздел)

    1-62

    Не занятая область (пустая, т.к. начало разделов выравнивается по 64 сектора)

    GRUB stage 1.5 (32 256 байт), содержит драйверы файловой системы и адрес GRUB stage 2 (через указание полного пути и имени файла)

    63-16064

    Первый раздел, форматируется в файловую систему FAT32

    VBR (Volume Boot Record)
    Загрузочный сектор раздела

    Этот сектор отвечает за информацию о размере кластера, тип и размер используемой таблицы расположения файлов.

    Файловая система

    /boot/grub

    GRUB stage 2, содержит стандартный файл конфигурации и прочие модули

    /MiniOS.bin

    Исполняемый файл ядра Mini OS



    Смещение

    Сегмент

    Содержимое

    Раздел

    0x0000




    Заголовок ELF




    0x002a




    Программные заголовки

      1. Первый сегмент, LOAD

      2. Второй сегмент, GNU_STACK







    0x1000

    Первый сегмент

    Структура mboot

    .text

    0x1020

    Исполняемый код, дополнен пустыми командами

    0х3000

    Информация для обработки исключений

    .eh_frame

    0х33bc

    Значения инициализированных переменных

    .data

    0x4000

    Неинициализированные переменные
    (не занимает места, указывается размер в заголовке этого раздела)

    .bss

    0х4000

    Комментарии (версия компилятора)

    .comment

    0x401c

    Таблица названий разделов

    .shstrtab

    0x404c




    Заголовки разделов, каждый по 40 байт, всего 7 (первый пустой)




    Таблица Структура исполняемого файла (MiniOS.bin)

    Таблица Multiboot information structure

    Начало

    Название поля

    Описание

    Условие корректного заполнения

    0

    flags

    Флаги, какие части этой структуры корректно заполнены

    Обязательно присутствует

    4
    8

    mem_lower
    mem_upper

    Количество памяти (в килобайтах)

    Заполнены, если flags[0] (нулевой бит flags) установлен

    12

    boot_device

    С какого диска было загружено ядро ОС

    flags[1]

    16

    cmdline

    Содержит физический адрес командной строки передаваемой ядру

    flags[2]

    20
    24

    mods_count
    mods_addr

    Загруженные модули ядра и их адреса

    flags[3]

    28 - 40

    syms

    Информация о таблице символов ядра

    Или таблице разделов ELF файла ядра

    flags[4] или flags[5]

    44

    48

    mmap_length

    mmap_addr

    Информация о “memory map”

    flags[6]

    52
    56

    drives_length
    drives_addr

    Информация о диске

    flags[7]

    60

    config_table

    Таблица конфигурации, возвращаемая BIOS
    (INT 15, AH=C0h)

    flags[8]

    64

    boot_loader_name

    Адрес названия загрузчика

    flags[9]

    68

    apm_table

    Advanced Power Management

    flags[10]

    72
    76
    80
    82
    84
    86

    vbe_control_info
    vbe_mode_info
    vbe_mode
    vbe_intervace_seg
    vbe_interface_off
    vbe_interface_len

    Информация о поддерживаемых видеорежимах

    flags[11]



    Таблица Содержимое Multiboot information structure в виртуальной машине QEMU








    Таблица Содержимое GDT

    Смещение

    Base

    Limit

    Access

    Granularity

    Описание сегмента

    0x0

    0x0

    0x0

    0

    0x0

    Пустая запись

    0x8

    0x000000000

    0xFFFFFFFF

    DPL=0 Type=Code

    0xCF

    Кода в режиме ядра

    0x10

    0x000000000

    0xFFFFFFFF

    DPL=0 Type=Data

    0xCF

    Данные в режиме ядра

    0x18

    0x000000000

    0xFFFFFFFF

    DPL=3 Type=Code

    0xCF

    Код в режиме пользователя

    0x20

    0x000000000

    0xFFFFFFFF

    DPL=3 Type=Data

    0xCF

    Данные в режиме пользователя



    Описание полей:

    • У нас nonGate
      http://www.iakovlev.org/index.html?p=8806&m=1&l1=7

    • Описание бита гранулярности
      http://www.wasm.ru/article/190

    • И здесь

    http://habrahabr.ru/post/118881/

    1   2   3   4   5   6


    написать администратору сайта