Operační systém Microsoft Windows Klíčové pojmy: multitasking, kernel, privilegovaný a uživatelský režim, ovladače, HAL, proces, vlákno, priority, objekty jádra, handle, handle table, SSDT, přerušení, IDT.
Výhody používání OS Windows
masivní rozšíření široká dostupnost HW i SW v ČR plná podpora českého prostředí
Rozšíření je však zároveň pro Microsoft i omezením vývoj trpí velkou setrvačností omezené možnosti zavádět moderní technologie v době, kdy jsou nové (například setrvávání u BIOSu) odlišné verze jádra a tím možná nekompatibilita
Historie OS Windows 1. OS na základě DOSu 1981
MS-DOS
chybí podpora multitaskingu
1985
verze 1.0
GUI jako nadstavba MS-DOS, možno otevřít více oken ale nedají se překrývat
1987
verze 2.0
okna se mohou překrývat
1990
verze 3.0
rozšíření díky velké hardwarové i softwarové podpoře významných nezávislých výrobců a instalaci na nová PC
1991
Multimedia Extension
1992
verze 3.1
14.10.2011
rozšířená verze pro multimedia
OLE, vylepšení správce souborů, vylepšení podpory tiskáren, nové ovladače podporující MS-DOS grafiku v okně
OS Windows
1
verze 3.11
síťová podpora
1995
Windows 95
32bitové jádro, podpora dlouhých názvů souborů, podpora sítí (byla integrována TCP/IP sada) a zcela nové grafické rozhraní první uživatelsky přívětivý OS
1998
Windows 98
vylepšené grafické prostředí, integrace webu do oken průzkumníka, podpora USB, Microsoft Explorer 4 mnoho chyb, kvůli kterým byl velmi nestabilní zahájení antimonopolního řízení vlády USA proti firmě Microsoft kvůli integrovanému web prohlížeči
1999
98SE odstraněny chyby Windows ME nové grafické prostředí, Windows Media Player 7, DirectX označován za nejvíc nestabilní operační systém Microsoftu
2. OS na jiné bázi než DOS 1987
IBM ve spolupráci s Microsoftem vytváří nový operační systém pro PC OS/2. Později se spolupráce obou firem rozpadla a každá z nich vyvíjela svou vlastní verzi OS/2 (Windows NT a IBM na OS/2 Warp)
1993
windows NT
2000
windows 2000
pátá verze NT, robustní a náročná na HW - použití pro servery
2001
windows XP
vysoká spolehlivost, kompatibilita a podpora multimédií skinovatelnost grafického rozhraní
2003
Windows Server 2003
2006/7
Windows Vista vektorové grafické rozhraní, databázovým souborovým systémem WinFS založený na NTFS, vzdálený provoz systému, resp. pronájem systému místo jeho koupě
14.10.2011
OS Windows
2
2009
Windows 7
2011/12 Windows 8
vyšší stabilita systému, zjednodušení práce v systému, intuitivní ovládání, inovace spodní lišty (přehledně viditelné všechny spuštěné programy, můžeme přidat i další oblíbené programy), domácí síť, multi-dotykové ovládání, mikro jádro (MinWin) dobře pracují i na slabším počítači či s menší operační pamětí připravuje se 32 a 64b verze a verze pro mobilní zařízení změny vzhledu (Ribbon design), změny v jádře, může dojít k nekompatibilitě ovladačů
Budoucnost Windows Microsoft jako největší softwarová společnost na trhu se snaží prosadit Windows do všech aplikací - od osobních počítačů, přes servery po mobilní zařízení a jiná embedded zařízení. Největšími výhodami systému zůstává masivní rozšíření (počínaje školami, kde se vychovávají noví uživatelé systému) a dostupnost velkého množství aplikací. Přesto narůstá obliba alternativních operačních systémů, zejména systémů UNIXového typu, které díky povedeným distribucím pronikají ze sféry serverů i mezi koncové domácí uživatele.
Architektura OS Windows (NT)
víceuživatelský operační systém preemptivní multitasking procesy odděleny od vlastního jádra operačního systému kód jádra vykonáván v privilegovaném módu procesoru (kernel mode – režim jádra), ten umožňuje vykonávat privilegované instrukce a poskytuje přímý přístup k datům systému a k hardwaru procesy běží v neprivilegovaném režimu procesoru (user mode – uživatelský mód) – procesy nemohou přímo přistupovat k hardwaru, vykonávat privilegované instrukce ani měnit (nebo číst) paměť jádra aplikace mohou využívat limitovaný počet rozhraní při volání rozhraní aplikací je volání zachyceno, procesor se přepne do režimu jádra a vykoná se potřebný kód. Poté se procesor vrátí zpátky do uživatelského režimu a řízení je opět předáno aplikaci.
14.10.2011
OS Windows
3
Režim jádra se nazývá Ring 0, uživatelský režim Ring 3. Ostatní Ring módy ve Windows nejsou použity. Procesy běžící v Ring 3 se samy z bezpečnostních důvodů nemohou přepnout do režimu Ring 0.
součásti jádra Windows navrženy tak, aby neodporovaly principům objektově orientovaného programování přístup k datům přes formální rozhraní, navíc všechny součásti jádra sdílejí stejný adresový prostor většina kódu psána v jazyce C kvůli přenositelnosti a široké dostupnosti vývojových nástrojů
Struktura OS Windows Systémové procesy
Služby
Aplikace
Vrstva DLL knihoven Uživatelský režim Režim jádra Exekutiva Kernel
Ovladače
Grafika a GUI
HW abstrakční vrstva Části běžící v uživatelském režimu jsou implementovány jako procesy, každý proces má přidělen vlastní virtuální adresní prostor, aby nedocházelo k duplicitním přístupům do paměti nebo neoprávněné manipulaci s daty. Součásti běžící v režimu jádra jsou implementovány jako ovladače a sdílí jeden adresní prostor. V uživatelském režimu mohou být spuštěny: systémové procesy např. winlogon.exe, services.exe. Při neočekávaném ukončení systémového procesu dojde k zastavení běhu celého systému. služby
14.10.2011
OS Windows
4
procesy běžící nezávisle na uživateli, běží na pozadí , nepřijímají vstupy od uživatele aplikace procesy běžící pod účtem uživatele, při odhlášení uživatele jsou automaticky ukončeny DLL knihovny rozhraní pro komunikaci mezi aplikací a jádrem OS, knihovny překládají volání dokumentovaných rutin na volání rutin nedokumentovaných, volajících přímo jádro. Mezi DLL knihovny patří např. kernel32.dll, user32.dll
Jádro OS:
exekutiva poskytuje základní služby OS (správa paměti, procesů, bezpečnost, I/O operace, komunikace mezi procesy) kernel rutiny k synchronizaci více procesů, obsluha výjimek a přerušení, přidělování procesoru vláknům ovladače zařízení ovladače periferních zařízení, síťové ovladače, ovladače FS hardwarová abstrakční vrstva HAL závislá na hardware, vrstva pro jednotný přístup k různým typům komponent grafika a GUI v jádře od Windows NT verze 4, přesun do jádra umožňuje rychlejší práci s grafikou
Procesy a vlákna Každý proces má vlastní virtuální adresní prostor (nezasahuje do adresního prostoru jiných procesů). Adresní prostor sestává z bloků, alokovaných procesem při spuštění. Vlastní kód aplikací a programů (proces) je vykonáván prostřednictvím vláken, všechna vlákna jednoho procesu sdílí stejný adresní prostor. Každé vlákno je charakterizováno strukturou context, ta obsahuje hodnoty registrů procesoru. Pokud proces běží (je mu přidělen čas procesoru), načte se hodnota z context do registrů a provádí se jeho kód. Poté se nové hodnoty registrů opět uloží do context a procesor začne vykonávat kód jiného vlákna. Čas přidělený procesu (vláknu) závisí na prioritě vlákna a procesu. 14.10.2011
OS Windows
5
Ovladače Běží v režimu jádra, mohou číst i zapisovat do libovolné oblasti paměti, komunikovat s hw. Nemají vlastní adresní prostor, nevlastní žádná vlákna. Soubory všech ovladačů se nachází ve společném adresovém prostoru. Kód ovladače může být vykonáván vlákny různých procesů, a to: ovladač je volán požadavkem (zprávou) procesu kód ovladače je vykonáván v kontextu systémového procesu (např. při volání inicializační rutiny) kód vykovánán v rámci kontextu náhodného procesu (při obsluze přerušení)
Instalace ovladačů Při instalaci je nutné zapsat do registrů: jméno ovladače umístění podmínky spouštění Ovladač může být spuštěn během bootování nebo na příkaz procesu. Po instalaci a spuštění je volána inicializační rutina, ovladač plní svůj úkol doku není uvolněn z paměti a spuštěna ukončovací rutina. Pokud ovladač neobsahuje ukončovací rutinu (např. malware), je nutné jej uvolnit smazáním položek registru, které tam byly zapsány při instalaci ovladače.
Priority (IRQL) Obecně kód s vyšší prioritou může využít méně služeb než kód s nižší prioritou. Některé služby OS mohou být volány jen při určité prioritě, kód nemůže být přerušen jiným kódem s nižší prioritou. Procesy mohou priority měnit, ovladače mohou svou priorit zvýšit, ale před skončením ji musí opět nastavit na původní hodnotu. PASSIVE_LEVEL nejnižší priorita, tuto prioritu mají vlákna procesu system DISPATCH_LEVEL Při této prioritě nelze využívat mnohá systémová volání, nelze pracovat se soubory, přistupovat ke stránkované paměti. Kód s touto prioritou může být přerušen hardwarově. Procesor neprovádí multitasking dokud se priorita nesníží. PROVÁDĚT CO NEJMÉNĚ OPERACÍ s touto prioritou 14.10.2011
OS Windows
6
DIRQL Priorita obsluhy hw přerušení, rutiny získaná data předají ke zpracování kódu s nižší prioritou (nezatěžovat procesor)
Objekty jádra Slouží pro spolupráci mezi procesy, např. při práci se souborem se alokuje oblast paměti, kde jsou uložené informace o otevřeném souboru a jádro vytvoří objekt jádra. Přistupuje-li k témuž souboru jiný proces, nedochází k nové alokaci paměti, pouze se zvýší počet referencí objektu jádra. Jakmile klesne počet referencí na nulu, objekt je zrušen a paměť uvolněna. Ovladače mohou počet referencí objektu volně upravovat a tak zajistit, aby objekt zůstal v paměti, i když není využíván žádným procesem. Pracuje-li proces s některým objektem, je mu přidělen handle (odkaz na objekt jádra), který můžeme použít při volání funkcí Windows API. Hodnota handle je unikátní pro každý proces. Informace o objektech používaných procesem se ukládají do pole handle table.
Důležité struktury systému Windows Tabulka interních služeb systému SSDT (System Service Descriptor Table) Je použita, volá-li proces v uživatelském režimu některou ze služeb jádra. V tabulce jsou uloženy adresy funkcí, které mohou aplikace z uživatelského režimu vyvolat. Jedná se v podstatě o jeidný způsob (nepočítáme-li různá synchronizační primitiva a sdílenou paměť), jak aplikace může s jádrem interagovat. Tuto strukturu často modifikovaly a modifikují nejen různé viry či rootkity, ale i bezpečnostní software, zejména moduly HIPS. Tabulka vektorů přerušení IDT (Interrupt Descriptor Table) Obsahuje adresy obslužných rutin pro všechna sw i hw přerušení. Při volání přerušení procesor uloží právě spuštěný proces a obslouží přerušení – předá řízení rutině uvedené v tabulce přerušení. Po skončení rutiny procesor pokračuje v obsluze předchozí úlohy. Zdroje: Dráb M.: Jádro systému Windows, CP 2011 cs.wikipedia.org europen.cz
14.10.2011
OS Windows
7