Yury Chebiryak [email protected]

28
Документирование среды программирования для операционной системы L4Ka (Documenting the programmer environment for L4ka) Yury Chebiryak [email protected] University of Saarland Department of Computer Science Хабаровский Государственный Технический Университет Институт Информационных Технологий (Khabarovsk State University of Technology) (Institute of Information Technologies)

description

Хабаровский Государственный Технический Университет Институт Информационных Технологий ( Khabarovsk State University of Technology) (Institute of Information Technologies). University of Saarland Department of Computer Science. - PowerPoint PPT Presentation

Transcript of Yury Chebiryak [email protected]

Page 1: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

Документирование среды программирования для

операционной системы L4Ka(Documenting the programmer environment for L4ka)

Yury [email protected]

University of SaarlandDepartment of Computer Science

Хабаровский Государственный Технический Университет

Институт Информационных Технологий(Khabarovsk State University of Technology)

(Institute of Information Technologies)

Page 2: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

2

Цель работы

Главными задачами диплома являются:

Работа раскрывает два аспекта: управление памятью (memory management) и взаимодействие между процессами (ВМП) (IPC – inter-process communication)

документирование системных вызовов (system calls) среды программирования операционной системы L4Ka

создание полноценного руководства программиста

расширение функциональности менеджера памяти σ0

написание процедуры обработки аппаратных прерываний (interrupt service routine)

Page 3: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

3

Управление памятью

выделение (mapping) регионов физической памяти

выделение/освобождение (unmapping) и передача (granting) регионов памяти между задачами (tasks)

Page 4: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

4

Взаимодействие между процессами

написание сервиса для аппаратных прерываний (interrupt service routine)

расширение функциональности менеджера памяти σ0

обмен сообщениями между задачами (tasks) и нитями (threads)

Page 5: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

5

Операционные системы (ОС)

ОС – это программа, предназначенная для управления всеми ресурсами вычислительной машины с целью предоставления возможности пользователям эффективно решать прикладные задачи

Классификация по структуре ядра (kernel):

операционные системы без ядра (MS-DOS)

операционные системы с макро-ядром (Unix, Windows)

операционные системы с микро-ядром (L4, Mac OS X, Mach, Nomad OS)

Page 6: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

6

Схема ОС с макро-ядром

VFS, Вычислительная сеть(VFS, Network)

Файловая система, ВМП(File System, IPC)

Планировщик(Scheduler)

Драйверы устройств, Блокуправления памятью

(Device drivers, MMU)

Приложение(application)

Процессор, устройства(CPU, Hardware devices)

Уровеньпользователя

(user mode)

Уровень ядра(kernel mode)

Аппаратура(hardware)

Page 7: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

7

Схема ОС с микро-ядром

ВМП(IPC)

безопасность(security)

планировщик(kernel-levelscheduling)

виртуальнаяпамять

(virtual memory)

нити(threads)

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

(file system)

сеть(network)

планировщик(user-levelscheduling)

драйверыустройств

(device drivers)

ЯДРО(KERNEL)

ОС №1 ОС №2 ...

Page 8: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

8

L4Ka – ОС с микро-ядромОсновные механизмы: нити (threads) – процессы, имеющие единое адресное

пространство и выполняющиеся параллельно ВМП (IPC) – фундаментальный способ взаимодействия

между нитями адресное пространство (address space) – защищенный набор

преобразований виртуальных адресов в физические планирование машинного времени (scheduling) – обеспечи-

вает контроль над порядком и длительностью выполнениянитей

Системные вызовы:

7 системных вызовов для изменения состояния системы

Page 9: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

9

Адресное пространство (АП)АП – это набор преобразований (translations) из виртуальных адресов в физические; содержит все регионы памяти доступные для нити напрямую.

физическая память (physical memory)

адресное пространство А (user address space A)

Page 10: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

10

Адресное пространство (2)корневой менеджер памяти (root pager)

промежуточный менеджер памяти (controller pager)

адресное пространство A адресное пространство B

MAP MAP

GRANTMAP

map – регион памятив общем владении

grant – регион памятипередается с потерейправ

Page 11: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

11

Адресное пространство (3)

Задача – набор нитей, использующих адресноепространство совместно (shared)

Нить определяется: используемым адресным пространством уникальным идентификатором (unique ID) набор регистров (register set) менеджер памяти (pager – page fault handler)

Менеджер памяти – нить, которая обрабатывает ошибки из-за отсутствия страницы памяти (page faults)

σ0 – корневой менеджер памяти, владеющий всей памятью после запуска L4Ka

Page 12: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

12

Менеджер памяти

ЯДРО (KERNEL)

pager

нить 1(thread 1)

4. менеджерпамяти

отвечает наpage fault

3. менеджер памятипредпринимает

соответствующиедействия

