HelenOS ARM port. Pavel Jančík Michal Kebrt Petr Štěpán



Podobné dokumenty
Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Metody připojování periferií BI-MPP Přednáška 2

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Operační systémy. Přednáška 8: Správa paměti II

Architektura procesoru ARM

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Pamět ová hierarchie, virtuální pamět. doc. Ing. Róbert Lórencz, CSc.

Systém adresace paměti

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

6. Procesory jiných firem... 1

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Metody připojování periferií

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Virtualizace. Lukáš Krahulec, KRA556

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

PROCESOR. Typy procesorů

09. Memory management. ZOS 2006, L.Pešička

Přidělování paměti II Mgr. Josef Horálek

Miroslav Tichý, tic136

Memory Management vjj 1

Přednáška - A3B38MMP Procesory s jádrem ARM. A3B38MMP 2015, J. Fischer, kat. měření, ČVUT-FEL Praha 1

2010/2011 ZS P i r i nc č py po ít č čů a PAMĚŤOVÝ ĚŤ SUBSYSTÉM z pohledu OS OS

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Operační systémy. Přednáška 1: Úvod

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Procesor z pohledu programátora

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:

MSP 430F1611. Jiří Kašpar. Charakteristika

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

Operační systémy MIPS, Kalisto a správa paměti

Memory Management vjj 1

Procesy a vlákna (Processes and Threads)

Management procesu I Mgr. Josef Horálek

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Operační systémy. Tomáš Vojnar IOS 2009/2010. Vysoké učení technické v Brně Fakulta informačních technologií Božetěchova 2, Brno

Vláknové programování část I

3. Počítačové systémy

Ukázka zkouškové písemka OSY

Pokročilé architektury počítačů

Struktura a architektura počítačů (BI-SAP) 7

ÚVOD DO OPERAČNÍCH SYSTÉMŮ. Správa paměti. Přímý přístup k fyzické paměti, abstrakce: adresový prostor, virtualizace, segmentace

Petr Holášek / 1 of 21

Paměťový podsystém počítače

Implementace systémů HIPS: historie a současnost. Martin Dráb

Pokročilé architektury počítačů

Úvod do architektur personálních počítačů

Assembler RISC RISC MIPS. T.Mainzer, kiv.zcu.cz

a co je operační systém?

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Technické prostředky počítačové techniky

2 Hardware a operační systémy

Činnost počítače po zapnutí

Ovladače pro Windows. Ovladače Windows A4M38KRP. Str. 1

Architektury CISC a RISC, uplatnění v personálních počítačích

Pokročilé architektury počítačů

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC


Petr Krajča. 26. říjen, 2012

Přerušovací systém s prioritním řetězem

PicoBlaze lekce 1: assembler, C překladač a simulační prostředí Jiří Svozil, Leoš Kafka, Jiří Kadlec svozil@utia.cas.cz

Procesor. Procesor FPU ALU. Řadič mikrokód

Přednáška 11. Historie MS Windows. Architektura Windows XP. Grafické a znakové rozhraní. Úlohy, procesy a vlákna.

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

IUJCE 07/08 Přednáška č. 6

Mezipaměti počítače. L2 cache. L3 cache

Přednáška. Strojový kód a data. 4. Přednáška ISA J. Buček, R. Lórencz

Principy operačních systémů. Lekce 5: Multiprogramming a multitasking, vlákna

Pokročilé architektury počítačů

Mikroprocesory ARM zánik či naopak znovuzrození desktopu?

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Profilová část maturitní zkoušky 2014/2015

Přidělování zdrojů (prostředků)

Pedstavení procesor s architekturou ARM

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Emulátory. Autor: Martin Fiala. Spouštění programů a her z jiných OS nebo jiných platforem. InstallFest

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

Operační systémy. Přednáška 7: Správa paměti I

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

Paměťová hierarchie. INP 2008 FIT VUT v Brně

Von Neumannovo schéma

Vstupně - výstupní moduly

Operační systémy. Přednáška 2: Procesy a vlákna

Pokročilé architektury počítačů

PB002 Základy informačních technologií

Architektura Intel Atom

ZOS OPAKOVÁNÍ. L. Pešička

Albatros MultiV ALBATROS MultiV ALBATROS MultiV-R Datový převodník LG PI485 / MODBUS TCP LG PI485 / MODBUS RTU s možností rozpočítávání spotřeby elekt

Architektury počítačů a procesorů

RISC a CISC architektura

Adresní mody procesoru

Architektura počítačů

Transkript:

HelenOS ARM port Pavel Jančík Michal Kebrt Petr Štěpán

HelenOS experimentální operační systém (MFF) multiplatformní microkernel amd64, ia32, ia32xen, ia64, mips32, ppc32, ppc64, sparc64 plánování správa paměti IPC userspace device drivers naming service uživatelské aplikace (tetris)

HelenOS architektura

ARM 32-bit RISC velká sada obecných registrů load/store, operace s registry ne s pamětí všechny instrukce 32 bitů (snazší dekódování) architektura navržená s ohledem na malá zařízení (jednoduchý návrh malá spotřeba) 75% podíl na trhu embedded RISC procesorů PDA, mobily, kalkulačky, počítačové periferie (disky, routery),...

ARM specifika podmíněné spuštění u většiny instrukcí (podmínka součástí kódu instrukce) 2-úrovňový systém přerušení (FIQs) Load and Store Multiple banked registers Thumb instrukce Jazelle... široká škála verzí ARM 1-11

ARM registry 31 obecných registrů (32-bit) + CPSR, SPSR v 1 okamžik je jich použitelných 16 r0-12 obecné registry r13 obvykle stack pointer (není vynucováno) r14 link register r15 program counter zbylé registry jsou dostupné z různých režimů procesoru některé registry (např. r14) mají svou verzi pro více režimů procesoru (banked registers) při změně režimu procesor přepne na správnou verzi registru

