Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

MINIX 3

Z Wikipedie, otevřené encyklopedie
MINIX 3
Logo
Systém MINIX 3 se správcem oken TWM
Systém MINIX 3 se správcem okenTWM
VyvíjíAndrew S. Tanenbaum
Rodina OSUnix-like
DruhOpen source
Aktuální verze3.3.0 /16. září2014[1]
Podporované platformy32bitové verze:IA-32,ARM
64bitové verze ve vývoji:ARMv8 (prioritně),x86-64[2]
Typ jádraMikrojádro
Programovací jazykC,Assembler
Výchozíuživatelské rozhraníPříkazový řádek (ash)
LicenceBSD licence
StavAktivní
Oficiální webminix3.org

MINIX 3 je projekt s cílem vytvořit malý,vysoce spolehlivý a funkčníUnix-likeoperační systém. Je zveřejněn podlicencí BSD a je nástupcem dřívějších operačních systémůMINIX 1 a 2.

Hlavním cílem tohoto systému je, aby bylodolný proti chybám, za pomoci detekce a oprav sama sebe, za běhu, bez nutnosti zásahu uživatele. Jako hlavní použití tohoto operačního systému se očekávajívestavěné systémy a vzdělávání.[3]

MINIX 3 v současné době podporujeIA-32 aARM architektury systémů. Je také možné spustit MINIX podemulátory nebovirtuálními stroji, jako jsouBochs[4][5],VMware Workstation[6],Microsoft Virtual PC[7], OracleVirtualBox[8] aQEMU. Porty na architekturyARM[9] aPowerPC[10] jsou ve vývoji.

Distribuci je možné získat nalive CD a také ji lze stáhnout ve formátu vhodném pro USB flash disk.[11] Nejnovější verze je 3.4.0rc6 z9. května2017.[12]

Cíle projektu

[editovat |editovat zdroj]
Strukturamonolitického jádra a namikrokernelu-založeném operačním systému.
MINIX 3.1.7 spuštěný sX11 aEDE

V kontrastu k systémům založeným namonolitickém jádře, kde ovladače (které mají podle tvůrce MINIXuTanenbauma, přibližně 3–7krát více chyb než obvyklý program)[13] mohou vyřadit z provozu celý systém[14], MINIX 3 si klade za cíl vytvořit operační systém, který je "spolehlivý, samoopravný, multiserverový klon UNIXu".[15]

V zájmu dosažení minimalizace kódu běžícího vjádře systému, byl realizován s file serverem, proces serverem a všemi ovladači zařízení běžícími jako samostatné procesy v uživatelském režimu. Každý ovladač je bedlivě sledován součástí systému známou jako reinkarnační server. Pokud ovladač nereaguje na ping od reinkarnačního serveru, je vypnut a nahrazen novou kopií ovladače.

V monolitickém systému může chyba v ovladači snadno shodit celé jádro, což je v MINIXu 3 mnohem méně pravděpodobné.[16]

Historie

[editovat |editovat zdroj]
Verze MINIXu 3
VerzeDatum vydáníPopis
3.1.02005-10-24
  • První vydaná verze MINIXu 3 (knižní vydání).
3.1.2a2006-05-29
3.1.32007-04-13
3.1.3a2007-06-08
  • Opravy chyb.
3.1.42009-06-09
3.1.52009-11-05
  • Vylepšení výkonnosti
  • Sdílená paměť
  • funkce setitimer
  • souborový systémISO 9660
  • Open Sound System
  • Nyní funguje past na neplatné (NULL) přístupy, pro pohodlí uživatele
  • Vylepšená obsluha signálů
  • Lepší podporadebuggerů (vylepšeníptrace, atd.)
  • Autodetekce síťové karty (pro podporovanéPCI karty), vylepšena síťová konfigurace
3.1.62010-02-08
3.1.72010-06-16
  • Plánování uživatelského prostoru a plánovacího serveru
  • Náležitá podpora pro několik ethernetových karet stejného typu
  • Bootovací monitor umožňující nahrávání obrazů > 16 MB
  • Buildsystem podporuje MINIX sGCC
  • Podpora pro znakové stránkycp1251 a koi8-u
3.1.82010-10-04
  • Nový infrastruktura pro spravování: pkgsrc a pkgin
  • Podporaunix socketu
  • Podporamultibootu
  • Podporaext2
  • OvladačACPI
  • Úplný APIC mód zahrnující I/O APICs
  • Experimentální podporaAHCI
3.2.02012-02-29
  • Na MINIX 3 portovánGNU Debugger a implementována podpora výpisu jádra
  • PodporaFUSE s experimentálním souborovým systémemNTFS-3G
  • Postupné nahrazováníuserlandu MINIXu userlandem (aplikacemi)NetBSD
  • Nahrazení výchozího kompilátoru ACKClangem (přitomGCC je také podporován)
  • Přepnutí na knihovnyELF a NetBSDlibc
  • Pkgsrc nahrávání a přenášení applikací
  • Asynchronnívirtual filesystem (VFS) server.
  • Nahrazení bootloaderu MINIXu bootloaderemNetBSD
  • PodporaNCQ v ovladačiAHCI
3.2.12013-02-21
3.3.02014-09-16
  • Podpora architektury ARM (křížem-kompilovatelné)
  • Podpora pro mechanizmus mmap() I/O. Umožňuje sdíletdynamické knihovny a zmenšuje paměťový otisk.
  • Nová architektura vstupu: vstupní server a ovladač klávesnice je oddělen od TTY
  • VND: vnode disk (loopback) blokový ovladač
  • LLVM Bitcode sestaven na tomto systému
  • ImportLLVM /clang vezdrojích
  • Unifikovaný blokový buffer sdílen s FS a VM
  • Zlepšena kompatibilita sNetBSD (utility, volání, typy (mnoho 64bitových), toolchain, codebase, a balíčky)
  • Ve zprávách používánytypyjazyka C. Čistší.
  • Vylepšená modularita ovladačů: UDS oddělen od PFS, PTY od TTY, jeden řadič na instanci at_wini, z bootovacího obrazu odebrán LOG.
  • Balíčky jsou nyní dynamicky připojované
3.4.0 rc62017-05-09
  • X11 je součástí operačního systému[17]
  •      Vydáno s knihou
  •      Zastaralá verze
  •      Stabilní verze
  •      Ve vývoji

MINIX 3 byl veřejně uveden dne 24. října 2005 Andrewem Tanenbaumem, během jeho projevu konference ACM Symposium Operating Systems Principles. I když MINIX 3 stále slouží jako příklad pro nové vydání učebnice Tanenbauma a Woodhulla, je komplexně přepracován, aby byl "použitelný jako seriózní systém pro počítače s omezenými zdroji, vestavěné systémy a pro aplikace vyžadující vysokou spolehlivost."

O MINIX 3 se zajímalIntel prostřednictvím svého týmu inženýrů, který Tanenbauma kontaktoval.[18] Kromě technických dotazů se inženýři Intelu dotazovali i na množství úprav MINIXu, např. na snížení paměťové náročnosti, přidání #ifdefs do částí kódu, aby byly označitelné vkonfiguračních souborech.[18] Díky těmto úpravám se stal MINIX 3 ještě více modulárnějším, než byl do té doby.[18] Po té Tanenbaumova spolupráce s Intelem na několik let ustala.[18] Později se ukázalo, že MINIX 3 byl využit jako operační systém v rámciIntel Management Engine 11, což z MINIXu učinilo patrně nejpoužívanější operační systém na světě.[18]

Spolehlivost v MINIXu 3

[editovat |editovat zdroj]

Jedním z hlavních cílů MINIXu 3 je spolehlivost. Níže jsou rozebírány některé z důležitých zásad, které ji u MINIXu 3 zvyšují.

Snížit velikost jádra

[editovat |editovat zdroj]

Monolitické operační systémy, jako jsouLinux aFreeBSD, a hybridy, jako jsouWindows mají miliony řádkůjádra kódu. V kontrastu s tím má MINIX 3 přibližně 6000 řádků spustitelného kódu jádra[19], což může pomoci při hledání chyby v kódu.

Izolovat chyby

