Kezdőoldal » Számítástechnika » Programozás » Amikor valaki egy operációs...

Amikor valaki egy operációs rendszert ír, akkor azt hogyan tudja lefordítani?

Figyelt kérdés
Arra gondolok, hogy pl. ahogy Linus Torvalds elkezdte annak idején, akkor ugye egy sima memória foglalás (malloc) is rendszerhíváson keresztül történik, de ugye még nincs semmilyen rendszer meg memóriakezelés. Szóval milyen fordítója volt, ami semmilyen rendszerhívást nem használ? Vagy speciális módon kellett írni az elején? Utána saját magának kellett megírni mondjuk az malloc kódját, hogy az mire forduljon?

2014. máj. 29. 15:53
1 2
 1/17 anonim ***** válasza:
48%

Gondolom nehéz lenne utánakeresni legalább a wikipédián:

[link]


Egyébként létezett a linuxon kívül más operációs rendszer is, amin futtathatott gcc-t. (az x86 assemblyben meg nincs malloc, ugyebár)


Általánosan annyi a válasz, hogy Assembly/Machine code.

2014. máj. 29. 16:17
Hasznos számodra ez a válasz?
 2/17 iostream ***** válasza:
0%
Mi köze a fordítónak a platformhoz amire fordítasz? Akár Windows alatt is le lehet fordítani a Linux kernelt.
2014. máj. 29. 17:25
Hasznos számodra ez a válasz?
 3/17 anonim ***** válasza:
34%

Egy fordítóval.

Nyilván másik gépen.


Köszönjük a kérdésedet.

2014. máj. 29. 18:35
Hasznos számodra ez a válasz?
 4/17 SimkoL ***** válasza:
81%
Az első un. számítógépen sem volt op. rendszer. :) Mérnöki pultnak hívták a konzolt ahonnan be lehetett vinni a memóriába a gépi kódot ami alapján a gép működött. Utána ezt lyukszalagra kííratták és a következőknél már erről is mehetett a betöltés. A kódot mindig tovább fejlesztették, a felhasználói igényeknek megfelelően és igy lettek az un. komolyabb op. rendszerek. Amikor én kezdtem a 'szakmát' a 3.1-es DOS egy komoly rendszernek felelt meg :) egy PC-n.
2014. máj. 29. 18:48
Hasznos számodra ez a válasz?
 5/17 anonim ***** válasza:
38%
Ne sértsük meg a komolyabb operációs rendszereket azzal, hogy a 3.1-es DOS-t komolynak nevezzük. :D A UNIX az komoly rendszer volt akkoriban. :)
2014. máj. 30. 19:39
Hasznos számodra ez a válasz?
 6/17 A kérdező kommentje:

Na, akkor még egyszer...


Szóval mondjuk, hogy nagyon okos vagyok, és leülök kernelt írni. Előbb-utóbb olyan utasításokat kell használnom, amik más esetben valamilyen rendszerhívásra épülnek. Olyan fordítót honnan szerzek, ami az általam kitalált rendszerhívásokat ismeri?


Én egyébként úgy képzelem, hogy első körben pl. az ilyen rendszerhívásokat kiszolgáló részeket kell megírni, utána implementálni az őket használó utasítások, és függvénykönyvtárként megadni a fordítónak. Csak azóta már a GNU eleve így adja pl. a Linux gcc-t. Jól gondolom?

2014. máj. 30. 23:20
 7/17 anonim ***** válasza:
0%

1.)

"Előbb-utóbb olyan utasításokat kell használnom, amik más esetben valamilyen rendszerhívásra épülnek."

Már miért is? Éppen azt a kernelt írod, amit majd mások hivogatnak...


2) Az MS-DOS bármelyik verziója valaki szerint komoly oprendszer? vagy miért lettem lepontozva vajon?

2014. máj. 30. 23:54
Hasznos számodra ez a válasz?
 8/17 anonim ***** válasza:
47%

@05-30 23:54

"

"Előbb-utóbb olyan utasításokat kell használnom, amik más esetben valamilyen rendszerhívásra épülnek."

Már miért is? Éppen azt a kernelt írod, amit majd mások hivogatnak... "

"

Más esetben az azt jelenti , hogy olyan esetben amikor nem ő írja meg a kernelt hanem már az kész van.


"Az MS-DOS bármelyik verziója valaki szerint komoly oprendszer? vagy miért lettem lepontozva vajon?

"

Annak számított évtizedekkel ezelőtt.


----------------------------


@kérdező

"Szóval mondjuk, hogy nagyon okos vagyok, és leülök kernelt írni. Előbb-utóbb olyan utasításokat kell használnom, amik más esetben valamilyen rendszerhívásra épülnek. Olyan fordítót honnan szerzek, ami az általam kitalált rendszerhívásokat ismeri?"


Olyan fordító nyilván nincs ami alapból ismeri. A gcc fordító képes fordítani rengeteg célhardverhoz is (azaz pl. beágyazott rendszerekre). Pontosan hogyan azt sosem próbáltam, a gcc manual-ja több száz képernyőnyi rengeteg kapcsolója van melyeknek csak egy kis részét tudom fejből is. Pl -S Assembly kódot készít, -E: Csak a elõfeldolgozást végzi el, melyet a standard outputra ír stb.

A fordítás 4 fázisból áll alapesetben: 1:elõfeldolgozás azaz preprocesszálás (preprocessing); 2:fordítás (compilation); 3:összeállítás (assembly); 4:szerkesztés (linking).

A 2.-ik fázis pl. Assembly kódot állít elõ. Nem költelező minden fázison végigmenni, lehet csak pl. a 3-asig menni, meg lehet pl. a 2-estől kezdeni.


A kernel írástól elrugaszkodott példa:

Aki nagyon profi azaz egyes fázisokat ki tudja cserélni másra ha akarja, ha kell akkor belenyúl a gcc forrásába és újrafordítja. Mondjuk meg lehet azt is csinálni , hogy c-ről pascal-ra fordítson. Elég absztrakt szinten nézve az mindegy hogy szokásos módon vagy más platformra fordít vagy másik prog. nyelvre.


Visszatérve a kernelhez, ott kénytelen vagy használni Assembly kódot ha tetszik ha nem.

2014. jún. 15. 12:57
Hasznos számodra ez a válasz?
 9/17 anonim ***** válasza:
100%

Nekem ugy tünik, itt senki nem értette meg a kérdésedet.

A (vélhetően helyes) válasz:

A forditót használod, de csak azt. Semmiféle libc-re való hivatkozás nem lehet a kódodban, értelemszerüen.

Azt, mármint a libc-t neked kell megirnod. Semmire nem támaszkodhatsz. A képernyőkezelést, a kurzormozgatást, a printf függvényt (meg az összes többi szahart) is neked kell megirnod. Aztán ha van ilyen library-d, azzal már forditgathatsz a saját rendszerednek megfelelő kódot.

2014. szept. 24. 08:06
Hasznos számodra ez a válasz?
 10/17 anonim ***** válasza:
100%

"Visszatérve a kernelhez, ott kénytelen vagy használni Assembly kódot ha tetszik ha nem."


Nem kénytelen haszánlni. Miért is lenne kénytelen?

Assembly kikerülhetetlenül csak a boothoz kell, már ha nem elégedett a GRUB-bal, a LILO-val vagy más értelmesebb boot menedzserrel. Mert ha igen, akkor elég a C, nem kell egy sor asm kódot sem irnia. Persze olyan is lesz a rendszere, de akkor sem kell neki - ha nem akar - assembly-zni.

2014. szept. 24. 08:13
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!