ARM režimy User určený pro běh uživatelských aplikací nemůže přepnout do ostatních módů, omezení při práci s koprocesory a paměťovým systémem System Supervisor IRQ FIQ Abort Undefined

ARM emulátor GXemul Gavare's experimental Emulator opensource emuluje ARM, MIPS, PowerPC, SuperH TestARM machine ARM procesor verze 4 jednoduchá (paměťově mapovaná) zařízení odstiňuje od složitosti reálného HW, zachovává vlastnosti architektury není dokonalý např. neimplementuje FIQ

Portování HelenOSu multiplatformní OS odráží se v členění zdrojového kódu generic, genarch, arch nyní již 9 architektur port loader implementace arch specific funkcí kernel paměťový subsystém, drivery, výjimky, kontexty userspace TLS, drivery

Loader pack skript před spuštěním se kernel a všechny tasky zabalí do jednoho souboru (image.boot) emulátor načte soubor image.boot start od adresy 0x0 zapne dočasné stránkování (jednoúrovňové, stránky 1MB) zkopíruje kernel a tasky do kernel space skočí na vstupní bod kernelu (0x80200000)

Výjimky 7 typů průběh Reset, Undefined instructions, SWI, Prefetch Abort, Data Abort, IRQ, FIQ výjimka přepnutí módu procesoru (+přepnutí banked registrů) skok na exception vector (pevná adresa odpovídající vyvolané výjimce) problém banked registry (sp) HelenOS: 1 kernelovský zásobník přepnutí na sp z předchozího módu nebo z proměnné (přišlali výjimka z user módu) ARM4: komplikovaný přístup k registrům z jiných módu (exception stack)

Přerušení na TestARMu ARM sice definuje IRQ exception, ale nedefinuje, jak se zjistí zdroj přerušení v TestARMu interrupt controller nebyl v reálném HW: interrupt controller nepříjemné zjištění open-source + průhledná architektura GXemulu vlastní jednoduchý paměťově mapovaný interrupt controller maska aktivních přerušení maskování přerušení

Správa paměti vlastnosti ARM CPU MMU HW stránkovací tabulky, více formátů TLB bez podpory ASID HelenOS zóny správa stránek, nejnižší generická vrstva buddy systém součást zóny, pro frame_alloc slab alokátor obecný kernelový alokátor paměti výpadky stránek

Stránkovací tabulky v registru řídícího koprocesoru je uložena fyzická adresa stránkovací tabulky 1. úrovně 1MB, 64KB, 4KB, 1KB stránky 1. úroveň - 4096 položek * 4B záznam = 16KB coarse page table (64 KB, 4KB stránky) fine page table (1KB stránky) 2. úroveň: 1024 položek * 4B = 4KB sections (1MB) 2. úroveň: 256 položek * 4B = 1KB pouze jedna úroveň 2. úroveň 3 formáty položek large, small, tiny... dle velikosti stránek

Stránkovací tabulky bootstrap, inicializace kernelu mapování 1:1, horní 2GB kopie dolních použity 1MB stránky jen jedna tabulka jednoduché na nastavení jedno pevné místo ve výsledné binárce po inicializaci 4KB stránky, rozumný kompromis velikosti coarse page tables, level 2 small descriptors

Práva a domény domény ovlivňují testování přístupových práv 16 nezávislých pouze v položkách první úrovně po 1MB blocích nepoužíváme práva nastavitelná s granularitou na ¼ stránky nejsou všechny kombinace přístupů, není Execute kernel RW & (user No user Read user RW)

Paměťové výjimky ARM má 2 typy výjimek data abort snaha o R/W na neplatné adrese prefetch abort vykonání instrukce na nepl. adrese při výpadku stránky v registrech koprocesoru adresa (kam se přistupovalo) proč nelze přistoupit práva, neexist. mapování, doména HelenOS má high level page fault handler hlavním úkolem low level handleru, je zjistit co se stalo a zavolat high level handler

Přechod do user režimu pouze pro user vlákna je třeba nastavit stack neprivilegovaný mód procesoru program counter vynulovat zbylé registry mohou obsahovat citlivé věci

TLS Thread Local Storage všechna vlákna 1 procesu sdílejí 1 paměťový prostor, tedy i (globální) proměnné co když je potřeba jiná hodnota pro různá vlákna použiji TLS thread int var; // GCC syntax s těmito proměnnými zachází překladač zváštním způsobem pro správnou funkci je potřeba podpora runtimu

TLS Thread pointer při přístupu k thread proměnné se dohodnutým způsobem zjistí adresa TLS na ARMech zavolá se funkce aeabi_read_tp na novějších ARMech speciální registr koprocesoru kde může být schována adresa TLS? segmentové registry ia32, amd64 obecný registr RISCové CPU (MIPS - k1) spodek zásobníku

ARM TLS v přeloženém souboru sekce.tdata,.tbss při vytvoření vlákna alokace místa (dle velikosti sekcí.tdata +.tbss) okopírování.tdata sekce, zero fill.tbss sekce uložení adresy TLS do registru r9 při přístupu k thread proměnné zavolá se funkce aeabi_read_tp, vrátí adresu začátku TLS (u nás vrací obsah registru r9) přičte offset v rámci.t* sekce a přistoupí k datům

Drobnosti atomické operace (instrukce SWP) identifikace procesoru (výrobce, typ)

Stav na GXemul TestARMu funguje kernel testy + userspace (tetris ) připraveno rozhraní pro podporu dalších simulátorů či reálných strojů