Transcript Documenting the programmer environment for
Slide 1
Хабаровский Государственный Технический Университет
Институт Информационных Технологий
(Khabarovsk State University of Technology)
(Institute of Information Technologies)
University of Saarland
Department of Computer Science
Документирование среды
программирования для
операционной системы L4Ka
(Documenting the programmer environment for L4ka)
Yury Chebiryak
[email protected]
Slide 2
Цель работы
Главными задачами диплома являются:
документирование системных вызовов (system calls)
среды программирования операционной
системы L4Ka
создание полноценного руководства программиста
расширение функциональности менеджера памяти σ0
написание процедуры обработки аппаратных
прерываний (interrupt service routine)
Работа раскрывает два аспекта: управление памятью
(memory management) и взаимодействие между процессами
(ВМП) (IPC – inter-process communication)
2
Slide 3
Управление памятью
выделение (mapping) регионов физической памяти
выделение/освобождение (unmapping) и
передача (granting) регионов памяти
между задачами (tasks)
3
Slide 4
Взаимодействие между процессами
обмен сообщениями между задачами (tasks)
и нитями (threads)
написание сервиса для аппаратных
прерываний (interrupt service routine)
расширение функциональности
менеджера памяти σ0
4
Slide 5
Операционные системы (ОС)
ОС – это программа, предназначенная для управления
всеми ресурсами вычислительной машины с целью
предоставления возможности пользователям эффективно
решать прикладные задачи
Классификация по структуре ядра (kernel):
операционные системы без ядра (MS-DOS)
операционные системы с макро-ядром (Unix, Windows)
операционные системы с микро-ядром (L4, Mac OS X,
Mach, Nomad OS)
5
Slide 6
Схема ОС с макро-ядром
Уровень
пользователя
(user mode)
Приложение
(application)
VFS, Вычислительная сеть
(VFS, Network)
Файловая система, ВМП
Уровень ядра
(kernel mode)
(File System, IPC)
Планировщик
(Scheduler)
Драйверы устройств, Блок
управления памятью
(Device drivers, MMU)
Аппаратура
Процессор, устройства
(hardware)
(CPU, Hardware devices)
6
Slide 7
Схема ОС с микро-ядром
ЯДРО
(KERNEL)
безопасность
нити
(security)
ВМП
(IPC)
ОС №1
планировщик
(user-level
scheduling)
(threads)
виртуальная
память
планировщик
(kernel-level
scheduling)
(virtual memory)
драйверы
устройств
ОС №2
...
(device drivers)
сеть
файловая
система
(network)
(file system)
7
Slide 8
L4Ka – ОС с микро-ядром
Основные механизмы:
нити (threads) – процессы, имеющие единое адресное
пространство и выполняющиеся параллельно
ВМП (IPC) – фундаментальный способ взаимодействия
между нитями
адресное пространство (address space) – защищенный набор
преобразований виртуальных адресов в физические
планирование машинного времени (scheduling) – обеспечивает контроль над порядком и длительностью выполнения
нитей
Системные вызовы:
7 системных вызовов для изменения состояния системы
8
Slide 9
Адресное пространство (АП)
АП – это набор преобразований (translations) из
виртуальных адресов в физические; содержит все регионы
памяти доступные для нити напрямую.
физическая память (physical memory)
адресное пространство А (user address space A)
9
Slide 10
Адресное пространство (2)
корневой менеджер памяти (root pager)
MAP
map – регион памяти
в общем владении
grant – регион памяти
передается с потерей
прав
MAP
промежуточный менеджер памяти (controller pager)
MAP
адресное пространство A
GRANT
адресное пространство B
10
Slide 11
Адресное пространство (3)
Задача – набор нитей, использующих адресное
пространство совместно (shared)
Нить определяется:
используемым адресным пространством
уникальным идентификатором (unique ID)
набор регистров (register set)
менеджер памяти (pager – page fault handler)
Менеджер памяти – нить, которая обрабатывает
ошибки из-за отсутствия страницы памяти (page faults)
σ0 – корневой менеджер памяти, владеющий всей
памятью после запуска L4Ka
11
Slide 12
Менеджер памяти
ЯДРО (KERNEL)
2. ядро сообщает
менеджеру памяти
используя ВМП
3. менеджер памяти
предпринимает
соответствующие
действия
4. менеджер
памяти
отвечает на
page fault
нить 2
1. нить
генерирует
page fault
pager
нить 1
(thread 1)
нить 3
(thread 3)
(thread 2)
12
Slide 13
Корневой менеджер памяти σ0
клиент (client)
клиент (client)
промежуточный менеджер памяти
(intermediate pager)
идемпотентное
преобразование
(idempotent
translation)
sigma0
физическая память (physical memory)
13
Slide 14
Планирование машинного времени
255
254
…...
0
EMPTY
14
Slide 15
Типы данных OC L4Ka
Основные типы данных:
уникальный идентификатор (UID – unique ID)
flex-pages
тайм-аут (timeout)
результат ВМП (IPC result status)
параметр планирования (schedule parameter word)
15
Slide 16
Уникальный идентификатор
31
Нить
Thread id
Задача
Task id
Прерывание
Interrupt id
Нулевой
NIL id
Неверный
Invalid id
24 23
16 15
10
9
0
~(8)
task(8)
thread(6)
ver(10)
~(8)
task(8)
0(6)
ver(10)
0(24)
intr + 1(8)
0(32)
0xFFFFFFFF(32)
16
Slide 17
Flex-pages
Flex-page – это непрерывные регионы адресного пространства
необходимы для операций map и grant
передаются как часть ВМП сообщений (IPC messages)
имеют размер 2s (для х86 архитектуры s≥12)
базовый адрес b выровнен по значению 2s
31
Fpage(b, 2s)
12 11
b/4096(20)
31
Fpage(b, 232 - K )
8
0(4)
12 11
0(20)
7
s(6)
8
0(4)
2
7
0
~ ~
2
32(6)
1
1
0
~ ~
17
Slide 18
Тайм-аут
(timeout)
Тайм-аут используется для контроля ВМП.
В 32-х битном поле определены четыре тайм-аута.
31
Timeout
24 23
mr (8)
16 15
ms (8)
12 11
ps (4)
pr (4)
8
7
4
es (4)
3
0
er (4)
18
Slide 19
Тайм-аут
(timeout)
(2)
19
Slide 20
Результат ВМП
(IPC result status)
Результат одной коммуникации между нитями возвращается в
32х-битном поле.
Поле «mwords» говорит о числе принятых 32х-битных слов.
Поле «strings» говорит о числе принятых строк.
Младшие восемь бит представляют «код условия» (condition
code), в котором закодирован код ошибки и тип сообщения.
31
Result msg_dope
13 12
mwords(19)
8
0
strings(5)
7
Код условия (Condition code)
7
6
cc(8)
5
ec(4)
4
3
2
1
0
i r m d
20
Slide 21
Параметр планирования
(schedule parameter word)
В L4Ka имеется только один параметр для планирования.
Он содержит поля в которых закодирован приоритет и длина
кванта времени (в соответствии со спецификацией таймаута).
31
Param word
24 23
mt (8)
20 19
et (4)
16 15
0 (4)
8
small(8)
7
0
prio(8)
21
Slide 22
Системный вызов l4_myself
Системный вызов возвращает уникальный идентификатор
текущей нити.
22
Slide 23
Системный вызов l4_unmap
Регион памяти, описанный входным параметром fpage,
будет освобожден (удален из адресного пространства нити).
23
Slide 24
Системный вызов l4_thread_ex_regs
С помощью этого системного вызова можно получить или
изменить регистры EIP и ESP набора регистров нити.
Таким образом, можно создать новую нить, указав в качестве
входных параметров значения для EIP, ESP, уникальный
идентификатор менеджера памяти.
24
Slide 25
Системный вызов l4_thread_switch
Вызывающая нить добровольно освобождает ресурсы
процессора. Планировщик выбирает следующую нить.
25
Slide 26
Системный вызов l4_thread_schedule
Изменение значений приоритета и длины кванта времени
нити производится посредством передаче в качестве
входного параметра структуры schedule param word.
Системный вызов также возвращает время процессора в
микросекундах, израсходованное нитью.
26
Slide 27
Системный вызов l4_task_new
Этот системный вызов удаляет и/или создает задачу.
Удаление задачи означает удаление адресного пространства
задачи и всех ее нитей.
Задачи могут быть созданы активными или пассивными.
При создании активной задачи создается новое адресное
пространство вместе с полным набором нитей (64).
Пассивная задача пуста – не поглощает ресурсов процессора,
не имеет ни адресного пространства, ни нитей,
коммуникация с ней невозможна.
Пассивная задача по сути не существует и представляет собой
лишь возможность, право создать активную задачу с
данным уникальным идентификатор.
27
Slide 28
Системный вызов l4_ipc_call
Основной системный вызов для ВМП и синхронизации.
Вызов предоставляет несколько прототипов для
коммуникации:
• l4_ipc_send – послать сообщение другой нити
• l4_ipc_receive – получить сообщение от указанной нити
• l4_ipc_reply_and_wait – ответить на сообщение указанной
нити и ждать сообщения от произвольной нити
• l4_ipc_wait – ждать сообщения от произвольной нити
Вышеприведенные примитивы позволяют реализовать
различные схемы взаимодействия (например, клиент-сервер).
28
Хабаровский Государственный Технический Университет
Институт Информационных Технологий
(Khabarovsk State University of Technology)
(Institute of Information Technologies)
University of Saarland
Department of Computer Science
Документирование среды
программирования для
операционной системы L4Ka
(Documenting the programmer environment for L4ka)
Yury Chebiryak
[email protected]
Slide 2
Цель работы
Главными задачами диплома являются:
документирование системных вызовов (system calls)
среды программирования операционной
системы L4Ka
создание полноценного руководства программиста
расширение функциональности менеджера памяти σ0
написание процедуры обработки аппаратных
прерываний (interrupt service routine)
Работа раскрывает два аспекта: управление памятью
(memory management) и взаимодействие между процессами
(ВМП) (IPC – inter-process communication)
2
Slide 3
Управление памятью
выделение (mapping) регионов физической памяти
выделение/освобождение (unmapping) и
передача (granting) регионов памяти
между задачами (tasks)
3
Slide 4
Взаимодействие между процессами
обмен сообщениями между задачами (tasks)
и нитями (threads)
написание сервиса для аппаратных
прерываний (interrupt service routine)
расширение функциональности
менеджера памяти σ0
4
Slide 5
Операционные системы (ОС)
ОС – это программа, предназначенная для управления
всеми ресурсами вычислительной машины с целью
предоставления возможности пользователям эффективно
решать прикладные задачи
Классификация по структуре ядра (kernel):
операционные системы без ядра (MS-DOS)
операционные системы с макро-ядром (Unix, Windows)
операционные системы с микро-ядром (L4, Mac OS X,
Mach, Nomad OS)
5
Slide 6
Схема ОС с макро-ядром
Уровень
пользователя
(user mode)
Приложение
(application)
VFS, Вычислительная сеть
(VFS, Network)
Файловая система, ВМП
Уровень ядра
(kernel mode)
(File System, IPC)
Планировщик
(Scheduler)
Драйверы устройств, Блок
управления памятью
(Device drivers, MMU)
Аппаратура
Процессор, устройства
(hardware)
(CPU, Hardware devices)
6
Slide 7
Схема ОС с микро-ядром
ЯДРО
(KERNEL)
безопасность
нити
(security)
ВМП
(IPC)
ОС №1
планировщик
(user-level
scheduling)
(threads)
виртуальная
память
планировщик
(kernel-level
scheduling)
(virtual memory)
драйверы
устройств
ОС №2
...
(device drivers)
сеть
файловая
система
(network)
(file system)
7
Slide 8
L4Ka – ОС с микро-ядром
Основные механизмы:
нити (threads) – процессы, имеющие единое адресное
пространство и выполняющиеся параллельно
ВМП (IPC) – фундаментальный способ взаимодействия
между нитями
адресное пространство (address space) – защищенный набор
преобразований виртуальных адресов в физические
планирование машинного времени (scheduling) – обеспечивает контроль над порядком и длительностью выполнения
нитей
Системные вызовы:
7 системных вызовов для изменения состояния системы
8
Slide 9
Адресное пространство (АП)
АП – это набор преобразований (translations) из
виртуальных адресов в физические; содержит все регионы
памяти доступные для нити напрямую.
физическая память (physical memory)
адресное пространство А (user address space A)
9
Slide 10
Адресное пространство (2)
корневой менеджер памяти (root pager)
MAP
map – регион памяти
в общем владении
grant – регион памяти
передается с потерей
прав
MAP
промежуточный менеджер памяти (controller pager)
MAP
адресное пространство A
GRANT
адресное пространство B
10
Slide 11
Адресное пространство (3)
Задача – набор нитей, использующих адресное
пространство совместно (shared)
Нить определяется:
используемым адресным пространством
уникальным идентификатором (unique ID)
набор регистров (register set)
менеджер памяти (pager – page fault handler)
Менеджер памяти – нить, которая обрабатывает
ошибки из-за отсутствия страницы памяти (page faults)
σ0 – корневой менеджер памяти, владеющий всей
памятью после запуска L4Ka
11
Slide 12
Менеджер памяти
ЯДРО (KERNEL)
2. ядро сообщает
менеджеру памяти
используя ВМП
3. менеджер памяти
предпринимает
соответствующие
действия
4. менеджер
памяти
отвечает на
page fault
нить 2
1. нить
генерирует
page fault
pager
нить 1
(thread 1)
нить 3
(thread 3)
(thread 2)
12
Slide 13
Корневой менеджер памяти σ0
клиент (client)
клиент (client)
промежуточный менеджер памяти
(intermediate pager)
идемпотентное
преобразование
(idempotent
translation)
sigma0
физическая память (physical memory)
13
Slide 14
Планирование машинного времени
255
254
…...
0
EMPTY
14
Slide 15
Типы данных OC L4Ka
Основные типы данных:
уникальный идентификатор (UID – unique ID)
flex-pages
тайм-аут (timeout)
результат ВМП (IPC result status)
параметр планирования (schedule parameter word)
15
Slide 16
Уникальный идентификатор
31
Нить
Thread id
Задача
Task id
Прерывание
Interrupt id
Нулевой
NIL id
Неверный
Invalid id
24 23
16 15
10
9
0
~(8)
task(8)
thread(6)
ver(10)
~(8)
task(8)
0(6)
ver(10)
0(24)
intr + 1(8)
0(32)
0xFFFFFFFF(32)
16
Slide 17
Flex-pages
Flex-page – это непрерывные регионы адресного пространства
необходимы для операций map и grant
передаются как часть ВМП сообщений (IPC messages)
имеют размер 2s (для х86 архитектуры s≥12)
базовый адрес b выровнен по значению 2s
31
Fpage(b, 2s)
12 11
b/4096(20)
31
Fpage(b, 232 - K )
8
0(4)
12 11
0(20)
7
s(6)
8
0(4)
2
7
0
~ ~
2
32(6)
1
1
0
~ ~
17
Slide 18
Тайм-аут
(timeout)
Тайм-аут используется для контроля ВМП.
В 32-х битном поле определены четыре тайм-аута.
31
Timeout
24 23
mr (8)
16 15
ms (8)
12 11
ps (4)
pr (4)
8
7
4
es (4)
3
0
er (4)
18
Slide 19
Тайм-аут
(timeout)
(2)
19
Slide 20
Результат ВМП
(IPC result status)
Результат одной коммуникации между нитями возвращается в
32х-битном поле.
Поле «mwords» говорит о числе принятых 32х-битных слов.
Поле «strings» говорит о числе принятых строк.
Младшие восемь бит представляют «код условия» (condition
code), в котором закодирован код ошибки и тип сообщения.
31
Result msg_dope
13 12
mwords(19)
8
0
strings(5)
7
Код условия (Condition code)
7
6
cc(8)
5
ec(4)
4
3
2
1
0
i r m d
20
Slide 21
Параметр планирования
(schedule parameter word)
В L4Ka имеется только один параметр для планирования.
Он содержит поля в которых закодирован приоритет и длина
кванта времени (в соответствии со спецификацией таймаута).
31
Param word
24 23
mt (8)
20 19
et (4)
16 15
0 (4)
8
small(8)
7
0
prio(8)
21
Slide 22
Системный вызов l4_myself
Системный вызов возвращает уникальный идентификатор
текущей нити.
22
Slide 23
Системный вызов l4_unmap
Регион памяти, описанный входным параметром fpage,
будет освобожден (удален из адресного пространства нити).
23
Slide 24
Системный вызов l4_thread_ex_regs
С помощью этого системного вызова можно получить или
изменить регистры EIP и ESP набора регистров нити.
Таким образом, можно создать новую нить, указав в качестве
входных параметров значения для EIP, ESP, уникальный
идентификатор менеджера памяти.
24
Slide 25
Системный вызов l4_thread_switch
Вызывающая нить добровольно освобождает ресурсы
процессора. Планировщик выбирает следующую нить.
25
Slide 26
Системный вызов l4_thread_schedule
Изменение значений приоритета и длины кванта времени
нити производится посредством передаче в качестве
входного параметра структуры schedule param word.
Системный вызов также возвращает время процессора в
микросекундах, израсходованное нитью.
26
Slide 27
Системный вызов l4_task_new
Этот системный вызов удаляет и/или создает задачу.
Удаление задачи означает удаление адресного пространства
задачи и всех ее нитей.
Задачи могут быть созданы активными или пассивными.
При создании активной задачи создается новое адресное
пространство вместе с полным набором нитей (64).
Пассивная задача пуста – не поглощает ресурсов процессора,
не имеет ни адресного пространства, ни нитей,
коммуникация с ней невозможна.
Пассивная задача по сути не существует и представляет собой
лишь возможность, право создать активную задачу с
данным уникальным идентификатор.
27
Slide 28
Системный вызов l4_ipc_call
Основной системный вызов для ВМП и синхронизации.
Вызов предоставляет несколько прототипов для
коммуникации:
• l4_ipc_send – послать сообщение другой нити
• l4_ipc_receive – получить сообщение от указанной нити
• l4_ipc_reply_and_wait – ответить на сообщение указанной
нити и ждать сообщения от произвольной нити
• l4_ipc_wait – ждать сообщения от произвольной нити
Вышеприведенные примитивы позволяют реализовать
различные схемы взаимодействия (например, клиент-сервер).
28