[editovat |editovat zdroj]

V monolitických jádrech jsouovladače zařízení umístěny v samotném jádře. To znamená, že když je nová periferie nainstalována, je neznámý, neověřený kód vložen do jádra. Jeden chybný řádek kódu v ovladači může způsobit pád systému.

V MINIXu 3 je každý ovladač zařízení samostatným procesem, běžícím v uživatelském režimu. Ovladače nemohou vykonávat privilegované instrukce, měnittabulky stránek, provádět libovolnévstupy/výstupy (I/O) a zapisovat do nestránkované paměti. Služby musí žádat jádro o povolení.

Omezit ovladačům přístup do paměti

[editovat |editovat zdroj]

V monolitických jádrech může ovladač napsat jakékoliv slovo do paměti a omylem tak poškodit uživatelské programy.

V MINIXu 3, když například uživatel očekává data od souborového systému, vytváří popisovač (deskriptor) určující, kdo má přístup a na jaké adresy. Ten pak poskytne index pro tento popisovač souborového systému, který mohou předat ovladači. Tento souborový systém nebo ovladač se pak ptá jádra, zda může zapsat prostřednictvím popisovače, takže je pro něj nemožné zapsat na adresy mimo vyrovnávací paměť (buffer).

Přežít neplatné ukazatele

[editovat |editovat zdroj]

Dereferencing neplatného ukazatele během práce ovladače nabourá ovladač procesu, ale nebude mít žádný vliv na systém jako celek. Reinkarnační server bude havarovaný ovladač automaticky restartovat. Pro některé ovladače (např., disku a sítě) je oživení pro uživatelské procesy transparentní. Pro ostatní (např. audio a tiskárny), si jich uživatel může všimnout. V monolitických jádrech dereferencing neplatného ukazatele v ovladači vede obvykle k havárii systému.

Zkrotit nekonečné smyčky

[editovat |editovat zdroj]

Pokud se ovladač dostane donekonečné smyčky, bude plánovač postupně snižovat jeho prioritu, až se stane nečinným. Nakonec reinkarnační server bude vidět, že ovladač nereaguje na stav žádosti, tedy ho odstraní a restartuje. V monolitickém jádru zacyklený ovladač může zastavit systém.

Omezení poškození od přetečení vyrovnávací paměti

[editovat |editovat zdroj]

MINIX 3 využívá pro interní komunikaci pevné délky zpráv, která eliminuje některápřetečení vyrovnávací paměti (bufferu) a problémů s jejím řízením. Také mnohéexploity využívají princip přetečení vyrovnávací paměti, aby trikem podvrhly programu pro návrat z volání funkce pomocí přepsání zásobníku návratovou adresu ukazující do útočníkem ovládané paměti, obvykle přetečení vyrovnávací paměti sám způsobí. V MINIXu 3 je riziko tohoto útoku zmírněno, protože instrukce a data jsou rozdělena a pouze kód (který je pouze pro čtení) může být proveden. Toto je běžně známé jako Data Execution Prevention.

Omezit přístup k funkcím jádra

[editovat |editovat zdroj]

Ovladače zařízení získávají služby kernelu (např. kopírování dat do uživatelského adresního prostoru), a to pomocí volání jádra. Jádro MINIXu 3 má bitovou mapu pro každý ovladač, který upřesňuje, které volání je oprávněn dělat. V monolitických jádrech může každý ovladač volat každou funkci jádra, oprávněnou či nikoliv.

Omezit přístup k I/O portům

[editovat |editovat zdroj]

Jádro také udržuje tabulku popisující, kteréI/O porty může jednotlivý ovladač použít. Výsledkem je, že ovladač může přistupovat jen ke svým vlastním I/O portům. V monolitických jádrech může mít chybný ovladač přístup k I/O portům, které přísluší jinému zařízení.

Omezit komunikaci s komponenty OS

[editovat |editovat zdroj]

Ne každý ovladač a server musí komunikovat s každými ostatními ovladači a servery. Proto má každýproces bitovou mapu, která určuje, které destinaci může jednotlivý proces poslat.

Reinkarnace mrtvých nebo poškozených ovladačů

