MINIX 3 - MINIX 3
![]() | |
Vývojář | Andrew S. Tanenbaum |
---|---|
Napsáno | C, montážní jazyk |
Rodina OS | Unixový |
Pracovní stav | Aktuální |
Zdrojový model | Otevřený zdroj |
První vydání | 24. října 2005 |
Úložiště | ![]() |
Marketingový cíl | Vestavěné systémy, vzdělání |
K dispozici v | Angličtina |
Platformy | IA-32, PAŽE |
Jádro typ | Microkernel |
Userland | MINIX, NetBSD |
Výchozí uživatelské rozhraní | popel |
Licence | Zvyk permisivní licence |
Předcházet | Minix 1 a 2 |
Oficiální webové stránky | www |
Minix 3 je projekt na vytvoření malého, vysoká dostupnost, vysoká funkčnost Unixový operační systém. Je publikován pod a Licence BSD a je pokračovatelem dřívějších verzí, Minix 1 a 2.
Hlavním cílem projektu je, aby systém byl tolerantní k chybám detekcí a opravou vlastních chyb za běhu bez zásahu uživatele. Předpokládá se hlavní využití systému vestavěné systémy a vzdělání.[1]
Od roku 2017[Aktualizace], MINIX 3 podporuje IA-32 a ARM architektura procesory.[2] Může také běžet dál emulátory nebo virtuální stroje, jako Bochs,[3][4] Pracovní stanice VMware,[5] Microsoft Virtual PC,[6] Věštec VirtualBox,[7] a QEMU. Přístav do PowerPC architektura je ve vývoji.[8]
Distribuce probíhá na a živé CD a lze je stáhnout jako živé USB držet obrázek.[9] Nejnovější vydání je „minix_R3.4.0rc6-d5e4fc0.iso.bz2“ (9. května 2017).[10]
Předpokládá se, že MINIX 3 je používán v Intel Management Engine (ME) nalezen v Intel Centrum řadiče platformy počínaje zavedením ME 11, který se používá s Skylake a Kaby Lake procesory.[11][12]
Jeho použití v Intel ME by z něj mohlo udělat nejpoužívanější OS x86 /AMD64 procesory začínající od roku 2015[Aktualizace], s více instalacemi než Microsoft Windows, Linux nebo macOS.[13]
Cíle projektu
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/OS-structure.svg/220px-OS-structure.svg.png)
Úvahy o povaze monolitické jádro založené systémy, kde je ovladač (který má podle tvůrce MINIX Tanenbaum, přibližně 3–7krát více chyb než obvyklý program)[14] může zničit celý systém,[15] MINIX 3 si klade za cíl vytvořit operační systém, který je „spolehlivým, samoléčivým multiserverovým unixovým klonem“.[16]
K dosažení tohoto cíle musí být kód spuštěný v jádře minimální, přičemž souborový server, procesní server a každý ovladač zařízení musí být spuštěny jako samostatné procesy v uživatelském režimu. Každý řidič je pečlivě sledován částí systému s názvem reinkarnační server. Pokud ovladač nereaguje na ping z tohoto serveru, je vypnut a nahrazen novou kopií ovladače.
V monolitickém systému může chyba v ovladači snadno poškodit celé jádro. Je mnohem méně pravděpodobné, že k tomu dojde v MINIX 3.[17]
Dějiny
Verze | Datum vydání | Popis |
---|---|---|
3.1.0 | 2005-10-24 |
|
3.1.2a | 2006-05-29 |
|
3.1.3 | 2007-04-13 |
|
3.1.3a | 2007-06-08 |
|
3.1.4 | 2009-06-09 |
|
3.1.5 | 2009-11-05 |
|
3.1.6 | 2010-02-08 |
|
3.1.7 | 2010-06-16 |
|
3.1.8 | 2010-10-04 | |
3.2.0 | 2012-02-29 |
|
3.2.1 | 2013-02-21 |
|
3.3.0 | 2014-09-15 | [20] |
3.4.0 rc6 | 2017-05-09 |
|
|
MINIX 3 byl veřejně oznámen dne 24. října 2005 Andrewem Tanenbaumem během jeho hlavního projevu na vrcholu Sdružení pro výpočetní techniku Konference o principech operačních systémů (ACM). Ačkoli stále slouží jako příklad pro nové vydání učebnice Tanenbaum a Woodhull, je komplexně přepracován tak, aby byl „použitelný jako seriózní systém na počítačích s omezeným zdrojem a vestavěných počítačích a pro aplikace vyžadující vysokou spolehlivost.“
Zásady spolehlivosti
Jedním z hlavních cílů MINIX 3 je spolehlivost. Níže jsou diskutovány některé z důležitějších principů, které zvyšují jeho spolehlivost.
Zmenšete velikost jádra
Monolitické operační systémy jako např Linux a FreeBSD a hybridy jako Okna mít miliony řádků jádro kód. Naproti tomu MINIX 3 má asi 6 000 řádků spustitelného kódu jádra,[21] což může usnadnit nalezení problémů v kódu.
Umístěte chyby do klece
V monolitických jádrech ovladače zařízení sídlí v jádře. Když je tedy nainstalována nová periferní zařízení, je do jádra vložen neznámý, nedůvěryhodný kód. Jeden špatný řádek kódu v ovladači může poškodit systém.
Místo toho je v MINIXu 3 každý ovladač zařízení samostatným procesem v uživatelském režimu. Řidiči nemohou provádět privilegované pokyny, změnit tabulky stránek, provádět libovolně vstup výstup (I / O), nebo zapisovat do absolutní paměti. Musí provádět volání jádra pro tyto služby a jádro kontroluje každé volání oprávnění.
Omezte přístup řidičů do paměti
V monolitických jádrech může ovladač zapisovat do jakéhokoli slova v paměti, a tak náhodně poškodit uživatelské programy.
Když v MINIXu 3 uživatel očekává data například ze systému souborů, vytvoří popisovač, který řekne, kdo má přístup a na jaké adresy. Poté předá index tomuto deskriptoru do systému souborů, který jej může předat ovladači. Souborový systém nebo ovladač poté požádá jádro o zápis pomocí deskriptoru, což jim znemožňuje zápis na adresy mimo vyrovnávací paměť.
Přežít špatné ukazatele
Dereferencování špatného ukazatel v ovladači dojde k selhání procesu ovladače, ale nebude to mít žádný vliv na systém jako celek. Reinkarnační server automaticky restartuje havarovaný ovladač. Uživatelé si nevšimnou obnovení pro některé ovladače (např. Disk a síť), ale pro ostatní (např. Audio a tiskárna) by mohli. V monolitických jádrech vede dereferencování špatného ukazatele v ovladači obvykle ke zhroucení systému.
Zkrotit nekonečné smyčky
Pokud se řidič dostane do nekonečná smyčka, plánovač bude postupně snižovat svou prioritu, dokud nebude nečinný. Nakonec server reinkarnace uvidí, že neodpovídá na požadavky na stav, takže zabije a restartuje ovladač smyčky. V monolitickém jádře mohl ovladač smyčky systém pověsit.
Omezte poškození z přetečení vyrovnávací paměti
MINIX 3 používá pro interní komunikaci zprávy s pevnou délkou, což určité vylučuje přetečení vyrovnávací paměti a problémy se správou vyrovnávací paměti. Mnoho zneužití funguje také přepsáním vyrovnávací paměti, aby přiměl program k návratu z volání funkce pomocí přepsané zpáteční adresy zásobníku směřující do paměti řízené útočníkem, obvykle přetečení vyrovnávací paměti. V MINIX 3 je tento útok zmírněn, protože instrukční a datový prostor jsou rozděleny a lze provádět pouze kód v instrukčním prostoru (jen pro čtení), nazývaný ochrana spustitelného prostoru. Útoky, které se spoléhají na legitimní spuštění spustitelné paměti škodlivým způsobem (návrat k libc, návratově orientované programování ) tomuto zmírnění nebrání.
Omezte přístup k funkcím jádra
Získají se ovladače zařízení služby jádra (například kopírování dat do adresových prostorů uživatelů) voláním jádra. Jádro MINIX 3 má pro každý ovladač bitovou mapu určující, která volání je oprávněna provádět. V monolitických jádrech může každý ovladač volat každou funkci jádra, ať už autorizovanou či nikoli.
Omezte přístup k I / O portům
Jádro také udržuje tabulku, která říká, které I / O porty každý řidič může přistupovat. Řidič se tedy může dotknout pouze svých vlastních I / O portů. V monolitických jádrech může buggy ovladač přistupovat k I / O portům patřícím jinému zařízení.
Omezte komunikaci s komponentami OS
Ne každý ovladač a server musí komunikovat se všemi ostatními ovladači a servery. Podle toho bitová mapa na proces určuje, do kterých cílů může každý proces posílat.
Reinkarnujte mrtvé nebo nemocné řidiče
Speciální proces, který se nazývá reinkarnační server, pravidelně pinguje na každý ovladač zařízení. Pokud ovladač zemře nebo nebude správně reagovat na příkaz ping, reinkarnační server jej automaticky nahradí novou kopií. Detekce a nahrazení nefunkčních ovladačů je automatické bez nutnosti zásahu uživatele. Tato funkce v současnosti pro ovladače disků nefunguje, ale v příštím vydání bude systém schopen obnovit i ovladače disků, které budou ve stínu paměť s náhodným přístupem (RAM). Obnova ovladače nemá vliv na běžící procesy.
Integrujte přerušení a zprávy
Když přerušit dojde, je převeden na nízké úrovni na oznámení zaslané příslušnému ovladači. Pokud řidič čeká na zprávu, dostane přerušení okamžitě; jinak dostane oznámení, až to příště udělá a DOSTÁVAT
dostat zprávu. Toto schéma eliminuje vnořená přerušení a usnadňuje programování ovladačů.
Architektura
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/The_MINIX_3_Microkernel_Architecture.png/400px-The_MINIX_3_Microkernel_Architecture.png)
Jak je vidět, na spodní úrovni je mikrokernel, což je asi 4 000 řádků kódu (většinou v C plus malé množství montážní jazyk ). Zvládne to přerušení, plánování a předávání zpráv. Podporuje také aplikační programovací rozhraní (API) asi 30 volání jádra, která mohou provádět autorizované servery a ovladače. Uživatelské programy nemohou tyto hovory uskutečňovat. Místo toho mohou vydávat POSIX systémová volání které odesílají zprávy na servery. Volání jádra provádějí funkce, jako je nastavení přerušení a kopírování dat mezi adresními prostory.
Na další úrovni nahoru jsou ovladače zařízení, každý běží jako samostatný uživatelská země proces. Každý z nich ovládá některé I / O zařízení, například disk nebo tiskárnu. Ovladače nemají přístup do prostoru portů I / O a nemohou přímo zadávat instrukce I / O. Místo toho musí provádět volání jádra se seznamem vstupně-výstupních portů, na které se má zapisovat, a hodnotami, které se mají zapisovat. I když při tom existuje malá část režie (obvykle 500 ns), toto schéma umožňuje jádru zkontrolovat autorizaci, takže například zvukový ovladač nemůže na disk zapisovat.
Na další úrovni jsou servery. Zde se nacházejí téměř všechny funkce operačního systému. Uživatelské procesy získávají souborovou službu, například zasíláním zpráv na souborový server pro otevírání, zavírání, čtení a zápis souborů. Souborový server zase získá vstupně-výstupní operace na disku zasláním zpráv do ovladače disku, který řídí disk.
Jedním z klíčových serverů je server reinkarnace. Jeho úkolem je pravidelně dotazovat všechny ostatní servery a ovladače, aby zkontrolovaly jejich stav. Pokud komponenta nereaguje správně, vystupuje nebo se dostane do nekonečná smyčka, server reinkarnace (což je nadřazený proces ovladačů a serverů) zabije vadnou součást a nahradí ji novou kopií. Tímto způsobem se systém automaticky provede samoléčbou, aniž by zasahoval do běžících programů.
V současné době jsou reinkarnační server, procesový server a mikrokernel součástí důvěryhodná výpočetní základna. Pokud některý z nich selže, dojde k chybě systému. Snížení důvěryhodné výpočetní základny z 3–5 milionů řádků kódu, jako v systémech Linux a Windows, na přibližně 20 000 řádků výrazně zvyšuje spolehlivost systému.[Citace je zapotřebí ]
Rozdíly mezi MINIX 3 a předchozími verzemi
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Unix_history-simple.svg/220px-Unix_history-simple.svg.png)
MINIX 1, 1.5 a 2 byly vyvinuty jako nástroje, které lidem pomáhají seznámit se s návrhem operačních systémů.
MINIX 1.0, vydaný v roce 1987, byl 12 000 řádků C a některé x86 montážní jazyk. Zdrojový kód jádra, správce paměti, a souborový systém MINIX 1.0 jsou vytištěny v knize. Tanenbaum původně vyvinul MINIX pro kompatibilitu s IBM PC a IBM PC / AT mikropočítače v té době k dispozici.
MINIX 1.5, vydaný v roce 1991, zahrnoval podporu pro MicroChannel IBM PS / 2 systémy a byl také přenesen do Motorola 68000 a SPARC architektury podporující Atari ST, Komodor Amiga, Apple Macintosh a Sun Microsystems SPARCstation počítačové platformy. Verze MINIX běžící jako uživatelský proces pod SunOS byl také k dispozici.
MINIX 2.0, vydaný v roce 1997, byl k dispozici pouze pro x86 a Solaris -hostované architektury SPARC. Minix-vmd byl vytvořen dvěma Vrije Universiteit vědci, a dodal virtuální paměť a podpora pro Systém X Window.
MINIX 3 dělá totéž a poskytuje moderní operační systém s mnoha novějšími nástroji a mnoha Unix aplikace.[22] Prof. Tanenbaum jednou řekl:
Uvědomte si, že MINIX 3 není MINIXem vašeho dědečka ... MINIX 1 byl napsán jako vzdělávací nástroj ... MINIX 3 je to plus začátek budování vysoce spolehlivého, samoléčebného a nadupaného operačního systému ... MINIX 1 a MINIX 3 jsou příbuzné stejně jako Windows 3.1 a Windows XP jsou: stejné křestní jméno.[16]
Od verze MINIX 2 bylo také provedeno mnoho vylepšení ve struktuře jádra, což zvyšuje spolehlivost systému.[23] MINIX verze 3.1.5 byla vydána 5. listopadu 2009. Obsahuje X11, Emacs, vi, cc, GCC, Perl, Krajta, Almquistova skořápka, Bash, Z pláště, FTP klient, SSH klient, Telnet klient, Borovice a více než 400 dalších běžných obslužných programů Unix. S přidáním X11 tato verze označuje přechod od systému pouze pro text. Další funkcí této verze, která bude v budoucích vylepšena, je schopnost systému odolat selhání ovladačů zařízení a v mnoha případech je nechat automaticky vyměnit, aniž by to mělo vliv na běžící procesy. Tímto způsobem je MINIX samoléčebný a lze jej použít v aplikacích vyžadujících vysokou spolehlivost.
MINIX 3.2.0 byl vydán v únoru 2012. Tato verze má mnoho nových funkcí, včetně Zvonit překladač, experimentální symetrické více procesů Podpěra, podpora, procfs a ext2fs podpora souborového systému a GNU Debugger (GDB). Několik částí NetBSD jsou také součástí vydání, včetně bootloaderu, libc a různé utility a další knihovny.[24]
MINIX 3.3.0 byl vydán v září 2014. Toto vydání je první verzí, která podporuje ARM architektura kromě x86. Podporuje také a NetBSD uživatelská země, tisíce balíků NetBSD běží hned po vybalení z krabice.
Maskot
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f0/Rocky_Raccoon_mascot_of_MINIX_3.jpg/220px-Rocky_Raccoon_mascot_of_MINIX_3.jpg)
Rocky Raccoon je maskotem MINIX 3.[25]
MINIXCon
MINIXCon je konference o sdílení rozhovorů, úsilí a výzkumů souvisejících s MINIX.
Program MINIXCon2017 byl zrušen z důvodu nedostatku rozhovorů.[26][27]
Viz také
- Porovnání jader operačního systému
- Souborový systém MINIX
- Seznam výpočetních maskotů
- Kategorie: Výpočetní maskoti
Reference
- ^ corbet (2005-10-24). „Minix 3 zasáhne síť“. Lwn.net. Citováno 2014-05-01.
- ^ "minix3.org". minix3.org. Citováno 2017-04-16.
- ^ „Začínáme s Minix na Bochs v Mac OS“. Woodhull.com. Citováno 2014-05-01.
- ^ „OSNews.com“. OSNews.com. Citováno 2014-05-01.
- ^ „Minix v rámci postupu instalace VMWare“. Patrick.wagstrom.net. Archivovány od originál dne 12. 11. 2013. Citováno 2014-05-01.
- ^ „Minix na Virtual PC: první pohled“. Woodhull.com. Citováno 2014-05-01.
- ^ „Minix 3 on Virtual box“. inopinion.org.
- ^ Alting, Ingmar. „Port systému MINIX OS na platformu PowerPC“ (PDF).
- ^ „Minix3“. Minix3. Citováno 2014-05-01.
- ^ http://download.minix3.org/iso/snapshot/
- ^ „Intel ME: Cesta statické analýzy“. blog.ptsecurity.com. Citováno 2017-08-28.
- ^ Corna, Nicola (2017-08-28). "me_cleaner: Nástroj pro částečné odblokování obrazů firmwaru Intel ME / TXE". Citováno 2017-08-28.
- ^ http://www.cs.vu.nl/~ast/intel/
- ^ Tanenbaum, Andy (2006-09-25). „Úvod do MINIX 3“. OSnew. OSnews. Citováno 2008-07-04.
Z Znovuzrození část: „Různé studie ukázaly, že software obecně obsahuje něco jako 6–16 chyb na 1 000 řádků kódu a že ovladače zařízení mají 3–7krát více chyb než zbytek operačního systému. V kombinaci se skutečností, že 70% typického operačního systému se skládá z ovladačů zařízení, je zřejmé, že ovladače zařízení jsou velkým zdrojem problémů Windows XP, 85% selhání je způsobeno chybami v ovladačích zařízení. Je zřejmé, že aby byly operační systémy spolehlivé, je třeba něco udělat, abychom se vypořádali s ovladači buggy zařízení. Budování spolehlivého systému navzdory nevyhnutelným chybám v ovladačích zařízení bylo původní hnací silou MINIXu 3. “
- ^ „Kalendář událostí CSAIL“. Csail.mit.edu. Archivovány od originál dne 2012-02-04. Citováno 2014-05-01.
- ^ A b „Debata Tanenbaum-Torvalds, část II“. Cs.vu.nl. 12. května 2006. Citováno 2014-05-01.
- ^ http://www.MINIX3.org/reliability.html Archivováno 1. července 2006 na adrese Wayback Machine
- ^ "MinixReleases - Minix Wiki". Wiki.minix3.org. Citováno 2014-05-01.
- ^ Swift, Björn Patrick. „Individuální programovací přiřazení Plánování uživatelského režimu v MINIX 3“ (PDF). Minix3.org.
- ^ MINIX verze 3.3.0
- ^ „Operační systém MINIX 3“. minix3.org. Archivovány od originál dne 22.01.2012.
- ^ „FAQ - Minix Wiki“. Minix3.org. 09.11.2013. Citováno 2014-05-01.
- ^ http://www.minix3.org/improvements.html Archivováno 17. Dubna 2006 v Wayback Machine
- ^ „MINIX zprávy“. wiki.minix3.org. Archivovány od originál dne 18. června 2012. Citováno 29. února 2012.
- ^ „maskot [Wiki]“. wiki.minix3.org. Citováno 2017-07-20.
- ^ „Minix3“. www.minix3.org. Citováno 2017-11-11.
- ^ „Minix3“. www.minix3.org. Citováno 2017-11-11.
Další čtení
- Tanenbaum, Andrew S.; Woodhull, Albert S. (14. ledna 2006). Operační systémy: Návrh a implementace (3. vyd.). Prentice Hall. ISBN 0-13-142938-8.
- Budování spolehlivého operačního systému: odolnost proti chybám v systému MINIX 3 autor: Jorrit N. Herder (PDF)
- Reorganizace Unixu pro spolehlivost autori Jorrit N. Herder, Herbert Bos, Ben Gras, Philip Homburg a Andrew S. Tanenbaum (PDF)
- Programování modulárního systému v MINIX 3 autor: Jorrit N. Herder, Herbert Bos, Ben Gras, Philip Homburg a Andrew S Tanenbaum (PDF)
- J. N. Herder a kol., Programování modulárního systému v MINIX 3Přihlášení, duben 2006 (PDF)
- Pablo A Pessolani. MINIX4RT: Operační systém v reálném čase založený na systému MINIX
- Vytváření nástrojů pro měření výkonu pro operační systém MINIX 3autor: Rogier Meurs (PDF)
- Návrh a implementace virtuálního souborového systému MINIX (PDF)
- Referenční příručka k rozhraní MINIX 3 Kernel API (PDF)
- Směrem ke skutečnému mikrokernelovému operačnímu systému (PDF)
- Konstrukce vysoce spolehlivého operačního systému (PDF)
- Minix 3 a zkušenost s mikrokernely: Inteligentní jádro autor: Rüdiger Weis (PDF)
- Bezpečné a automatické živé aktualizace autor: Cristiano Giuffrida (PDF)
externí odkazy
- Oficiální webové stránky
- MINIX 3: modulární, samoléčebný operační systém kompatibilní s POSIX na Youtube
- minix3.ru (v Rusku)
- comp.os.minix - oficiální fórum (od roku 1987)
- Popis Minix 3 podle Andy Tanenbaum
- MINIX: co to je a proč je to stále relevantní? Rozhovor s Andy Tanenbaumem
- Dokumentace k síťové službě Minix
- Můžeme zajistit, aby operační systémy byly spolehlivé a bezpečné?
- Instalace Minix3 na Youtube
- Reimplementace NetBSD založená na mikrokernelu
- MINIX 3 na ARM autor: Kees Jongenburger
- Poučení z 30 let MINIXu Andrew S. Tanenbaum