2. ядро сообщаетменеджеру памяти

используя ВМП

1. нитьгенерирует page fault

нить 2(thread 2)

нить 3(thread 3)

Page 13: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

13

Корневой менеджер памяти σ0

клиент (client) клиент (client)

промежуточный менеджер памяти(intermediate pager)

sigma0

физическая память (physical memory)

идемпотентноепреобразование

(idempotenttranslation)

Page 14: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

14

Планирование машинного времени

255 254 0…...

EMPTY

Page 15: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

15

Типы данных OC L4KaОсновные типы данных: уникальный идентификатор (UID – unique ID) flex-pages тайм-аут (timeout) результат ВМП (IPC result status) параметр планирования (schedule parameter word)

Page 16: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

16

Уникальный идентификатор

Нить

Задача

Прерывание

Нулевой

Неверный

09101516232431

0(32)

0xFFFFFFFF(32)

task(8) ver(10)thread(6)~(8)

task(8) ver(10)0(6)~(8)

intr + 1(8)0(24)

Thread id

Task id

Interrupt id

NIL id

Invalid id

Page 17: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

17

Flex-pagesFlex-page – это непрерывные регионы адресного пространства необходимы для операций map и grant передаются как часть ВМП сообщений (IPC messages) имеют размер 2s (для х86 архитектуры s≥12) базовый адрес b выровнен по значению 2s

Fpage(b, 2s) ~~0(4) s(6)b/4096(20)

078111231 12

Fpage(b, 232 - K ) ~~0(4) 32(6)0(20)

078111231 12

Page 18: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

18

Тайм-аут (timeout)

pr (4) es (4) er (4)ms (8)Timeout ps (4)mr (8)

011121516232431 78 34

Тайм-аут используется для контроля ВМП.В 32-х битном поле определены четыре тайм-аута.

Page 19: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

19

Тайм-аут (timeout) (2)

Page 20: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

20

Результат одной коммуникации между нитями возвращается в 32х-битном поле.

Поле «mwords» говорит о числе принятых 32х-битных слов.

Поле «strings» говорит о числе принятых строк.

Младшие восемь бит представляют «код условия» (condition code), в котором закодирован код ошибки и тип сообщения.

Результат ВМП (IPC result status)

strings(5)Result msg_dope cc(8)mwords(19)

078121331

mriКод условия (Condition code) dec(4)

017 2346 5

Page 21: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

21

В L4Ka имеется только один параметр для планирования. Он содержит поля в которых закодирован приоритет и длина кванта времени (в соответствии со спецификацией тайм-аута).

Параметр планирования (schedule parameter word)

prio(8)Param word

0781516232431

et (4) small(8)0 (4)mt (8)

1920

Page 22: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

22

Системный вызов l4_myself Системный вызов возвращает уникальный идентификатор

текущей нити.

Page 23: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

23

Системный вызов l4_unmapРегион памяти, описанный входным параметром fpage,

будет освобожден (удален из адресного пространства нити).

Page 24: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

24

Системный вызов l4_thread_ex_regs

С помощью этого системного вызова можно получить илиизменить регистры EIP и ESP набора регистров нити.

Таким образом, можно создать новую нить, указав в качествевходных параметров значения для EIP, ESP, уникальный идентификатор менеджера памяти.

Page 25: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

25

Системный вызов l4_thread_switch

Вызывающая нить добровольно освобождает ресурсы процессора. Планировщик выбирает следующую нить.

Page 26: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

26

Системный вызов l4_thread_schedule

Изменение значений приоритета и длины кванта временинити производится посредством передаче в качествевходного параметра структуры schedule param word.

Системный вызов также возвращает время процессора вмикросекундах, израсходованное нитью.

Page 27: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

27

Системный вызов l4_task_newЭтот системный вызов удаляет и/или создает задачу.Удаление задачи означает удаление адресного пространства

задачи и всех ее нитей.Задачи могут быть созданы активными или пассивными.При создании активной задачи создается новое адресное

пространство вместе с полным набором нитей (64).Пассивная задача пуста – не поглощает ресурсов процессора,

не имеет ни адресного пространства, ни нитей,коммуникация с ней невозможна.

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

Page 28: Yury Chebiryak urriy@wjpserver.cs.uni-sb.de

28

Системный вызов l4_ipc_call

Основной системный вызов для ВМП и синхронизации.

Вызов предоставляет несколько прототипов длякоммуникации:

• l4_ipc_send – послать сообщение другой нити• l4_ipc_receive – получить сообщение от указанной нити• l4_ipc_reply_and_wait – ответить на сообщение указанной

нити и ждать сообщения от произвольной нити• l4_ipc_wait – ждать сообщения от произвольной нити

Вышеприведенные примитивы позволяют реализоватьразличные схемы взаимодействия (например, клиент-сервер).