Melyik a világ legkisebb operációs rendszere?

A legjobb válasz

Ez attól függ, hogy mit értesz az operációs rendszer alatt. Egyszer írtam egy egyszerű sorbaállítási rendszert, amely körbefutó módon több protokoll munkamenetet hajt végre. De szabványos operációs rendszer alatt futott. Amikor a mikrovezérlők először megjelentek a beágyazott rendszerek számára, a mérnökök általában megírták saját kezdetleges operációs rendszerüket, amint azt a többi válasz is jelzi. -a polcrendszert QNX-nek hívták. Ez egy levágott Unix rendszer volt, és az első IBM PC-n futott. Nem volt divatos grafikája, de kényelmesen tudtam rajta szoftverfejlesztést végezni. Valójában az egyetlen igazi különbség a modern gépekkel szemben a színes és grafikus felhasználói felület volt. Tehát alapvetően az IBM DOS bevezetése legalább 10 évre visszavetette a számítógépipart. Számos kiváló operációs rendszer volt (amelyeket adaptálni lehetett volna) vagy fejlesztettek abban az időben, természetesen a Unix meghatározta a mércét.

Válasz

Most fejeztem be a fejlesztést egy osztály kernelje ( CS-4284 Systems & Networking Capstone ) az utolsó félévemben az iskolában. Korábban olyan operációs rendszert tanultam, amelynek célja az operációs rendszerrel való együttműködés a programozó szemszögéből, nem pedig egy operációs rendszer tervezőjének szemszögéből. Az elmúlt másfél évben részt vettem az operációs rendszer és a kernel fejlesztésében (ez nem sokáig, de sokat tanultam), itt ajánlom:

1. C mester Ezt már nem tudom hangsúlyozni. Nem igazán, mester. Az operációs rendszer fejlesztése nehéz. Sok olyan fogalmat tartalmaz, amelyekre valóban szükséged van a C elsajátításához, így nem áll az utadban. Vegyük például a Unix csövet (beírva | héjba). Ahhoz, hogy az operációs rendszerben létrehozzon egy csövet, nagyon jól meg kell ismernie az operációs rendszer fájlrendszerét és fájlstruktúráját. Ez egy tipikus, korlátozott pufferrel kapcsolatos probléma (fogyasztó / gyártó), és az összes szinkronizálással foglalkoznia kell. A virtuális memóriával tisztában kell lennie annak írásakor. Ezenkívül a Unix tipikusan BYOB (hozzon magával saját puffert). megfelelően kezelnie kell a felhasználó által biztosított puffert stb. … Az utolsó dolog, amit itt megtenne, az az alapvető C kérdések kezelése, mint a mutatók és a memóriakezelés (megjegyzés: a memóriakezelés az operációs rendszerben 10-szer nehezebb, mint a C memóriakezelés: tisztában kell lennie a felhasználó és a kernel címterével)

2. Kernel vs OS Meg kell értenie a különbséget a kernel és az OS között. A kern lényegében az operációs rendszer agya. Az operációs rendszer egy sor alkalmazás, amelyek együtt vannak csomagolva. Például a Mac OS X tartalmaz: kernelt, interfészt (GUI), beépített standard alkalmazásokat (Finder – ami csak egy absztrakció a vizualizálja a fájlrendszert, a TextEdit-et, a shell-t stb …)