[editovat |editovat zdroj]

Speciální proces, nazvaný reinkarnační server, pravidelně dotazuje (ping) každý ovladač zařízení. Pokud ovladač havaruje, nebo nedokáže správně reagovat na dotaz, reinkarnační server jej automaticky nahradí novou kopii. Detekce a výměna nefunkčního ovladače je automatická, bez potřeby zásahu uživatele. Tato funkce v současné době nefunguje pro ovladače disků, ale v příští verzi bude systém schopen obnovit i ovladače disku, který bude ve stínu vrandom-access memory (RAM). Obnova ovladačů nemá vliv na běžící procesy.

Integrovat přerušení a zprávy

[editovat |editovat zdroj]

Když nastanepřerušení, je na nízké úrovni převedeno na zprávu zaslanou příslušnému ovladači. Pokud ovladač čeká na zprávu, dostane přerušení okamžitě, jinak dostane upozornění, že příště OBDRŽÍ zprávu. Toto schéma eliminuje vnořená přerušení a dělá programování ovladače jednodušší.

Architektura

[editovat |editovat zdroj]
Architektura MINIXu 3

Jak lze vidět, na spodní úrovni jemikrokernel, což je asi 4000 řádků kódu (většinou vprogramovacím jazyce C, plus malé množstvíAssembleru). Zpracovávápřerušení,plánování a předávání zpráv. JehoAPI také podporuje asi 30 jaderných volání, které mohou autorizované servery a ovladače realizovat. Uživatelské programy nemohou tato volání použít. Místo toho mohou používatPOSIXovásystémová volání, která mohou odeslat zprávy na servery. Jaderná volání provádějí funkce jako je nastavení přerušení a kopírování dat mezi adresními prostory.

Na další úrovni, jsou tuovladače zařízení, každé z nich běží jako samostatnýuživatelský proces. Každý z nich ovládá některé I/O zařízení, jako je například disk nebo tiskárna. Ovladače nemají přístup k I/O prostoru a nemohou provádět I/O instrukce přímo. Místo toho musí ovladače provést volání jádra se seznamem I/O portů hodnot určených pro zapsání. Zatímco tam je malé množství režie (typicky 500 ns), tento systém umožňuje, aby jádro zkontrolovalo, zda má ovladač povolení. Aby například audio ovladač nemohl zapisovat na disk.

Na další úrovni existujíservery (služby,démoni). To je místo, kde se nachází téměř všechny funkčnosti operačního systému. Uživatelsképrocesy získávají souborové služby, jako například odesílání zpráv nasouborový server, jako otevřít, zavřít, číst a zapisovatsoubory. Na druhé straně, souborový server dostane diskový I/O zasláním zprávy na ovladač disku, který v současnosti řídí disk.

Jedním z klíčových serverů je reinkarnační server (viz téžwatchdog timer). Jeho úkolem je průzkum všech ostatních serverů a ovladače pro kontrolu na své zdraví pravidelně. Pokud se součásti nezdaří reagovat správně, nebo se ukončí nebo dostane donekonečné smyčky, reinkarnační server (který je nadřazený proces ovladače a servery) odstraní vadné součásti a nahradí je novou kopií. Tímto způsobem je systém automaticky samoopraven, aniž by bylo zasahováno do spuštěných programů.

V současné době reinkarnační server, proces server a mikrokernel jsou součástí "trusted computing base". Pokud některý z nich selže, systém se zhroutí. Nicméně, snížení trusted computing base (jádra systému) od 3-5 milionů řádků kódu nacházejících se v systémechLinux aWindows, na asi 20 000 řádek, výrazně zvyšuje spolehlivost systému.

Odkazy

[editovat |editovat zdroj]

Reference

[editovat |editovat zdroj]

