Operációs rendszer írása?
Hogyan tudnék olyan operációs rendszert írni, ami jobb a windowsnál és a linuxnál is?
Milyen programnyelvek, programok és egyebek kellenek hozzá?
Emberek! Feltesz egy kérdést, ami egyébként a legblődebb dolgokká nőtte ki mára már magát, de mindegyik válaszadónál "okosabb". Vagy kicsi még, vagy csak veszekedni jött ide, end of story.
Én csak arra lennék kíváncsi, hogy az 50-es miért lett idióta? xDD
Szempontokra lebontva lehet csak az mondani, hogy az egyik jobb a másiknál. Olyan, mintha azt kérdezném, hogy melyik a jobb étel: a pizza, vagy a töltött káposzta? Ha nem objektíven állsz hozzá, akkor úgyis azt mondod, amelyiket szereted, ellenkező esetben meg ugyanúgy lebontod szempontokra (mennyire laktató, hízlaló, íz, stb.).
Ugyanez van itt is. Mi alapján akarod, hogy jobb legyen (segítek: a "mindenben" a lehető legrosszabb válasz, amit adhatsz, kérdező).
@11:28:
Ezen nincs nincs mit kifejteni, alighanem arra utal, hogy önmagában is az extrém ostobaság jele, ha még mindig hajlasz a vele való társalgásra. De lehet a háttérben regényesebb dolog is: Például a meghasadt éned túlsó fele, vagy maga Fekete Elme, a rettegett szoftverkalózkapitány próbált üzenni neked, erre kellett volna holmi titkos jelből felfigyelned, és a "tápiókapuding" jelszóval tanújelét adnod, hogy érted a dürgést. Képzelheted, mekkorát csalódott benned, amikor nem vetted a lapot, teljesen érthető az indulata.
Először nem akartam válaszolni, de végül nem bírom ki. Ezt kérdezed:
"A dos, vagy a cp/m szerinted milyen szempont szerint volt jobb a windowsnál, vagy a linuxnál?"
Kezdjük a CP/M operációs rendszerrel. Első változat 1974. Windows 1.0: 1985.11.20 (ez ekkor még nem önálló operációs rendszer, egy kiegészítés az MS-DOS-hoz), az első valóban önálló változatnak leginkább a Windows 3.0 tekinthető (ennek futásához már kellett a 386-os processzor!) 1990. május. A kettő közöt gyakorlatilag 15 év különbség van és egy egészen más architektúrás processzor.
CP/M 8 bites, jellemzően "kis teljesítményű" 8 bites procikon futott. Ezeknél nem volt hardver támogatás sem a multitaskra (ld. pl. Z80), sem a virtuális memóriára (egyiket se tudta, bár későbbi változatokban megjelent a kezdetleges multitask funkcionalitás). És miben volt jobb? Abban, hogy elfutott egy olyan környezetben ahol sem a CPU kapacítás nem volt korlátlan, sem a memória, ezeken a gépeken volt egy néhány MHz-es CPU, max. 64kByte memória (ROM+RAM együtt), esetleg mindenféle barkács trükkel a memória egy részét lapozhatóvá tették, de ez eléggé pótcselekvés volt. Teljesen jól használható rendszer volt, minden olyat tudott ami az adott dőszakban, az adott hardveren tudnia kellett.
MS-DOS (és elődje az IBM DOS): ez abban az átmeneti időszakban készült amikor megjelent a 8086-8088 proci, ami átmenet volt a 8 bites és a 16 bites procik között, inkább 8 bites volt az alap architektúra és kevésbé 16 bites. Szintén nem volt hardver támogatása a multitasknak, max. 1 MByte memóriát tudott kezelni a proci. És hát a 8MHz nem egy szélvész sebesség. Az "áttörés" a 386-os proci hozta, amiben már volt "rendes" hardver támogatás a multitaskra és a virtuális memóriára.
És pont ebből látszik, hogy fogalmad sincs, hog mit beszélsz mert egy talicskát hasonlítasz egy űrsiklóhoz.
Az összes többi meg már történelem.
Bár jelenleg nem ezzel foglalkozom de az elözö munkahelyemen OS-t fejlesztettünk, igaz nem PC-re, hanem beágyazott rendszerekre.
Tudás:
A Tannenbaum féle könyveket(amiket már egy elözö is említett) mindenképp ajánlom, elég jól fogalmaz, nem nehéz megérteni hogy kb. hogy néz ki egy OS belülröl.
A kód a legjobb dokumentáció. Ennek jegyében érdemes lehet nyílt rendszerek forráskódjait nézegetni. Persze nehogy nekiláss végigolvasni a freebsd kernel forráskódját, mert megöregszel, mire a végére jutsz. Inkább csak azt nézd meg, ami éppen érdekel, scheduling, IPC, memory management, syscall interface, ilyesmik.
Programozási nyelvek, programok:
Ugye mindenképpen olyan nyelv kell, ami rendesen fordul gépi kódra.
A C vagy C++ egy jó alap lehet, sok OS íródik ezekben. Ha szeretnél valami modernebb nyelvet, akkor pl Rust, D vagy a Nim is megfelelhet a célnak, biztos találsz más low-level nyelveket is.
Assemblyt szinte biztos nem fogod tudni megspórolni, de valószínüleg nem fog kelleni túl sokszor használni.
Kelleni fog egy jó fordító: ha C/C++ vonalon maradsz, akkor a gcc-t tudom ajánlani. Sokan használják, nem túl bugos, érett projekt. Sokan használják manapság az llvm/clang projektet, nekem ezekkel nincs sok tapasztalatom.
Ha más nyelvet választasz, akkor valószínüleg nem válogathatsz a compilerek közül, használd azt, ami van.
Fejlesztés közben elég lassú lenne, ha minden változtatás után úgy akarnád kipróbálni, hogy rendesen bebootolsz a fizikai gépeden. Ajánlatos valami virtualizációs vagy emulációs programot használni. Virtualbox jó lehet, de én inkább a qemut ajánlanám. Többfajta architektúrát meg utasításkészletet támogat.
Nézzük egyenként:
1./ "Hogyan tudnék olyan operációs rendszert írni, ami jobb a windowsnál és a linuxnál is?"
Attól most tekintsünk el, hogy a "jobb" ebben az esetben nem egy egzakt megfogható műszaki követelmény. Vegyük a "hogyan"-ra a választ:
I. Sok tanulással
II. Még több tanulással
III. Kell készíts egy előzetes rendszertervet, amiben benne van minden, hogy mit szeretnél az új operációs rendszertől. Pl. milyen hardveren akarod futtatni? (Nemcsak proci, hanem hardver is). A Windows/Linux említéséből gondolom, hogy itt valami PC jellegű cuccról van szó. Rögtön ez 2 eltérő procit jelent Intel és AMD. Ebből válassz egyet és kezd el olvasni, hogy mire képes a választott proci. Utána jön a legnehezebb a funkciók megtervezése, milyen funkciókat szeretnél benne látni? Itt van a neheze az egésznek, mert itt kell a funkciókat és a hardvert össze "hangolni". Jön a következő kérdés, hogy mi legyen a PC-k hardver felépítéséből adodó periféria kezeléssel, hogyan nézzen ki az 1000 féle grafikus adapter kezelése? Ezt ki kell találni előre. És szépen végig haladni az egészen. Itt lesz még néhány ezer kérdés amire választ kell alkossál. Mert minden továbbit befolyásol.
IV. ki kell találni, hogy milyen fájlrendszert akarsz használni?
V. Meg kell nézzed, hogy amire szükséged van abból mi szabadon felhasználható, mi licence köteles, minek milyenek a licence feltételei (ez még mindig a hogyan...) Ha itt túl sok a licencelt termék akkor vissza a III-ra és a IV.re.
2. kérdésed "Milyen programnyelvek, programok és egyebek kellenek hozzá?"
2.a.: Programnyelvek: ha igazán "jó" operációs rendszert akarsz írni akkor a kernel legalább kb. 90%-a assembly. Néhány kevésbé kritikus részt meg lehet írni C-ben, C++-ban, vagy a korábban már hivatkozott nyelvek egyikében is (akár python-ban is írhatsz hozzá részeket).
2.b.: programok: Egy szövegszerkesztő amiben a fejlesztői dokumentáció készül, egy nagyon jó fordító program amelyik az assembly programot fordítja. Itt egy linkert biztosan kell majd írjál, hogy legalább saját magával kompatibilis legyen a cuccod (ezt bármiben írhatod pl. pythonban is akár).
2.c.: egyebek: Amit fent írtam pl. a licence engedélyek, azokhoz a dolgokhoz amiket használsz. Rengeteg idő, és rengeteg tudás. Szintén nagyon nem elég a korábbi válaszadók által hivatkozott könyv alapos ismerete. Legalább 8-10 vagy még több operációs rendszer nem árt megismerni alaposan (és itt gondolok olyanokra amik nem unix alapúak/unix klónok;) pl. VMS (ezzel ma már szinte reménytelen találkozni), RSX11 (még múzeumban sem nagyon), zOS (vagy elődje OS/390 néven, vagy mégrégebben MVS), z/VM, z/VSE és társaik.
És ami számodra a legnehezebb (reménytelen) feladat lesz, meg kell tanuljad tisztelni a szakmát; a szakmában dolgozókat; még akkor is ha esetleg egy nem erre szolgáló oldalon kicsit laikusabb választ adnak.
További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!