Kezdőoldal » Számítástechnika » Programozás » Valaki elmagyarázná ezt nekem...

Valaki elmagyarázná ezt nekem (lent. )?

Figyelt kérdés

Vagy legalábbis adna egy bővebb leírást valahonnan erről (akár angol)?

Lényegében, amikor egy programozási nyelvben valamit kiíratunk valahova (a konzolba például, output), az hogyan történik? Vagy ugyanez fordítva, inputnál, mikor befolyó adat van. Mi történik olyankor a háttérben, a számítógép mit csinál és hogyan?

Előre is köszönöm!



2016. márc. 26. 00:22
 1/5 anonim ***** válasza:

Hát... attól függ, milyen részletességgel szeretnél választ, mert az enhanced details-es leírásban már a kvantumfizika is bejátszik.

De maradjunk csak egy rétegnél: van a pipe, cső, amit a kernel kezel. van stdin (standard input) és stdout (standard output) pipe. A os, tehát a kernel számontartja, hogy melyik process stdin/stdout-ja melyik terminálablakhoz van kötve, és így onnan veszi az inputot, oda adja az outputot.

Ha ennél bővebb leírás kell, akkor google a barátod pipeline témában.

2016. márc. 26. 00:28
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:
kb: 1010101101011001010101001 (és ezek végtelen variációi) :D
2016. márc. 26. 00:37
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

Kérdező: Na az ilyenekből mint te is, látni esélyt, hogy fejlesztővé váljanak.


Amikor kiiratsz valahová valamit, az általában nem a programod dolga, hanem az operációs rendszeré. Te, azaz a progid csak lepasszolja a firkálnivalót az oprénak és a többit már az intézi. Legalábbis általában, mert meg lehet kerülni az oprendszert is!

Ennek a kiírásnak a megvalósítása operációs rendszerenként más és más.

A DOS-nál (ha hallottál róla) még úgy volt, hogy a DOS a BIOS megfelelő rutinját hívta meg ehhez a feladathoz. Az meg annyit tudott, hogy egy karaktert betolt a video memória megfelelő helyére.


A dolog kb. így nézett ki:

1. A programod ki akar írni egy betűt, mondjuk az A-t. Ekkor generált egy megszakítást, hogy rá figyeljen a proci, az A betű kódját (ASCII 65) átadta a DOS-nak.

2. A DOS szépen meghívta az int12h BIOS rutint, ami kiolvasta a megfelelő regiszterből (vagy memóriarekeszből) a 65-öt (ASCII 65 a nagy A betű kódja), majd a képernyőmemória aktuális pozíciójába kiírta azt és egyel arrább léptette a kurzort.


Ennél persze valamivel bonyolultabb volt a történet, mivel már a DOS-ban is átirányítható volt a standard ki és bemenet, tehát a BIOS rutin éppen oda írt, ahova a DOS előzőleg be lett állítva. Ha éppen file-ba, akkor oda, ha egy soros, vagy párhuzamos portra, akkor meg oda. Ezért pl. lehetett a gépeket egy nyomtatóval is használni, nem volt kötelező monitor. Ahelyett a printeren jelent meg az ami a monitoron kellett volna, hogy megjelenjen.


Ugyanez egy windows vagy linux környezetben azért lényegesen bonyolultabb, mivel az már kihasználja a multitaszk előnyeit, tehát egyszerre több progi futhat, azok meg thread-eket futtathatnak amelyek akár kommunikálhatnak is egymással (teszik is) emiatt viszont egy bonyolult rendszer jön létre, ahol már az egy darab A betű kiiratása is sokkal összetettebb feladat, mint az korábban, a DOS idejében volt, bár az elv ugyanaz, csak a BIOS már nem vesz részt a folyamatban, az rég óta nyugdíjazva lett, helyette kernel, meg szervizrutin, vagy démon (daemon) van.

2016. márc. 26. 02:53
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

Bocsánat, nem int12h, hanem 10h BIOS rutin egy karakter kiiratása.


Instruction: int 10h

BIOS Operation: Video I/O Services

Parameters: Several, passed in ax, bx, cx, dx, and es:bp registers.


Probably the most commonly used video service call is the character output routine:


Name: Write char to screen in TTY mode

Parameters ah = 0Eh, al = ASCII code (In graphics mode, bl = Page number)


This routine writes a single character to the display. MS-DOS calls this routine to display characters on the screen.

2016. márc. 26. 03:02
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

A bemenet meg hasonló.

Pl. a billentyúzet egy gombját megnyomod, akkor a billentyűzetben lévő kis processzor feldolgozza, hogy melyik bill. gomb volt lenyomott állapotban (persze azt is, hogy meddig, de ne bonyolítsuk) és annak megfelelő kódsorozatot küld a gép felé, persze előtte az is megszakítást generál. A gép oprendszere meg, ha nagyon rendes, akkor lekezeli a megszakítást, azaz beolvassa a küldött kódokat, feldolgozza azt és adott rutinnak átadja, az meg kiírja a képernyőre (vagy más standard kimenetre), az előbbi hozzászólasban leírtak szerint.


A megszakítás egy olyan dolog ami egyebek mellett lehetővé teszi azt, hogy a ki és bemenő adatok akkor legyenek feldolgozva, ne csak olyankor, amikor a CPU éppen ráér, mert ugye mi akkor is gépelhetünk, amikor a CPU valamit csinál. Erre jó a megszakítás, ami arra kényszeríti a CPU-t, hogy fejezze be a melót és figyeljen a megszaktást kiváltó eszközre. Ekkor a CPU aktuális állapota elmentődik egy un. verembe (stack) a CPU kiszolgálja a megszakítást kérő egységet (billentyűzet, egér, anyám tyúkja) és visszahorgássza a veremből a korábbi állapotát, majd ott folytatja a gürcölést, ahol abbahagyta.


Azt még jó tudni a megszakításokról, hogy az oprendszereknek nem kötelező foglalkozniuk velük. Adódik a kérdés: na de akkor hogy a bánatba kerül be a lenyomott billentyű kódja a gépbe? Hát úgy, hogy a CPU nem foglalkozik a megszakítást kérő eszközzel a megszakítás pillanatában, hanem ő maga adott időközönként megnézi a perifériák portjait és beolvassa azokat. Ez a polling. Ami persze plusz processzoridőbe kerül, mert akkor is nézelődik a proci, amikor nem is jön adat, de annyiban jobb a megszakításnál, hogy a prociterhelés egyenletesebb, mert a megszakítás bűn lassú (proci 'megáll', állapotot vermel, megszakításkérést kiszolgálja, proci a korábbi állapotát a veremből visszatölti és folytatja a gályázást).

Ma viszont már olyan q gyors procik vannak, hogy a megszakítások kiszolgálása meg se kottyan nekik, így manapság a polling a PC-k esetében már nem divat.

2016. márc. 26. 05:00
Hasznos számodra ez a válasz?

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!