V tomto článku byl použitpřeklad textu z článkuMINIX 3 na anglické Wikipedii.

  1. MINIX 3.3.0 is Available Now.www.minix3.org [online]. [cit. 2017-03-07].Dostupné v archivu pořízeném z originálu dne 2020-11-12. 
  2. SCHROEDER, Stefan.Frequently Asked Questions [online]. Rev. 2016-12-14 [cit. 2016-12-18].Dostupné v archivu pořízeném z originálu dne 2019-04-26. (anglicky) 
  3. [Posted October 24, 2005 by corbet].Minix 3 hits the net [online]. Lwn.net, 2005-10-24 [cit. 2014-05-01].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  4. Getting Started with Minix on Bochs on Mac OS [online]. Woodhull.com [cit. 2014-05-01].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  5. OSNews.com [online]. OSNews.com [cit. 2014-05-01].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  6. Minix under VMWare Installation How-To [online]. Patrick.wagstrom.net [cit. 2014-05-01].Dostupné v archivu pořízeném dne 2013-11-12. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  7. Minix on Virtual PC: first look [online]. Woodhull.com [cit. 2014-05-01].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  8. Minix 3 on Virtual box [online]. inopinion.org.Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  9. minix3.org [online]. minix3.org [cit. 2014-05-01].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  10. Ingmar Alting.A port of the MINIX OS to the PowerPC platform [online].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  11. Minix3 [online]. Minix3 [cit. 2014-05-01].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  12. MINIX 3.4 RC6 Released - Phoronix.www.phoronix.com [online]. [cit. 2017-06-16].Dostupné online. (anglicky) 
  13. TANENBAUM, Andy.Introduction to MINIX 3 [online]. OSnews, 2006-09-25 [cit. 2008-07-04].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  14. CSAIL Calendar: CSAIL Event Calendar [online]. Csail.mit.edu [cit. 2014-05-01].Dostupné v archivu pořízeném dne 2012-02-04. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  15. Tanenbaum-Torvalds debate, Part II [online]. Cs.vu.nl, 2006-05-12 [cit. 2014-05-01].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  16. Archivovaná kopie [online]. July 1, 2006 [cit. 2019-10-15].Dostupné v archivu pořízeném dne 2006-07-01. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  17. MIKE632T.Installing X windows on MINIX 3 [online]. 2022-03-25 [cit. 2023-01-14].Dostupné online. (anglicky) 
  18. abcdeJEŽEK, David. MINIX je zřejmě nejrozšířenějším systémem, je ukrytý v procesorech Intel.root.cz [online]. 8. 11. 2017.Dostupné online.ISSN1802-8012. 
  19. The MINIX 3 Operating System [online]. [cit. 2017-03-07].Dostupné v archivu pořízeném dne 2017-03-01. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.

Související články

[editovat |editovat zdroj]

Externí odkazy

[editovat |editovat zdroj]
Operační systémy
BSD
Linux (distribuce)
(Deb)

Debian (1993) •Knoppix (2000) •Ubuntu (2004)

(RPM)

Red Hat (1994) •Fedora (2003) •Mandriva (2005)

(Portage)

Gentoo (2002)

(AUR)

Arch Linux (2002) •Manjaro (2011)

další

Slackware (1993) •SUSE (1996) •Slax (2002) •další…

GNU
MIT (licence)
(Mac) OS X •macOS
DOS
Windows
Windows proMS-DOS

Windows 1.0 (1985) →Windows 2.0 (1987) →Windows 3.0 (1990) →Windows 3.1x (1992) →Windows 95 (1995) →Windows 98 (1998) →Windows ME (2000)

Windows NT

Windows NT 3.1 (1993) →Windows NT 3.5 (1994) →Windows NT 3.51 (1995) →Windows NT 4.0 (1996) →Windows 2000 (2000) →Windows XP (2001) →Windows Server 2003 (2003) →Windows Vista (2007) →Windows Server 2008 (2008) →Windows 7 (2009) →Windows Server 2008 R2 (2009) →Windows 8 (2012) →Windows Server 2012 (2012) →Windows 8.1 (2013) →Windows Server 2012 R2 (2013) →Windows 10 (2015) →Windows Server 2016 (2016) →Windows 11 (2021) →Windows Server 2025 (2024)

Windows CE
Vývoj zrušen
Mobilní telefony aPDA
další
historické
Portály:Svobodný software
Citováno z „https://cs.wikipedia.org/w/index.php?title=MINIX_3&oldid=25060549
Kategorie:
Skryté kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp