Documenting the programmer environment for

Download Report

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