Sziasztok!
Hol találhatok olyan leírásokat, hogy hogyan tanulhatunk meg rendszerindítót írni (és azt az MBR-be írni), egér, billentyűzet kezelést, képernyőre tartalmat küldeni (videó-memóriába), primitív fájlrendszer létrehozása és fájlkezelést, programok futtatásának lehetőségét? Szóval egy oprendszert szeretnék írni, tanulás céljából. :) Gondolom bőven nem elég Agárdi Gábor Gyakorlati Assembly könyvének a bújása :) Annyi mindenki ír már manapság saját rendszert, hogy megelégeltem és én is akarok egyet :) Az iskola ilyenekre nem tanított meg :)
Köszi.
- 13492 megtekintés
Hozzászólások
Javaslom e rendszer tanulmányozását és a hozzá tartozó könyvet.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Azt javaslom mikrokernelt csinálj!
- A hozzászóláshoz be kell jelentkezni
Egyiknek ez másiknak az az előnye (a monolit gyorsabb, a mikro pedig rugalmasabban használható). Szerintem pedig tanulás céljából jobban jár ha monolitot ír. Sokkal gyorsabban lehet vele haladni, és ha benézte a mikrokernel felépítésést, akkor íratja át az egészet.
------
3 fajta matematikus létezik. Aki tud számolni, és aki nem.
- A hozzászóláshoz be kell jelentkezni
Keresd meg egy Douglas E. Comer nevű író Xinu-ról szóló könyveit.
nem, nem xenu, az egy másik műfaj:)
- A hozzászóláshoz be kell jelentkezni
nem is ismertem...
--
Dropbox:
https://www.getdropbox.com/referrals/NTI3NzY1ODQ5
- A hozzászóláshoz be kell jelentkezni
esetleg
Horváth Gábor: Bepillantás az operációs rendszerek világába (LSI, 2000)
- A hozzászóláshoz be kell jelentkezni
+1
továbbá jó lenne kicsit ismerkedni a processzor módjaival, memóriakezelés, stb. (dr. Kovács Magda: 32-bites mikroprocesszorok I-II LSI, Agárdi-Hadi: Fókuszban a pentium, 1999)
- A hozzászóláshoz be kell jelentkezni
"dr. Kovács Magda: 32-bites mikroprocesszorok I-II LSI"
Na ez egy nagyon gagyi könyv, gyakorlatilag a lényegi része az Intel kézikönyv igénytelen fordítása és összeollózása. Nagyon sok hibát tartalmaz, és az LSI hibajegyzéket nem adott ki hozzá.
Ezek a könyvek még akkor készültek amikor a szerzőket mennyiségre (ívekre) fizették nem pedig minőséget követeltek meg. A szerző a Gábor Dénes legrosszabb hírű "főiskola" alapítója volt, nem volt igazán szakember már az életkora miatt sem. Amúgy sok szempontból már ósdi az architectúra amivel foglalkozik (i386). Az LSI könyvek általában a gagyi kategoriába tartoznak, elmesélő stílusú a nagyközönségnek szánt kilóra összeollózott könyvek.
Érdemes az eredeti Intel dokumentációkat beszerezni, és azokból dolgozni.
- A hozzászóláshoz be kell jelentkezni
az intel kottát már csak azért is érdemes beszerezni, mert (legalábbis, amikor utoljára néztem) ingyen letölthető volt... lustaság rulez:)
- A hozzászóláshoz be kell jelentkezni
Itt megtalálható: http://www.intel.com/products/processor/manuals/
- A hozzászóláshoz be kell jelentkezni
Na ez egy nagyon gagyi könyv, gyakorlatilag a lényegi része az Intel kézikönyv igénytelen fordítása és összeollózása.
+1
Én akkor tettem le, amikor az egyik (magyarul értelmetlen) félretükörfordított mondat értelmét sikeresen dekódoltam azzal a módszerrel, hogy a magyar mondatot visszatükörfordítottam angolra (kb. mit írhatott az eredeti író, amit erre tükörfordíhattak), majd immáron az angol eredeti mondatból megértettem, hogy mit is akarnak mondani.
- A hozzászóláshoz be kell jelentkezni
> "dr. Kovács Magda: 32-bites mikroprocesszorok I-II LSI"
Szerintem nalam meg mindig ott van a polcon, ha valakinek kellene ingyen. Valaki meg regebben sozta ram, de nem foglalkoztam vele.
- A hozzászóláshoz be kell jelentkezni
Ne válj meg tőle, inkább írj egy operációs rendszert! Ha már a birtokodban van a "Szent Grál"!
:-{)E
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba és kész!
- A hozzászóláshoz be kell jelentkezni
azt hiszem én igényt tartanék rá :)
- A hozzászóláshoz be kell jelentkezni
Írj WPA2 támogatást Haikuba, vagy javascript alapú flash plugint és király leszel. Nagyon dudva muhar.
- A hozzászóláshoz be kell jelentkezni
http://superfrink.net/athenaeum/OS-FAQ/os-faq.html
Szemre ez jó kiindulási alap (google: "how to write my own operating system", első találat, 0,15 sec), bár némely kérdésed - "hogyan tanulhatunk meg rendszerindítót írni" - nekem azt jelzi, hogy kissé nagy fába vágod a fejszédet.
- A hozzászóláshoz be kell jelentkezni
Valóban nem elég az agárdi könyv. Kell mellé a Pethő féle és a Norton féle. Utána már csak gondolkodni kell. Ja, ha még a boot-on kívül mást is akarsz, akkor pár év olvasgatás kell és persze még pár tucat könyv. Előbb ess át az első három könyvön.
- A hozzászóláshoz be kell jelentkezni
+1
Pethő Ádám IBM PC/XT sorozatát érdemes olvasgatni, főleg a "ROM BIOS és ami mögötte van" c. könyvet. Az Internet előtti időkben sokan csak bibliának tartották.
Peter Norton Assembly könyve sem kutya, főleg azzal a szerény indítással, hogy közvetlenül a memóriába beírat az emberrel egy rövidke hexdump-ot (DOS debug-ot használva), amiről később kiderül, hogy egy komplett futtatható program.
Erről jut eszembe, ha OS írás előtt nem árt egy kicsit real módú környezetben, pl. DOS-ban edzeni rá. Virtualizálás nélkül a legfincsibb, úgy érezni igazán, mint is jelent megfagyasztani a vasat egy félrecsúszott megszakításkezelővel.
- A hozzászóláshoz be kell jelentkezni
"virtualizálás nélkül a legfincsibb, úgy érezni igazán, mint is jelent megfagyasztani a vasat egy félrecsúszott megszakításkezelővel."
Főleg céges, kritikus adatokat tároló gépen :)
"Mottó: Minden space-nek súlya van!" XD
No rainbow, no sugar
- A hozzászóláshoz be kell jelentkezni
"Főleg céges, kritikus adatokat tároló gépen"
Nyilván olcsó, használt PC-n kell kísérletezgetni, mert a "rendes" vas leírások böngészéséhez és zenehallgatáshoz kell.
- A hozzászóláshoz be kell jelentkezni
Inkább definiálj egy virtuális gépet - mint a Java, vagy a .NET - , valósítsd meg mondjuk Linux felett, és írj arra oprendszert.
- A hozzászóláshoz be kell jelentkezni
"Annyi mindenki ír már manapság saját rendszert, hogy megelégeltem és én is akarok egyet :) Az iskola ilyenekre nem tanított meg :)"
Nem tudom, ki mindenki ír manapság salyát rendszert, remélem, nem az ubuntu-remasterekre gondolsz, mert ugyanis azokban egyetlen salyát "írás" nincsen.
Ellenben tegnap mindenki salyát honlapot csinált. Te is.
Ha ugyanilyen kitartó leszel az "oprendszereddel" is, akkor bele se vágj.
- A hozzászóláshoz be kell jelentkezni
"salyát"?? Gondolod ezután hivatott vagy itt bárkit is kritizálni kispofám? :))
--
When your mind is empty of prejudices you can see the Tao.
When your heart is empty of desires you can follow the Tao.
- A hozzászóláshoz be kell jelentkezni
Igen. Ezt gondolom.
Olvasd végig az elmúlt tíz évemet, ha eddig nem esett volna le.
- A hozzászóláshoz be kell jelentkezni
"Ennyi ideje regisztrált felhasználó
5 év 22 hét"
hmm...
No rainbow, no sugar
- A hozzászóláshoz be kell jelentkezni
Ettől függetlenül egy egyszerű magyar szó leírása nehézségeket jelent ... lehet az 5 év, 8 év, akármennyi azért a "saját" az elég alap már meg ne haragudj.
--
When your mind is empty of prejudices you can see the Tao.
When your heart is empty of desires you can follow the Tao.
- A hozzászóláshoz be kell jelentkezni
Teszek ide egy szmálylit (vigyázat, újabb kisbetuizmus!!!), csak hogy mindenki értse, hogy értette:
:)
- A hozzászóláshoz be kell jelentkezni
Hidd el, nem jelent nehézséget. Ezt sem, mást sem.
- A hozzászóláshoz be kell jelentkezni
Ezt hogy is értetted?
EZEN a fórumon ennyi ideje (idelye? nem, neked nem).
Máshol régebb idők óta.
- A hozzászóláshoz be kell jelentkezni
aháá, szóval akkor tíz éves vagy :)
No rainbow, no sugar
- A hozzászóláshoz be kell jelentkezni
jajj, nem ment át a message :)
- A hozzászóláshoz be kell jelentkezni
[nemtámábavágó]
Huh... ha ez így jön le, kíváncsi lennék mit csinálsz
a tv-vel megafaktor közben... Kicsit több szerenittyet
tanúsíthatnál.
[/nemtámábavágó]
- A hozzászóláshoz be kell jelentkezni
A témával kapcsolatban irreleváns, hogy tud-e a kolléga helyesen írni.
Ennek a komikumát nem is tudom értékelni a hozzászólásod végén:
When your mind is empty of prejudices you can see the Tao.
When your heart is empty of desires you can follow the Tao.
- A hozzászóláshoz be kell jelentkezni
Hm, kisbetut nem ismerni... Igaz, én meg azt nem tudom, ki az a s3r3nity ;)
- A hozzászóláshoz be kell jelentkezni
nem, nem remasterekre gondolok. teljesen elölről elkezdeni írni valamit. nagyon érdekel, hogy hogyan valósítható meg egy rendszer.
- A hozzászóláshoz be kell jelentkezni
Látod, kapsz itt hideget is, meleget is. Hideget azért, mert végletekig naivan állsz a témához, ez az öregrókák számára már-már írritálóan nagyképűnek tűnhet. Meleget meg azért, mert ezek a rókák itt mit nem adnának azért, ha lenne pár évük csak arra, hogy saját oprendszert írjanak.
MysteryKe, a fönt említett Minix könyv elmondhatatlan örömöt okozott nekem évekkel ezelőtt. Azután a The Linux kernel book-ot faltam nagy élvezettel. Ilyeneket a neten is találsz, sőt, kifejezetten híres fejlesztőktől is elcsíphetsz néhány érdekes olvasnivalót: http://kernelbook.sourceforge.net/
Én ugyan oprendszert csak érteni akartam, írni nem, de kezdetnek a linux boot loadert piszkálgattam, képzeld, megsúgom, hogy a floppy.c-t még ki is nyomtattam, és filctollal bejelölgettem (csak hogy mosolyt csaljak most itt mindenki szemébe ;-). Nyilván semmi értelme se volt. De tudod mit MysteryKe, rohadt jól szórakoztam közben. Nem is tudod, micsoda kaland előtt állsz, komolyan.
Figyelj csak, ne tököld el itt az idődet hülye kérdésekkel, hanem húzzál gyorsan olvasni. ;-)
Szerk.: Úgy értem, ne gondolj bele, hogy mekkora fába vágod a fejszéd, hanem hajrá!
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
a "végletekig" kicsi túlzást, tudom, hogy hosszú-hosszú éveken át tartó kemény, verejtékes, sziklakemény tanulás szükséges eme tudáshoz. Valamennyi naívság szükséges is hozzá, hogy el tudja kezdeni az ember. Valahol meg el kell kezdeni :) én tényleg csak tanulás céljából szeretném ezeket megtanulni. Nem is 2 éve alatt szeretném ezt megvalósítani.
Köszi a könyveket, ma szinte nem is csináltam mást, mint Assembly könyvek után gugliztam.
Nekem úgy megy a legkönnyebben a "megértés", ha azt gyakorolni is tudom. Ezért szeretem jobban a gyakorlati órákat is a suliban. Szeretem a kalandokat, de ahhoz tényleg kell naívság. Ha az embert már előre elrettentik, nem igazán lesznek ambíciói. Tehát nem rettentem el :) Tudom, hogy "mi' fán terem" a PC :) (Nagyjából :) buszok, IRQ megszakítások, memória címzés (offset:szegmens), hardvercimzés, processzor utasítások, fájlrendszer létrehozása (sáv-, szektor- és cluster-kezelés)), illetve perifériák vezérlése.)
nem gondoltam semmilyen a "köz" által is használható rendszert készíteni (így pl. hálózatba nem is folynék bele.)
Ami talán a legnehezebb lenne, az a driver írása lenne. Pl.
Az én terveim szerint is az olvasás volt az első :)
szerk.: aztán majd ha lesz ezekről sejtésem, akkor biztos egy már meglévő és sokak által használt kernelre építeném a rendszeremet
- A hozzászóláshoz be kell jelentkezni
> Ami talán a legnehezebb lenne, az a driver írása lenne. Pl.
Nem tudom pontosan milyen driverre gondoltál most, meg ez erősen függ a hardver ismeretétől, dokumentáltságától is, de egy meglévő oprendszerhez megírni egy drivert, általában az egyszerűbb feladatok közé tartozik.
- A hozzászóláshoz be kell jelentkezni
hangkártyához vagy bármi máshoz, amihez nincs dokumentáció
- A hozzászóláshoz be kell jelentkezni
Haangkártya, baba!
Csak DMA-t kell vezérelni kb.
Inkább fejtsd vissza a POWERVR Kyro bináris driverét amit 2.4-es kernelre írtak:
http://www.imgtec.com/powervr/insider/powervr-drivers.asp
- A hozzászóláshoz be kell jelentkezni
Azért a "saLYát" konzekvens leírása fájt....
- A hozzászóláshoz be kell jelentkezni
Lehet hogy nem volt jó poén de hidd el tud írni. Sok évig a fórumok rettegett grammarnazija volt, gondolom mostanra belefáradt. :)
--
fantázisdús aláírás v1.09
- A hozzászóláshoz be kell jelentkezni
Beleőszült.
- A hozzászóláshoz be kell jelentkezni
Kár.
--
unix -- több, mint kód. filozófia.
Life is feudal
- A hozzászóláshoz be kell jelentkezni
Elhíszemm hoty tudd irní. De a salyát akor is fályt!
- A hozzászóláshoz be kell jelentkezni
"nem tudom, ki mindenki ír"
Qrva sokan. Itt egy lista "pár" hobbios-ről: http://wiki.osdev.org/Projects
- A hozzászóláshoz be kell jelentkezni
Védett módú oprendszeres könyvek.
Grub+multiboot kompatibilitás+védett módba kapcsolás+deszkriptor táblák+megszakítások+privilégium szintek+amit csak akarsz.
- A hozzászóláshoz be kell jelentkezni
Röviden és tömören: Tanulmányoznám az oprendszerrel szemben támasztott követelményeket, a most létező operációs rendszerek felépítését, működését. Választanék egy szimpatikus utat, és nekiállnék a megvalósításnak. Ha egyik út sem nyerte meg a tetszésemet, akkor kitalálnék egy új felépítést.
Bármelyik úton indulsz el, tedd szabaddá magad az elkövetkező néhány évre. Ha nem akarsz ennyi időt rászánni, akkor nem érdemes belekezdeni. Ha olyat akarsz írni, amit mások is használnak, akkor inkább egy vagy több évtizedben gondolkodj.
-----
"Guglizni csak pontosan, szépen, ahogy a csillag megy az égen, úgy érdemes.""
- A hozzászóláshoz be kell jelentkezni
Elsőre azt hittem fun rovat.
--
2e845cb4c3a5b5bd6508455b1739a8a2
- A hozzászóláshoz be kell jelentkezni
Előre szólok, hogy kicsit hosszú és szubjektív lesz a folytatás ;)
Pár évvel ezelőtt én is próbáltam oprendszert írni. Egészen addig jutottam, hogy bebootolt a "rendszer" és ment egy egyszerű kontext switch (3 kód futott egyszerre). Mindez több hónapot vitt el az életemből, és egy bizonyos fokú látásmód változáson túl semmilyen használható tudásra nem tettem szert :(
Az egész nem szólt másról, mint órákon át a doksikat bújni, neten megoldásokat keresni, majd begépelni 2 sort. Minimális programozói vénával bárki, akinek végtelen sok szabadideje van, tud oprendszert írni.
Megpróbálom pontokba szedni a tapasztalataimat a teljesség igénye nélkül:
- olvasnivalók:
* a legfontosabb az Intel Pentium saját kézikönyve, ahol teljes részletességgel leírja hardver programozását
* Tanenbaum-féle oprendszerek könyv (Minix forráskóddal)
* olyan ASM könyv ahol az utasítások, azok gépi kódja részletesen le van írva, a programozástechnika mellékes
* célszerű még egy-két magyar nyelvű ASM, Pentium procis könyv beszerzése (pl. Agárdi G. könyvek:)
* Linux kernel (nagyon tanulságos!)
- kell egy VM (én bochs-t használtam)
- 1. lépés: írj boot sectort, ami betölt egy további programkódot lemezről (nincs fájlrendszer)
- első lépésnek szerintem csak védett módba érdemes kapcsolni a procit, és az 1000 féle kiegészítést (MMX, anyámtyúkja funkciókat) hanyagolni.
- az első verzióban ne törekedj szép kódra, optimalizálásra, csak a működésre, mert később töredék idő alatt meg lehet oldani
- az intel processzorok 386 módban nem a legkifinomultabbak (a visszafelé kompatibilitás miatt furcsa "okosságok" vannak benne), az új, 64 bites módokhoz nem volt szerencsém
- az intel procik saját oprendszerrel való használati lehetősége eléggé korlátozott, ezért nagyon át kell gondolni, pontosan mit is szeretnél megvalósítani. Az én álmom pl. az volt, hogy egy minimál kernelt hozok létre amely rendszerhívás szinten támogatja a neurális hálókat és később ipari robotok vezérlésének irányába mozdítom el a dolgot. (ma már tudom, hogy ipari célokra jobb célhardverek vannak, mint a egy PC)
- a fájlrendszer+lemezkezelés maga kb. olyan bonyolult, mint a boot sector + alap kernel
- egyedül nem lehet kivitelezni egy ilyen projektet értelmes időn belül (mondjuk fél év napi 8 óra legyen még értelmes)
- a programozós és processzor tapasztalataim nagy részét elfelejtettem az elmúlt pár évben :)
- ha valami, mai szemmel nézve "értelmes oprendszerre" szeretném fordítani fölös energiámat, akkor semmiképp nem intel procit programoznék, hanem pl. PIC-et, és az intel proci bonyulult extráinak megtanulása helyett inkább az elektronikai tudásomat fejleszteném, hogy a PIC-re írt "oprendszer" (inkább csak program) pl. egy robotot irányítson. Kisebb energiabefektetés, nagyobb sikerélmény, és később még a tudás is használható
- ha mindenképp intel, akkor max linux kernel átírásában gondolkoznék, vagy egy most futó opr. projektbe szállnék be
- ha érdekelnek a robotok és van pénzed, nézd meg a Lego NXT-t!! (az idő pénz -> ez igencsak költséghatékony)
- A hozzászóláshoz be kell jelentkezni
Először rakj össze egy saját kocka disztrót!!!!4444
Ajánlott irodalom a témában :D
- A hozzászóláshoz be kell jelentkezni
Valahogy éreztem, hogy poliverzum lesz belinkelve :D
- A hozzászóláshoz be kell jelentkezni
title GoboLinux - Console (hda8)
kernel (hd0,7)/System/Kernel/Boot/kernel root=/dev/hda8 vga=0
Amint látszik a titokzatos (hd0,7) részen, a vessző utáni szám eggyel kisebb,
mint a partíció száma amire telepítettünk, - ez a titka az egésznek. Ez a Grub
progi valami hülyesége, nem tudom az okát, de így van. A hd utáni szám
pedig azt jelenti, hányas merevlemezről van szó.
A grub-ról például sokat tanulhatsz belőle. Ami egy nagyon kényelmes és praktikus eszköz saját minimál kernel betöltéséhez.
- A hozzászóláshoz be kell jelentkezni
"grub-ról például sokat tanulhatsz belőle"
:D
- A hozzászóláshoz be kell jelentkezni
Szent hurkapálcika! Tényleg ilyen ez a könyv? Most már muszáj lesz elolvasnom :D Egyre kevesebbet van időm vígjátékokat nézni :D
"Ez a Grub progi valami hülyesége, nem tudom az okát, de így van."
Oszk-nál azért megnézhetnék, mit tesznek ki.... Könyvet írni úgy, hogy nem tudom, mi miért van? Kvák...
- A hozzászóláshoz be kell jelentkezni
Mér ke' csodákozni ? :)
Én mikor be voltam öltözve, és oktatásra járunk a Fradi pálya mellé (jól tudom, hogy ott most egy kráter van, vagy már beépítették a helyét? :) ) híradó szakon, a rádiós kocsi berendezéseinek oktatása során az oktató alezredes szájából a következő hangzott el (adalék: mi rigók voltunk, azaz diploma utáni tartalékos parancsnoki képzést kaptunk, tisztként szereltünk stb.):
"... valamint egy 12/24-es DC/DC átalakító, ahol ez a DC valami rövidítés lehet, nem is tudom mi, de ez igazából nem is fontos..."
Mivel híradó szakra a műszaki végzettségűeket válogatták, ez kissé sokkolta a hallgatóságot :)
- A hozzászóláshoz be kell jelentkezni
Igen, végülis hasonló élményem nekem is volt hangmérnök tanoncként:
"a kompresszor akkor jó, ha sűrűn villog a LED" :D
- A hozzászóláshoz be kell jelentkezni
elvégre akkor dolgozik, és azért van bekötve hogy dolgozzon :)
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
+1 érdemes nézegetni ezt is: http://www.osdever.net/
Meg érdemes átrágni magad néhány tutorialon is:
http://www.jamesmolloy.co.uk/tutorial_html/index.html
http://www.osdever.net/tutorials/view/brans-kernel-development-tutorial
Azonban vigyázz! Ezek a tutorialok és az osdev wikije is rengeteg hibát tartalmaz, egy-az-egyben nem használható, csak támpontot adnak! A copy-n-paste epic fail. Pl. szinte mindegyikben hibásan szerepel a GRUB Multiboot header. Hogy mi benne a hiba, azt nem árulom el, arra már magadtól kell rájönnöd :-)
- A hozzászóláshoz be kell jelentkezni
Milyen előképzettséged van? (annak megfelelően hátha tudok mondani valamit..)
Software is like sex, it's better with a penguin. :D (r)(tm)(c) آكوش
- A hozzászóláshoz be kell jelentkezni
(Pascal, C, C#)-ból van OKJ (tudom, hogy ettől még ott van a tojáshéj a fenekemen :) ) régen Basic egy commodore plus 4-en, meg tudtam 2 képernyőre kiírás példát az Agárdi-féle assembly könyvből, meg a PHP (tudom, hogy eredetileg csak szkript nyelv, de akkor is imádom :) )
- A hozzászóláshoz be kell jelentkezni
Hát ha OS-t akarsz matatni, akkor szerintem mikrokontrolleren szórakozz FreeRTOSsal. A doku sajnos nincs ingyen. Minimális az OS kódja, és betekintést kapsz abba, hogy mi az a minimum amit egy OS csinál. Ráadásul szerintem könnyű sikert elérni vele. Írhatsz magadnak egy tucat drivert. Megy ARMon is. C-ben kell kódolni.
Én szem előtt tartanám, a tanulási utat, (vagy mire fordítják azt, hogy learning curve?) mert különben lehet, hogy el megy a kedved az egésztől egy idő után.
Aztán ha már a vécédeszkában is mikrokontroller zenél, akkor írj egy másik uC oprendszert, ha nem tetszik a FreeRTOS.
Software is like sex, it's better with a penguin. :D (r)(tm)(c) آكوش
- A hozzászóláshoz be kell jelentkezni
Szerintem amit tudsz, az édeskevés bármihez ezen a területen.
Az én véleményem szerint a következő minimum tudás kell ahhoz, hogy egyáltalán érdemes legyen nekiállni:
- nagyon stabil assembly és hozzá kapcsolódó HW tudás: a kiszemelt CPU architektúra alapos ismerete, privilégiumszintek, memóriaszervezés, cache kezelés, interruptok, trapek működése
- nagyon stabil HW chip-szintű tudás, a kiszemelt architektúrán előforduló alapvető chipek programozása: memóriavezérlő, interrupt vezérlő, DMA vezérlő, I/O vezérlők (soros port, USB port, printer port, billentyűzet interfész, videókártya, floppy/IDE/SATA/SCSI/CF/stb. vezérlők, akármi, ami van azon a platformon), modern gépek esetében PCI busz/slot kezelés
- nagyon stabil C tudás (azon a szinten, hogy a compiler az adott forrásból milyen assembly-t fog előállítani!)
Ez szerintem alsó hangon 5 év alatt szedhető össze napi rendszerességű ilyen témákban való foglalatossággal, onnantól, hogy elolvastad az első könyvet az adott nyelvről.
Ezen felül kell valami minimális tudás az operációs rendszerek működéséről (különben azt se fogod tudni, hogy mit kell csinálnia a programnak, amit írsz), de ha bármire szeretnéd is használni az eredményt, akkor minél több létező operációs rendszert fel kéne fedezni, hogy azokon mit hogyan csináltak meg, mert különben menet közben fogsz rájönni, hogy erre meg erre nem gondoltál, és az alapvető architekturális változtatásokhoz a fél rendszert írhatod újra. Ez szintén több év ismerkedés a világ eddigi dolgaival, ha ki is akarod őket próbálni, akkor még több.
- A hozzászóláshoz be kell jelentkezni
Mondjuk én nem állnék neki OS-t írni, de azt hiszem én nem x86-on kezdeném. Erről mi a véleményed?
Software is like sex, it's better with a penguin. :D (r)(tm)(c) آكوش
- A hozzászóláshoz be kell jelentkezni
Szerintem sem x86-tal érdemes kezdeni. Én ARM-ot vagy MIPS-et választanék, qemu jól támogatja, és vannak rájuk hasonló mini-OS-ek "ihlet" gyűjtéséhez.
De szerintem sokkal hasznosabb, ha az új OS megírása helyett megismeri tényleg mélyen a Linux kernelt egy nem x86 architektúrát célozva, ahol kevesebb az eszkimó és több alacsonszintű javítanivaló akad. Arról nem beszélve, hogy a Linux kernel ismerete konkrétan piacképes tudás, míg az "írtam egy bootoló OS-t" maximum egy plusszpontot jelent az interjún.
Üdv,
Gergely
- A hozzászóláshoz be kell jelentkezni
Oszt az mér' jó? Mert nincs hozzá doksi? Szerintem az x86 tökéletes erre a célra, jól dokumentált, és rengeteg embertől tud kérdezni, ha elakad.
ARM specért keményen kell csengetni, MIPSet meg nem egyszerű szerezni. Merthogy éles vason is ki kell ám próbálni, hogy kizárhasd a vm bugokat (amiből van épp elég).
- A hozzászóláshoz be kell jelentkezni
Kösz, feldobtad a napom :D
Szerintem az egyetlen architektúra amire nem lenne érdemes fejleszteni az az x86.
- A hozzászóláshoz be kell jelentkezni
"Szerintem az egyetlen architektúra amire nem lenne érdemes fejleszteni az az x86."
Jehehehe... you made my day. Tudsz róla, hogy jelenleg a számítógépes piac döntő többsége x86...? Vagy ez új neked?
Egyébként meg messze a legjobban dokumentált. Nem értem mi bajod van vele. Vannak hülyeségei, no de melyiknek nincsenek? A lényeg, hogy INGYEN, regisztráció és licenszfeltételek NÉLKÜL letölthető minden hozzá.
- A hozzászóláshoz be kell jelentkezni
Éhen fogsz halni hamar.
- A hozzászóláshoz be kell jelentkezni
Kár, hogy sem neked, sem tordus kollégának nem sikerült azonosulni a témával. Ugyanis a téma a arról szól, hogy jó lenne írni egy oprendszert _tanulás_ céljából, a témaindítót az alacsony szintű programozás érdekli.
Biztos, hogy én vagyok rossz helyen a szakmában, de eddig sohasem kellett x86-ra programot írnom assemblyben, ennek szerintem az lehet az oka, hogy erre az architektúrára rogyásig vannak már most is a használható oprendszerek, magas szintű programozási nyelvek, keretrendszerek, stb., egyszóval eszébe sem jut senkinek x86-ra assemblyben programot írni.
Ezzel ellentétben az ARM és MIPS architektúrák most vannak igazán elterjedőben a mostanában divatos mobil-kütyük miatt, mint pl. az android, bőven akad fejlesztési lehetőség ezekre az architektúrára. Emiatt én sokkal inkább azt mondanám, hogy ne az x86-ra fejlesszen, mert az ARM, MIPS jelenleg sokkal piacképesebb tudást jelent.
- A hozzászóláshoz be kell jelentkezni
Hozzátenném, a speciális, igényelt szaktudásért jóval többet is fizetnek.
S nagyon úgy néz ki, hogy ARM-el lesz tele a világ pár éven belül.
- A hozzászóláshoz be kell jelentkezni
Anyira jól azért nem fizetnek.
Aki ARM-ra programoz, azt villamosmérnöknek tekintik, és úgy is fizetik meg.
Ezért lettem C++ programozó, kb. kétszer annyit kapok most, mint ARM-programozó koromban.
Természetesen van az a pénz, amiért értek az ARM-hoz, de az nem kevés, hiszen a szabadidőmet áldozom fel. Az pedig drága dolog, mert kevés van belőle.
Fuszenecker Róbert
- A hozzászóláshoz be kell jelentkezni
Értelem szerűen nem a magyar viszonylatokban kell gondolni erre, viszont a megfizetettség akkor lesz itthon is magas, mikor majd a cégek sorra kezdik használni az ARM adta lehetőségeket, s rájönnek, nincs ember rá a piacon. Akkor kénytelen lesz megfizetni.
- A hozzászóláshoz be kell jelentkezni
Üdv,
Értem én hogy villanyvasút, de miért diesel mozdony hajtja?
Komolyabban megfogalmazva: Szép és jó dolog az ARM, de már beigazolta magát, hogy a RISC a személyi számítógépek vonalán nem túl effektív. Nem az architektúra hibája, hanem a fejlesztők lustasága miatt. Ezért vált az x86 is egyre inkább CISC vonalúvá, és ami kis RISC-t őriz, az csak kompatibilitás miatt. (persze tévedhetek, és lehet az x86 soha nem volt RISC jellegű, de nekem annak festett, csak konkrét infót nem találtam róla, minek számít :))
Az x86 vonal meg egyre inkább tovább fejlődik, megmutatja, mennyi mindent ki lehet belőle spórolni, hogy o'ccóban menjen, szóval, nem kell félteni. Inkább az a jövő útja, hogy a személyi számítógépek, illetve kommunikációs eszközök vonalán kihal az ARM és marad a spec. céleszközöknél. Még olcsóbb, energiatakarékosabb, de alacsonyabb teljesítménymutatójú is, mint a vele egy generációs x86-ok. Persze ez elsősorban annak köszönhető, hogy az utóbbiak néhány egyéb utasítás készletet is tartalmaznak, bár tény, az ARM se állt meg a fejlődésben :)
Nah, és most jön a klasszikus tévedhetek, de én ezt látom mondat, de inkább nem ismétlem magam, elég egyszer leírni. Viszont számomra tényleg úgy fest, hogy ez a jelenlegi haladási útvonal: x86 lassan leszórítja az ARM-t, vissza a saját szegmensébe, ahol egyeduralkodó, és az x86 labdába se rúghat, főleg amiatt, hogy ágyú lenne a verébre, mind árazás, mind képességek terén: specializált, valósidejű feladatok. Mert igaz, hogy az ARM nem gyors (szerintem) általános célra, de azért vannak feladatkörök, amikre ki lehet hegyezni, és az nem az OS futtatás :)
Üdv,
LuiseX
U.i.: Tévedés jogát fenntartom, meg std nálam a FIXME felirat;)
- A hozzászóláshoz be kell jelentkezni
akkor tessék, fixed:
az x86 soha nem volt risc. mindig cisc volt. ha nagyon akarjuk a riscet erőltetni, akkor lehet azt mondani, hogy a cisc magon belül időnként felütötte a fejét riscre jellemző dolog, de ez kb. az a szint, hogy a gyümölcslé nyomokban gyümölcsöt tartalmazhat.
Amikor az amd megvette a nexgent az nx architektúráért, akkor volt valami kis risc beütés az x86-ban. hogy ebből mára mi maradt, nem tudom.
- A hozzászóláshoz be kell jelentkezni
Üdv,
Köszi a fixet :) Am. ezekről a vadászd a google módon kivül létezik valami rendes doksi? Vagy, csak esőtáncokkal és voodoo varázslatokkal megvalósítható az informálódás eme téren?:)
Üdv.,
LuiseX
- A hozzászóláshoz be kell jelentkezni
Én úgy emléxem, hogy CISC-nek hazudja magát az Intel CPU már egy ideje, de belül RISC.
--
unix -- több, mint kód. filozófia.
Life is feudal
- A hozzászóláshoz be kell jelentkezni
ha egy prociban nincs sok (=több száz) általános célú regiszter, jellemzően nem azonos hosszúságúak az utasítások, jellemzően sok komplex, bonyolult feladatot elvégző utasítás van (pl. sse, mmx), az a proci cisc. ez csak 3 jellemző, van több is.
- A hozzászóláshoz be kell jelentkezni
Köszönöm,, tudom, hogy mi a(z elvi) különbség CISC és RISC között.
--
unix -- több, mint kód. filozófia.
Life is feudal
- A hozzászóláshoz be kell jelentkezni
nagyszerű, akkor már csak az szorul magyarázatra, miért az ellenkezőjét írtad fentebb:)
- A hozzászóláshoz be kell jelentkezni
Most jön az, hogy "nem azt írtam. De azt írtad. Nem azt írtam..."
--
unix -- több, mint kód. filozófia.
Life is feudal
- A hozzászóláshoz be kell jelentkezni
muti mar miben van tobbszaz register, es azt is kifejthetned, hogy miert is lenne egy sok registeru processzor risc? ;)
latom pont a lenyeget nem ertetted meg a risc-ben (load-store)...
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Üdv,
Akkor téged kérdeznélek, mert "rejtett kérdéseim" válasza nem jövend el:)
A suliban én csak annyit tanultam a két processzor architektúra elvről, hogy a RISC jellegzetessége a rövid és a lehetőségekhez mért utasítás végrehajtási idő (egy utasításra nézve pl. 1 utasítás 1 órajel...), illetve minnél kevesebb és egyszerűbb utasításra építkezik. Ebből kifolyólag persze a ráírt fordítónak kell intelligensnek lennie, hogy értelmesen, optimalizálva biztosítsa az utasítások sorrendjét, mert maga a cpu butus "számológép szintű"...
Ellenben a CISC összetett, bonyolult és változó végrehajtási idővel járó utasítás készletekre építkezik, minél több probléma megoldását hardveresen implementálva, így a fordító nem kell olyan mélységig ismerje a cpu képességeit, elég csak az utasításait ismerni az effektív müködéshez.
Ez persze lehet baromság, tekintve egy releváns doksit, könyvet, de még cikket sem találtam, ami ténylegesen kitér ezeknek az architektúrális elveknek valódi tartalmára :)
Szerény személyemnek maga az x86 inkább RISC-nek festett, kiegészítve CISC elvű utasításkészletekkel (MMX, SSE, 3DNow, stb), illetve CISC tárprocesszorokkal (GPU, SPU(vagy hogy hívják a hangkártyák prociját?), stb).
Lehet az egész "világnézetem" hibás, de akkor örülnék végre valami hiteles, és talán korszerűnek festő leírásról, mert míg a C64-hez találok jó doksikat, ZX-Spectrumokhoz is, de még a 8086-hoz is, addig a modernebb generációk elvi felépítéséről (és most nem a hw, vagy épp sw implementációról, hanem úgymond a design patternre gondolok) csak részekre szedett, egy-egy elemmel foglalkozó leírást lehet találni, amiből összeollózva a dolgokat vicces tévképzeteim származhatnak (ld. korábban :) ). Tehát, a kérdés adott: van elvi, implementációtól majdhogynem mentes vázlata korunk PC-jének valahol is, vagy, ad-hoc lehet az implementációból következtetni csak? :)
Üdv.,
LuiseX
- A hozzászóláshoz be kell jelentkezni
Mondjuk ma mar annyi jelentosege van az egesz CISC-RISC dolognak, hogy az x86-s CPU-k visszafele kompatibilitas miatt nem valtottak utasitaskeszletet. Felszin alatt viszont ugyanugy bontjak sok kis apro egyszerubb muveletre a dolgokat AFAIK.
Ezt az utat ha jol tudom az AMD kezdte el, majd sok-sok ido utan az Intel is atvette a Core-ban.
----------------
Lvl86 Troll
- A hozzászóláshoz be kell jelentkezni
Üdv,
Köszi, akkor a'sszem annyira mégsem álltam messze a valóságtól, csak 1-2 fényévnyire :) Abban a hitben lengedeztem, hogy az x86 jelenleg tiszta RISC, de a tévedés magva beárnyékolta tudásom eme hibáját:P
Azért, hogy őszinte legyek, jobbnak látom, hogy CISC felület mögött RISC van, minthogy tiszta RISC legyen. Így azért a hw tud optimalizálni hardwired módon, miközben a programozó kényelme is megmarad. Mondhatni, mindenki jól jár, és a lúd is kövér marad.
És, ez jobban hasonlít a programozói felületekre is :D Tudod, pár kattintás, pár mozdulat, meg 1-2 event lekódólása, és már kész a program (Izé, nincs bajom a RAD-al, csak azzal, hogy van aki egy-egy RAD környezet ismeretétől érzi magát programozónak:) ). Kb. ugyanez megy akkor CPU szinten is, csak interpretálva az ő környezetére :D
Üdv.,
LuiseX
- A hozzászóláshoz be kell jelentkezni
Kis adalék.
- A hozzászóláshoz be kell jelentkezni
Üdv,
Köszi, hasznos adalék, bár, sajnos nem újdonság :) Viszont, egész jó leírása :) Szóval, köszönöm;)
Üdv,
LuiseX
Szerk.:
Tévedtem, tanultam újat is: http://en.wikipedia.org/wiki/Microcode#The_reason_for_microprogramming
Köszi, így már világosabb a két fogalom, és nem valami ezoterikus, elborult design pattern a CISC;)
- A hozzászóláshoz be kell jelentkezni
ez a fránya gugli, mi mindent meg tudna találni annak, akit érdekel...
nyilván te is megértetted a lényeget, legalábbis azt a mondatot, hogy ez csak 3 jellemző, van több is...
- A hozzászóláshoz be kell jelentkezni
Bocs, typo: tordus = turdus
- A hozzászóláshoz be kell jelentkezni
Meglehet, hogy igazad van, de szerintem inkább az esélyes, hogy az intel beturbózza az atom vonalat, egyetlen olcsó chipbe sűrít mindent, ami kell egy telefonhoz, és kiszorítja a piacról a többieket. De ez csak szvsz.
- A hozzászóláshoz be kell jelentkezni
Az ARM specifikációért nem kell fizetni.
Fuszenecker Róbert
- A hozzászóláshoz be kell jelentkezni
Érdekes. Engem átdob a login-ra, ha le akarom tölteni a devtools-t.
http://www.arm.com/support/university/tools.php
És ez az oldal sem úgy néz ki, mint amit szabadon felhasználhatnál:
http://www.arm.com/products/buying-guide/licensing/index.php
Persze nem kizárt, hogy vannak az internetnek eldugott bugyrai, ahonnan beszerezhető a doksi.
- A hozzászóláshoz be kell jelentkezni
Nem teljesen értem, hogy az ingyenes regisztráció miért okoz leküzdhetetlen problémát. Hasonló nehézségekbe ütköznél egyébként a mips.com-on is, hiszen ott is, ha jól emlékszem, egy ingyenes regisztráción kell átesni, mielőtt letölthetnéd a specifikációkat.
Tehát a dokumentáció nem probléma.
Hardver:
1. MIPS: Bármely OpenWRT képes router megteszi, a jelentős részük MIPS architektúrájú chipsetet futtat, pl. Broadcomtól.
2. ARM: Beagleboard xM. 150 USD-ért kapsz egy teljes számítógépet 3D gyorsítóval, 1 Ghz CPU-val, DSP-vel (ahol tényleg van értelme az assemblynek), NEON-nal.
Ha ezekre megtanul assemblyben programozni, akkor másnap már válogathat az állásajánlatok közül, mi is keresünk ilyen fejlesztőt. x86-ra sokkal kevésbé jellemző, hogy assemblyben kell fejleszteni bármit is. (Nyilván vannak helyek, ahol igen.)
Segítségkérés: mind ARM, mind MIPS esetén jó community van, tehát ez sem probléma. (Nyilván angol nyelven)
Azt azért össze kéne vetni, hogy a világban hány x86 és hány ARM + MIPS rendszer működik. Én nem vagyok biztos abban, hogy számosságban a PC-k + szerverek lenyomják az embedded világot, de nem néztem utána.
Mindenesetre embedded assembly tudással a mai munkaerőpiacon könnyebben fog munkát találni, mint x86 assembly tudással. (Nyilván ez is a többi területen felmutatott képességektől függ.)
Üdv,
Gergely
- A hozzászóláshoz be kell jelentkezni
Valóban igazad van, nem jól fogalmaztam. Nem ingyenesre, hanem szabadra gondoltam eredetileg, csak össze-vissza irogatok mindenféle hülyeséget. Ha regisztrálni kell meg licenszszerződést kötni, akkor az nálam már nem játszik.
Hardver: ebben abszolúte igazad van, visszavonom amit korábban gondoltam.
Segítségkérés: elhiszem, de x86-hoz nagyságrendekkel több doksi és tutorial van. Pl nem találok olyan leírást, ami arról szólna, hogy hogyan bootol be egy ARM processzor, ami elengedhetetlen lenne a kolléga számára.
Abban egyetértünk, hogyha az ARM+MIPS assembly vonalra fekszik rá, akkor esélyes, hogy abból többet profitál majd.
- A hozzászóláshoz be kell jelentkezni
Pl nem találok olyan leírást, ami arról szólna, hogy hogyan bootol be egy ARM processzor
Persze hogy nem találsz, mert a bootolást nem az ARM mag intézi hanem a köré épített perifériák amelyek processzoronként változnak. Datasheet-eket és User Guide-okat tanulmányozd inkább. Ezek ingyenesek és sokszor regisztráció nélkül elérhetők.
-
J
- A hozzászóláshoz be kell jelentkezni
Az ARM applikációs processzorok (ARM7, ARM9, ARM11, ARM Cortex-A*) a 0x00000000 címen levő utasítást kezdik végrehajtani (RESET vektor). Ez tipikusan egy branch utasítás.
A mikrovezérlők (ARM Cortex-M*) 0x00000000-n található címet betöltik a stack pointerbe.
A RESET vektor a 0x00000004 címen található, ez egy cím (!), nem pedig utasítás, a main() függvényed címe.
Mindezt onnan tudom, hogy elolvastam a leírásokat, amelyeket az ARM teljesen ingyen a rendelkezésünkre bocsát: http://infocenter.arm.com/
Fuszenecker Róbert
Magister Linucis et ARMis
- A hozzászóláshoz be kell jelentkezni
Amiket felsoroltál, csak akkor érnek valamit, ha már van egy stabil tudása az operációs rendszerek elméletéből....addig lehet ő a legjobb assembly vagy c guru, nem fog oprendszert írni...multitaskosat pláne nem. Amíg nem tudja, hogy mi az időszelet vagy a time sharing, mi a lapozás lényege, milyen metodikák alapján végezhető, hogy oldják fel a konkurens taskok közötti versenyt az erőforrásokért erőforrástípusonként, addig max. MBR-be fog írni egy 512 byte-os valamit, ami egy hello world kiíró kódot behúz a tárba és rádobja a vezérlést. ...és még az operációs rendszerelmélet felszínét sem karcintottuk most meg.
- A hozzászóláshoz be kell jelentkezni
ezekről csak elméletben tudok, a teljesség igénye nélkül (még)
- A hozzászóláshoz be kell jelentkezni
Akkor büszke lehetsz, sokan 20 év után is kezdőnek mondják magukat...mert ez az egész elég összetett, komoly matematikája van és az elmélet és a gyakorlat közötti út igen rögös.
- A hozzászóláshoz be kell jelentkezni
szerinted a mostani linuxosok közül hánynak volt stabil operációs rendszer tudása, amikor elkezdte a kernelt faragni? szerintem egynek se, Linus is diák volt.
a többségnek azóta se lett sokkal több tudása:)
- A hozzászóláshoz be kell jelentkezni
Igen, de talán hallottak már pár dolgot azon kívül, hogy assembly....
- A hozzászóláshoz be kell jelentkezni
Igen, MBR-be beleírt Hello World szokott az ember első (és általában utolsó) önálló bootolható "rendszere" lenni. De ha ezen valaki túllép és egy primitív lemezkezelőt is ír (mondjuk BIOS megszakítások használatával), akkor már messze tovább jutott ezen a téren, mint a programozók 99.999%-a. Szerintem egy PC DOS 1.0 szintű rendszer összedobásához nem kell valami nagy tudás, csak rengeteg idő. Aztán persze jöhet a multitasking, de addigra már edzett emberrel állunk szemben, aki képes lehet beszállni előrehaladottabb rendszerek továbbfejlesztésébe.
- A hozzászóláshoz be kell jelentkezni
a gondolataimban olvasol :) tényleg csak valami kis egyszerű, egyelőre 1-2 feladatra alkalmas rendszert szeretnék írni. körülbelül ezt az utat szeretném bejárni, a túllépésekkel együtt :)
- A hozzászóláshoz be kell jelentkezni
Télleg, miért nem PIC-ezel? Vagy valami egyéb mikrokontroller.
- A hozzászóláshoz be kell jelentkezni
..... először meg kell néznem a Nagy Testvérben, hogy mi az a PIC :) de gondolom sok köze van az integrált áramkörökhöz. A mikrokontrollerekről meg egy BME-s haverom mesélt. Érdekel annak a programozása is. De előbb szeretnék több műszaki ismeretet hozzá.
De tényleg mindjárt megnézem, hogy mit jelent a PIC :)
szerk.: és tényleg :)
http://www.freeweb.hu/fairco/pic/main.html
- A hozzászóláshoz be kell jelentkezni
Itt a fórumon is volt mikrokontrollerekről szó, de nem a PIC-et ajánlották legtöbben, mindjárt előásom, csak nem segít a nagytestvér eléggé...
szerk: http://hup.hu/node/94962
evvótaz.
- A hozzászóláshoz be kell jelentkezni
(Pascal, C, C#)-ból van OKJ (tudom, hogy ettől még ott van a tojáshéj a fenekemen :) ) régen Basic egy commodore plus 4-en, meg tudtam 2 képernyőre kiírás példát az Agárdi-féle assembly könyvből, meg a PHP (tudom, hogy eredetileg csak szkript nyelv, de akkor is imádom :) )
- A hozzászóláshoz be kell jelentkezni
ha nagyon magad ragaszkodsz mindenhez, akkor eloszor irj kisebb konyvtarakat, api-kat, amiket egyreszt jol kitesztelsz, masreszt amit kesobb bele tudsz tenni majd a kerneledbe. marmint a kisebb az idezojelben, erosen, ilyesmikre lehet gondolni mint:
- filerendszer (ro es rw, egyarant)
- halozati reteg
- terminal emulacio
- kozos api (unistd, fcntl, berkeley sockets, ...)
- sajat (m)alloc impliementacio
ezek megvannak, akar programozoi szinten is? ha nem, akkor par ev, tanuld meg hasznalni, majd utana kezdd el megirni (a fentiek egyikehez sem kell rootkent garazdalkodni, kis egyszeru emulacioval mindegyik kitesztelheto" valamilyen szinten). aztan majd utana johet a tobbi.
- A hozzászóláshoz be kell jelentkezni
'BugOS, ezek a legutolsó képek róla, azóta senki se látta'
http://web.archive.org/web/20080528102231/http://bugos.nop.hu/
Ezen lehet tanulmányozni az op. rendszer minden szintjét.
Ha akarod feltöltöm egy kb. 2008-as kiadását (akkor nyúltam hozzá legutóbb), mert a hivatalos honlap hiányában nem találom letölteni sehol.
pascallal és assemblerrel készült
~~~~~~~~
De ezt az egy lépést ki nem tevé,
Az nem tett semmit, nem tud semmit is.
- A hozzászóláshoz be kell jelentkezni
azt megköszönném :) (forráskód is van ?)
- A hozzászóláshoz be kell jelentkezni
Természetesen van (vagyis volt), neten fellelhető pár verziója a BugOS.zip filenak. (Hja, verziózva nem volt.)
De egyébként a webarchive segítségével eljutottam a http://mc36.nop.hu/ oldalra (szerző oldala), és ott van contact is. Mondjuk el is lehetne tőle kérni a kódot. :)
--
Don't be an Ubuntard!
- A hozzászóláshoz be kell jelentkezni
Én "ismerem" a srácot, egyszer voltam nála. Elképesztő, amit a BugOS-sal csinált, de tényleg. Mégis, szerintem ami igazán nagy benne, az a hálózatkezelés: hálókártyák, protokollok.
De mindenféle bántás nélkül igen komoly betegségei is voltak:
- rajta kívül gyakorlatilag senki sem tudta értelmesen használni;
- lassú volt;
- nem voltak hozzá tök alap programok, vagy ha igen, félkészek, nehezen használhatók;
- a Pascal fordítója elég rosszul értette a Pascal nyelvet és nagyon lassú kódot generált;
Persze mindezt egyedül érte el, nem csodálom, hogy mindent nem tudott fényesre csiszolni.
Én a DOS-os asm fejlesztéseimhez MC SASM fordítóját használtam, annál jobbat eddig senki sem adott nekem :)
Le a kalappal a srác előtt, de szerintem az ő példájából is látszik, milyen nehézségek vannak. Amúgy ő kb. bitszinten ismeri az x86-os procikat, mindig tudtam tőle tanulni valamit, akármit is kérdeztem.
--
http://www.open-st.eu
- A hozzászóláshoz be kell jelentkezni
Egy viszonylag régi, 2007 februári kiadással tudok szolgálni:
...mihelyst felmászik
http://www.freeweb.hu/bandie91/pub/download.php?get=%2FBugOS.iso&back=/…
~~~~~~~~
De ezt az egy lépést ki nem tevé,
Az nem tett semmit, nem tud semmit is.
- A hozzászóláshoz be kell jelentkezni
köszi :)
- A hozzászóláshoz be kell jelentkezni
ez már látja hogy van fent egy linux, vagy olyan mint az ms? csak azért hogy mentsek előtte?? :D
- A hozzászóláshoz be kell jelentkezni
backup mindenképpen ajánlott,
a telepítésnél ki kell választani egy merevlemezt utána egy pertíciót rajta!
de el is lehet indítani a saját partícionalóját, hogy stílusosan létrehozzon egy 0xB0 tipusú Bug0S fájlrendszert :)
~~~~~~~~
De ezt az egy lépést ki nem tevé,
Az nem tett semmit, nem tud semmit is.
- A hozzászóláshoz be kell jelentkezni
nosztalgiából felraktam
és csináltam screencast-ot is:
http://www.youtube.com/watch?v=OXTbQuR7cEU
~~~~~~~~
De ezt az egy lépést ki nem tevé,
Az nem tett semmit, nem tud semmit is.
- A hozzászóláshoz be kell jelentkezni
A response video tobb kedvet ad a megtekintesre, mert csak 2:44 ;-)
- A hozzászóláshoz be kell jelentkezni
hosszú lett ugyan, mivel nem vágtam meg, de tettem youtube-os megjegyzést hogy 'tekerj bele'...
~~~~~~~~
De ezt az egy lépést ki nem tevé,
Az nem tett semmit, nem tud semmit is.
- A hozzászóláshoz be kell jelentkezni
No, ha az elmélet mindenkinek a kisujjában van és csak a kód van hátra - ez látszik - akkor itt kell kezdeni: http://mirror.href.com/thestarman/asm/mbr/STDMBR.htm#CODE ...és minek ezt újra megírni?!
- A hozzászóláshoz be kell jelentkezni
Már javasolták előttem: nézd meg az ast féle könyvet és oprendszert. Ezzel még sok energiád nem megy kárba, ez olyan tudás, ami amúgy is jól jön, ha programozol. Aztán, ha még ezek után is van kedved, szerintem akkor se csináld hajrá :)
- A hozzászóláshoz be kell jelentkezni
Ez alapján: http://www.youtube.com/watch?v=tmRJ649ICPU inkább olyan OS-t írj, ami (EP)ROM-ból indul. Jöhetnek a kritikák ;-)
_____________________
echo crash > /dev/kmem
- A hozzászóláshoz be kell jelentkezni
ez közelebb áll a szívemhez :)
ismertem a videót :) Azta a címet lehetne adni neki, hogy "igények: akkor és ma" :)
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Bocsi hogy negatív leszek, de ha nincs konkrét célod ezen a területen akkor időpazarlás. Kezdőkre jellemző, találjuk fel a meleg vizet. Nem kérdés, hogy sokat lehet belőle tanulni, de ha a tanultakat nem tudod hol/miben felhasználni akkor minek.
- A hozzászóláshoz be kell jelentkezni
Ha assembly megy, akkor ezt is érdemes lehet tanulmányozni: MenuetOS
Anno engem is érdekelt a téma, amolyan 'koca' programozóként. Addig assemblyben el is jutottam, hogy az 512 byte-os programom gombnyomásra kiírta, hogy
Hello!
De ilyen irányú tanulmányok és képzettség hiányában abbamaradt a dolog. 'A suszter maradjon a kaptafánál.' Az én esetemben.
De neked sok sikert és még több kitartást!
- A hozzászóláshoz be kell jelentkezni
érdekes :)
- A hozzászóláshoz be kell jelentkezni
Még asszem nem említette senki:
Horváth Gábor: Assembly Védett Módú Programozás
Kicsit homályosak az emlékeim, de van benne olyan, hogy: GDT, IDT, taskváltás a különböző privilegizálási(?)-szintek közt, lapozás, virtuális mód. Lehet hogy a fent említett Horváth Gábor könyvenek egy régebbi kiadása, azt nem ismerem ...
- A hozzászóláshoz be kell jelentkezni
Oprendszert még nem írtam, valószínűleg azért, mert nem érzem a tudásom elég masszívnak hozzá, de a fentebb írt mikrovezérlős megoldásokon túl javaslom, nézd át pl.: hogyan lehet írni drivert linuxhoz. Ha az már megy, akkor gyanítom, lesz annyi hardware-közeli élményed és tapasztalatod, amivel tovább tudsz lépni.
Nem biztos, hogy jó a gondolatom, a nálam okosabbak majd pluszolnak, vagy minuszolnak :)
- A hozzászóláshoz be kell jelentkezni
Jótanács: mielőtt nekivágnál, előbb tudd, hogy mit akarsz! Nincs oprendszerírás szent-grál, hiszen pont az a lényeg, hogy valamit máshogy akarsz megvalósítani, mint a mostani rendszerek (ha nem így lenne, nem lenne értelme megírni, ugye).
Pár dolog, amin érdemes elgondolkodnod:
1. hogy induljon? Saját boot loadert akarsz írni, vagy inkább használod a GRUB Multiboot-ot?
2. milyen kernelt akarsz? Micro, monolitikus, esetleg exo?
3. milyen fs-t akarsz? Megfelel valami létező, vagy speciális igényeid vannak?
4. milyen toolchainnel akarsz dolgozni? ELF vagy PE binárisokat akarsz futtatni, vagy netán sajátot?
5. ne akarj egyből GUI-t! Nagy eredmény, ha van egy egyszerű parancssorod, ami igazi taskként fut (és kommunikál a billentyűzet driverrel meg a tty screen driverrel).
Összefoglalva, ahonnan érdemes elindulni:
http://www.minix3.org/
http://wiki.osdev.org/
http://www.osdever.net/
http://superfrink.net/athenaeum/OS-FAQ/os-faq.html
http://www.ctyme.com/rbrown.htm (hamar megtanulod, mi az a RBIL, megkerülhetetlen :-)
- A hozzászóláshoz be kell jelentkezni
a rendszer konkrét céljáról még nem gondolkodtam el, de mindenképp egy letisztult, speciális feladatra szánt rendszer lenne. (Főleg a TV-s szakmában használatos)
köszi, hogy felsoroltad a szempontokat, mert így már könnyebb terveznem is.
1. mindenképpen saját boot loadert szeretnék.
2. egyelőre monolitikus kernelben gondolkoznék.
3. egy könnyen kezelhető, kis sérülékenységű fájlrendszert használnék, ami könnyen kezelhető és támogatja az akár 13 GB-os fájlméretet is.
4. toolchain? ennek utána kell néznem, hogy az ami :) ELF binárisokról hallottam már. de ennek is utána kell néznem.
5. egyelőre én is GUI nélküliségben gondolkodom :)
- A hozzászóláshoz be kell jelentkezni
TV-s szakmában alapvetően nem is az oprendszer-hiány, vagy azok nem jó működése a probléma, hanem az, hogy a jelenleg stabil rendszerekre nincs igazán szoftver, amit futtatnának. Videó vágás linux alatt jelenleg csak drága megoldásokkal lehetséges (pl.: Piranha), adásbonyolító szinte nincs is (van ugyan egy mlt-re épülő rendszer, de baromi nehézkes és felhasználó oldali megoldása elég gyermekcipő szintű). Ha szabad-szoftverben gondolkodsz, akkor az energiákat célszerűbbnek látnám meglévő videotechnikai szoftver-projectekbe szánni.
Ettől függetlenül ha a tanulás a célod, akkor ne szegje kedved hozzászólásom, vágj bele.
- A hozzászóláshoz be kell jelentkezni
1. ez a szebb, de nehezebb út.
2. ez az egyszerűbb, és valószínűleg bőven meg fog felelni az igényeidnek
3. ez esetben egy már meglévő fs felé kacsintgatnék
4. toolchain: a fordításhoz szükséges programok. Általában egy linker, egy assembler meg egy cross-compiler, valamint egy projekt-managelő (gnu-make pl). Assemblerek közül sokan istenítik a nasm-mot, nekem a fasm jött be (http://flatassembler.net)
5. helyes :-)
Aztán, ha megvan odáig a dolog, hogy be tudod tölteni a kerneled, és el tudod indítani, akkor jön a a dolog oroszlánrésze: rengeteg elmélet és gyakorlati tudás kell a belső rendszer megtervezéséhez (minix könyv jó alap ehhez, olyanokra dongolok, mint éheztetés, kölcsönös kizárás, deadlock, spinlock, memória allokációs algoritmusok, bitmap, slab stb.) Ezekhez aztán végképp nem fogsz találni semmi útmutatót (külön-külön igen, de nem egyben), hisz ez a te rendszered, neked kell kitalálni, hogy hogyan álljön össze egy kerek egésszé.
- A hozzászóláshoz be kell jelentkezni
köszi a tanácsokat :) így már akkor tudom mi a toolchain, csak nem ismertem ezt a szót :)
- A hozzászóláshoz be kell jelentkezni
Lehet először egy terminál emulátorral kezdeni [1], közben a programozást könnyítendő egy emacs-ot írni [2]. Ezalatt elég tapasztalat gyűlik [ez lenne a kerítésfestés].
Aztán jöhet a ,,From NAND to Tetris'' [3,4], VM-el, OS-el stb.
[1] http://linux.bihlman.com/tag/torvalds/
[2] lásd GNU Emacs (emacs), Micro-emacs (uemacs), Gosling Emacs (gmacs) stb.
[3] http://video.google.com/videoplay?docid=7654043762021156507
[4] http://www.idc.ac.il/tecs/
Egyébként nem tudok itthon hasonló színvonalú kurzusról/anyagról. Én nem tudok itthon olyan iskoláról, ami ilyenekre tanít meg :)
- A hozzászóláshoz be kell jelentkezni
Én a helyedben ott kezdeném, hogy bele sem kezdenék.
Egyetemista koromban én is mindig OS-t akartam írni, pont olyan indokokkal, mint te, hogy sokat lehet tanulni belőle - ez igaz is. Viszont baromi sokat lehet tanulni másból is.
Nekem azért ennél lényegesen több tudásom volt, és mégsem álltam neki, mert az MBR kódot, bootloadert, kezdeti kódokat simán megírtam volna asm-ban, viszont onnantól kezdve már nem sok kedvem lett volna asm-ban fejleszteni, így kellett volna egy C fordító. Ránéztem a gcc-2.95 forrására, és azt mondtam, hogy ezt kösz nem. Azóta gondolom sokkal nagyobb lett a gcc is. Tehát ahhoz, hogy OS-t buherálj, legyen fordítód is, amit itt tényleg neked kell megcsinálnod, és ez ultrakemény szopás, puszta érdeklődéssel ezt nem tudod megcsinálni. Én itt tettem le róla, és nem bántam meg. (Persze ha a fordítód mindig csak keresztfordít az új OS-edre, akkor egy fokkal könnyebb, de számomra az volt a cél, hogy a saját OS-en legyen fordító).
Ha nagyon lelkes vagy, akkor javaslom, írj egy boot managert előszőr. Ahhoz elég az asm is, és látni fogod, hogy mennek a dolgok. Én anno írtam magamnak egyet, menüs volt, tudott secondary disk-ről is bootolni, kiírta a partíció méretét, nevét stb.
Írhatsz saját fájlrendszert is, ott a remek linux VFS, mintául lehet használni a linux FS driverek kódját is. Írhatsz saját ütemezőt is, piszkálhatod is, mint pl. Con Kolivas. Lecserélhetsz komplett alrendszereket a kernelben, iszonyat sokat lehet tanulni ezekből is.
Ne bántásnak vedd, de ha valaki nem tudja, hogyan kell MBR bootloadert írni, nem tudja mik a képernyőkezelés alapjai stb. az ne OS-t akarjon írni, hanem előszőr asm-ban mondjuk videó memória író programokat DOS alatt vagy akármit. Én sem tudok repülőt vezetni, és nem is egy F16-oson akarom elkezdeni.
Megírni egy (n + 1)-ik OS-t nincs értelme. Biztos írták itt többen is felettem, hogy jobban jársz, ha már egy létező OS-ben mélyedsz el, vagy akár szakértője leszel egyes területeknek, pl. OpenGL linuxon, profi hangkezelés, hálókártyákhoz driverírás, akármi. Itt is közel lehetsz az OS maghoz, és nem kell végigszívnod azt, amit mások már megszívtak előtted.
Az én véleményem az, hogy ma már minden célra van megfelelő OS. Pl. QNX, Linux, Windows stb. nincs értelme egymagad tákolni valamit. Most látom, amikor már kevesebb a szabadidőm, hogy olyanra kellett volna nekem is fordítanom, amivel most még előrébb lehetnék.
--
http://www.open-st.eu
- A hozzászóláshoz be kell jelentkezni
Ha érdekel, akkor van egy ősrégen (10+ éve) írt "programocskám", ami halom dolgot csinál onnantól, hogy az MBR-ből beindul. OS nélkül fut, tehát talán innen el tudsz indulni.
Magánban elküldöm, ha gondolod.
- A hozzászóláshoz be kell jelentkezni
Ha gondolod, belenézhetsz a YaOSp forráskódjába, sőt, ezt ajánlom is ! :)
- A hozzászóláshoz be kell jelentkezni
Ami be kell szerezni:
Telepítsd a VirtualBox-ot, vagy hasonlót. Telepítsd rá az MS-DOS-t. Ehhez tuti rengeteg dokumentációt találsz, de próbálkozhatsz FreeDOS-al is.
Tegyél föl valami egyszerü DOS C fordítót és assembly fordítót a friss virtuáls gépre.
DOS-os hexa-editor fog kelleni kesöbb.
Alap tudás:
Az oprendszer és a BIOS funkcióit (mint pl képernyőkezelés, filekezelés) interruptokon keresztül érheted el. Nézz utána hogyan lehet interruptot hívni C-ben vagy assembly-ben.
Legegyszerűbb oprendszer részletei:
Ha sikerült meghívni egypár DOS-os interruptot, nézd meg hogy lehet grafikus módra átváltani, és ott színes pixeleket kirakni. VESA szabványhoz keress rövid példa kódokat, az kell ide.
Vagy annyi is elég, ha a BIOSsal ki tudsz rakatni a szöveges képernyőre néhány karaktert. <- Inkább ezt javaslom, és mehetsz tovább.
Írj olyan "tömörítö" programot, ami nem tömörít, viszont egy fix méretü archívált fájlba bele tudjon pakolni fájlokat, illetve ki tudja onnan olvasni azokat. Ez a DOS-os program használhat C fájlkezelést az archívum megnyitására.
Legegyszerübb "just works": nincsenek könyvtárak, az archívum elején egy filenév-filehossz táblázat fix mérettel, utána fix méretü helyek az egyes fileok tartalmának.
Nézd meg a BIOS-on keresztül hogy tudsz írni-olvasni a merevlemezre. Irj belőle primitív fájlkezelést:
- read_whole_file(fajlnév, memoria kezdete)
- write_whole_file (filenév, memoria kezdete, hossza)
Teszteld DOS alatt.
Kösd össze ezeket:
Készíts egy olyan változatot az archiválóból, ami a DOS filekezelés helyett a BIOS hívásaiddal nyitja meg az archívumod. Ez lesz a filerendszer drivered.
A filerendszeredben legyen egy "init" nevű szöveges file. Ennek minden sora egy filenév lesz, amit végre kell hajtani. Az oprendszered annyit csináljon, hogy nyissa meg az init-et, töltse be a benne megjelölt fileokat, futtassa egyiket a másik után. A legeszerübb, erre a rendszerre irt programod irja ki hogy "hello world 2011".
Memoria kezelő OS rész:
A betöltött programok egy fix kezdetű, fix hosszúságú memoriacimre töltödnek. Ez a kódmemoria, ahol az épp futó alkalmazás kódja van.
A fix memoriacím fölötti területet korlátlanul használhatják az alkalmazások adatok tárolására, külön allokáció nem kell.
A fix memoriacím alatti területen az operációs rendszered számára fenntartott területet lesz.
Ez egy alap, olyan irányba fejleszted ami csak érdekel:
- a programjaidba fordított BIOS hivásos rutinok kerüljenek át az oprendszeredbe, ezek lesznek az op.rsz. funkciói
- bővítsd az oprendszered nyujtotta grafikus, stb funkciókat
- írhatsz egyszerű command interpretert
- net, usb driverek
- védett mód
- flexibilisebb filesystem
- egyszerü multitasking
PS:
Telepítéskor csinálj több partíciót. Elsőre mehet a DOS, másodikat nem kell formázni, ide kerül majd az új rendszer. DOS-ból az "archiváló"-val kényelmesen tudod majd írni, olvasni a saját rendszered fájljait.
- A hozzászóláshoz be kell jelentkezni
köszi, akkor már el tudom képzelni, hogy hogyan képzeljem el egy fájlrendszer tervezését és működését :) tényleg nagyon hasznos volt számomra. amint vége az ünnepeknek és nem a barátnőmnél leszek, el is kezdek foglalkozni ezekkel :) BIOS hívásokban egyszerűbb elkezdenem gondolkodni rendszerszinten. aztán akarom majd elkezdeni megérteni a processzor arhitektúrákat és programozni azt.
- A hozzászóláshoz be kell jelentkezni
Akár saját megszakításokat is írhatnál, vagy lecserélhetnéd az ereti BIOS interuptokat is... :) Kezdhetnéd a 13H-val.
- A hozzászóláshoz be kell jelentkezni
A 9-es alatt megtalálható 'o' billentyűvel (Shiftet lenyomva) érdemes kezdeni az írást.
- A hozzászóláshoz be kell jelentkezni
:) hogy ez eddig senkinek nem jutott eszebe.
errol beugrott:
-Tudtok vmi progit ami megjegyzi a billentyu leuteseket?
...
-MS Word
- A hozzászóláshoz be kell jelentkezni
Ebből is látszik, hogy Oprendszer írásába kezdeni nem triviális feladat, és még a hupon is eltart egy ideig, amíg megszületik a megoldás, de megszületik.
- A hozzászóláshoz be kell jelentkezni
Ezt is tudom javasolni tanulmányozásra.
http://visopsys.org/
Ez egynagyon egyszerű OS, ami ráadásul teljesen egyedi, és "minden" fontos dologra találsz példát, hiszen betöltődik, vagy fs kezelés, vesa,ps2,lemezek,grafikus felület, stb....
Nagyon szemléletesnek tartom.
--
A hosszú élet titka, hogy csak F8 után nyomd meg az enter-t.
- A hozzászóláshoz be kell jelentkezni
ez szimpatikusnak tűnik :) Virtual boxban a 64 megabájtos IDE winchester-t nem látta.
- A hozzászóláshoz be kell jelentkezni
Elgurult a gyógyszered? :)
Ha ez komoly, akkor nezd meg a 0.1-es linux kernelt, Linus Torvalds pont ezert irta (i386 multitasking, stb)
--
"Windows... az mi?"
- A hozzászóláshoz be kell jelentkezni
olvastam régen róla még az első linuxos könyvemben jópár évvel ezelőtt. a 0.1et még assembly-ben írta, későbbi verziókat már C-ben.
- A hozzászóláshoz be kell jelentkezni
mennyivel egyszerűbb lenne letölteni és megnézni...
- A hozzászóláshoz be kell jelentkezni
le fogom :)
- A hozzászóláshoz be kell jelentkezni
találtam pár dolgot. még mindig nem rettentem el, mivel nagyon izgat a dolog :)
http://www.codexonline.hu/CodeX4/alap/hardkore/bm.htm
http://www.mechatronika.hu/~mikdor/kieg/oprendszer/partico_mbr_asm.pdf
- A hozzászóláshoz be kell jelentkezni