Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické informace (manuály ap.): –ftp://ulita.ms.mff.cuni.cz/techdoc/index.html Maily:
Využití tásků v rámci OS 1 tásk = 1 proces: 1 tásk = více procesů: 1 tásk = všechny procesy:
Struktura tásku
Stav tásku Aktuálně přístupná část adresového prostoru (definována obsahem seg. registrů CS, DS, SS, ES, FS, GS ) Obsah obecných aplikačních registrů ( EAX - EDX, ESI, EDI, EBP ) Obsah příznakového registru EFLAGS Obsah ukazatele instrukcí EIP Obsah ukazatele vrcholku zásobníku ESP Obsah systémových registrů CR3 (PDBR), LDTR a TR Mapa přístupných oblastí v I/O adresovém prostoru Definice zásobníku pro úrovně priorit 0, 1 a 2 Odkaz na (případný) dynamicky nadřazený tásk
TSS (Task-State Segment) Datová struktura udržující stav tásku Obecný formát: TSS: I/O Permission Bit Map Software Interrupt Redirection Bit Map Formated Part Unformated Part
Formátovaná část TSS 1. Oblast systémových zásobníků:
Formátovaná část TSS 2. Oblast aplikačních registrů:
Formátovaná část TSS 3. Oblast segmentových registrů:
Přepínání tásků Explicitně: –instrukcí skoku ( JMP ) –instrukcí volání ( CALL ) Implicitně: –výjimkou n. přerušením obsluhovanými samostatným táskem –instrukcí návratu z přerušení ( IRET ) při NT =1 Při explicitním přepnutí je cílový tásk určen: –svým TSS –táskovou branou (Task Gate) V obou případech proběhne standardní datový „prioritní test“: EPL DPL Při implicitním přepnutí je cílový tásk určen: –táskovou branou v případě výjimek a přerušení –svým TSS uloženým v poli LINK aktuálního („starého“) tásku v případě IRET
Brána tásku (Task-Gate)
Způsoby přepínání tásků „Prosté“ přepnutí instrukcí JMP - nemění vzájemný (rovnocený) vztah tásků Volání tásku jako podprogramu instrukcí CALL (příp. i implicitním vyvoláním tásku při obsluze výjimky n. přerušení) - vytváří vztah dynamicky nadřazeného (volajícího) a podřízeného (volaného) tásku; takové tásky jsou organizovány do řetězců vnořených (nested) tásků:
Použitelnost tásků Použitelnost tásků při designu OS je prudce zvýšena výhodným mechanismem ochrany proti rekurzi: Při volání tásku jako podprogramu zůstává volající tásk označen jako BUSY (změnou typu deskriptoru TSS) a pokus o jeho opětovné volání způsobí výjimku