3. Ne merüljön egyenesen Lehetetlen elindítani kernel fejlesztése néhány nap vagy hét alatt. Javaslom, hogy kezdje a következővel:

  1. Ismerkedjen meg a GCC fordítási lépéseivel (mi történik a gcc futtatásakor, hogyan futtatható egy fájl és mi a program futtatásakor). Írhat egy egyszerű assemblert is C-be (vegye az összeállítási kódot bemeneti és kimeneti gépkódként. Ehhez meg kell értenie, hogy mi az .data, .text és .bss szakasz az összeállításban (nagyon hasznos le az út az operációs rendszer virtuális memóriájának megértéséhez). Meg fogja érteni a gépi címzést és az ágak feloldásának módját is.
  2. Ismerkedjen meg a mach ine szintű eszközök és programok. Azt javaslom, hogy végezze el a bombalabort, mert rengeteg oktatási anyag van hozzá. Csak google bomblabor.
  3. Ismerje meg az operációs rendszer alapvető támadásait. Javaslom, hogy az 1. ponttal megegyező okból (a Google puffer túlcsordulási laboratóriuma) vizsgálja meg a puffertúlcsordulást.
  4. Tudjon meg többet a C rendszerbeli hívásokról, szálakról és folyamatokról. Innen kezdve dolgozzon ki saját héjat C-ben.
  5. Ismerje meg a memória-allokációt, és hajtsa végre a malloc és free alkalmazást a C-ben. Ismerje meg a tervezési kompromisszumokat, az allokációs stratégiákat, a felszabadítási stratégiákat stb. …
  6. Ismerje meg a többszálas és többszörös feldolgozást merüljön el a szinkronizációs mechanizmusokba (zárak, mutexek, szemaforok), és dolgozzon ki egy szálkészletet C-ben, amelyet más programok is használhatnak.

4. Most elindíthatja a valódi, mégis egyszerűsített operációs rendszer kernel fejlesztését Ezen a ponton elkezdheti a fejlesztést egy igazi operációs rendszeren, mint operációs rendszer tervezője. Google Stanford Pintos és hozzáférhet egy kis oktatási kernelhez, amelyet a Stanford fejlesztett ki. Dokumentációval és 4 projektből áll. Google-on kereshet néhány olyan iskolát, ahol előadási diák vannak a Pintos számára. Javaslom az Operációs Rendszer fogalmak ( Amazon.com: Operációs rendszer fogalmak (9781118063330)) vásárlását: Abraham Silberschatz, Peter B.Galvin, Greg Gagne: Könyvek ). A dokumentáció nagyon jó, és a projekteket jól elmagyarázzák. Az operációs rendszerhez tesztek is tartoznak, amelyeket a “make check” futtatásával futtathat, így láthatja, hogy megfelelően csinált-e dolgokat.

5. Elkezdheti hozzájárulni a Linux-hoz Sok erőfeszítést igényel a forráskód és a Linux tervezési döntéseinek vizsgálata (amelyek sokkal bonyolultabbak, mint a Pintos-ok), de úgy gondolom, hogy ezen a ponton legalább kezdeni kell. További gyakorlással és olvasással fel tudja venni.

Most fejeztem be a 4. lépést. Imádtam az 1–3. Lépéseket, de őszintén szólva a 4. felénél rájöttem, hogy nem érdekel az OS fejlesztése. Nagyon szerettem programozóként dolgozni az operációs rendszerrel (programozó szemszögéből), de nem élveztem annyira a mélyebb ásást. Sokat tanultam a kernel fejlesztéséből, és ez sok mindenre kitesz. Továbbá, ha tudsz kernelt írni, akkor odaírsz bármilyen szoftvert. Nyomatékosan ajánlom legalább az első 3 lépés elvégzését, mivel nagyszerű betekintést nyújt az operációs rendszerbe. Szó szerint jobb szoftvermérnök leszel. Megtanulod jobban értékelni a magas szintű nyelveket, és megtanulod, hogyan használd a megfelelő eszközt / nyelvet / technológiát a megfelelő munkához is.

sok anyag az operációs rendszer fejlesztéséről, projektekről, tesztekről stb. Ha érdekli az embereket, szóljon hozzám kommentárokkal, és talán összeállíthatok egy online e-könyvet / oktatóanyagot / tesztelési környezetet tartalmazó útmutatót, amely a kezdőket az operációs rendszer fejlesztésébe és nyújtson projekteket és visszajelzéseket a munkához.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük