.NET CLR
2011-04-06T14:47:01+02:00
2011-04-09T08:03:49+02:00
2022-07-24T16:51:28+02:00
  • Egyetemi előadó, első mondata: a Common Language Runtime, egy processzor-szimulátor, amely végrehatja a viruális gépi kódú nyelvet, amely egy erősen típusos nyelv..


    Azigen. Monnyon le! Ezeknek az egyetemi kockafejeknek kötelezővé kéne tenni legalább egy MCP vizsgát.
    Mutasd a teljes hozzászólást!
  • A .NET belső lelkivilágához nem értek, de gyanítom, hogy hasonlít a Javáéhoz. Ott például az osztályok nem egyszerre töltődnek be, hanem on-demand módon, amikor valaki először hozzájuk akar férni. Közvetlen a betöltődés után egy osztálynak lehetősége van inicializáló kód futtatására (<clinit> metódus), és a JVM garantálja, hogy egy időben legfeljebb egy szál futtat osztályt inicializáló kódot. Ha az osztály inicializációja sikertelen (azaz a <clinit> kivételt dobott), akkor az osztály felkerül a hibás osztályok listájára, és a rá való hivatkozások egyből hibát dobnak, újabb inicializációs kísérlet nélkül.

    Ez például egy olyan dolog, ami egyáltalán nem triviális, és a típusok kezeléséhez tartozik. Biztosan vannak más, típusokhoz kapcsolható feladatai is, amiről én nem tudok.
    Mutasd a teljes hozzászólást!
  • Ezt tudom, de őszintén nem értem, hogy mit ért kezelés, te pedig menedzselés alatt. (nem trollkodom, komolyan nem értem)
    Mutasd a teljes hozzászólást!
  • Gondolom az EEClass-on keresztül elérhető dolgokra gondolt. Az assemblyk betöltésekor a nemmenedzselt memóriában létrejönnek ezek a típusleíró objektumok, amik mondjuk reflexió használatánál kerülnek elő. Minden menedzselt objektum tartalmaz egy típusleírót, ami erre a struktúrára mutat. És ezt mind a CLR menedzseli.
    Mutasd a teljes hozzászólást!
  • Mit jelent típuskezelés?
    Mutasd a teljes hozzászólást!
  • very okay :)
    Mutasd a teljes hozzászólást!
  • Nyilván, de most a JITről volt szó. Nem is írtam, hogy csak az a dolga.
    Mutasd a teljes hozzászólást!
  • Na. A CLR az nem pusztán a JIT. A CLR kezeli a JIT-fordított modulokat, a Global Assembly Cache-t, végzi a modulbetöltést, a típuskezelést, metaadatokat, a memóriakezelést, a garbage collection-t, a kivételkezelést és úgy általában ez varázsolja a programod köré az egész végrehajtási környezetet.
    Mutasd a teljes hozzászólást!
  • Jah. Szóval ennyi. A CLR nem a CIL-t futtatja, hanem natív kódot generál belőle, amit a gép közvetlenül futtat.
    Mutasd a teljes hozzászólást!
  • ugyanerre gondolok, de már írtam a legelső postban is
    Mutasd a teljes hozzászólást!
  • Egy picit pontosabban:
    Forráskód -> CIL -> Natív kód (és itt a CIL-natív átmenet a JIT feladata, de ő maga nem valamilyen jellegű kód)
    Mutasd a teljes hozzászólást!
  • Forráskód -> CIL -> JIT -> Natív kód
    igen ?
    Mutasd a teljes hozzászólást!
  • Nem szimulál a CLR processzort.


    Akkor azt hiszem ez az a mondat, amit én kerestem. Köszi mindenkinek
    Mutasd a teljes hozzászólást!
  • Feltételezem, valamilyen könnyen felfogható hasonlattal akart élni bevezetésként. Vagy csak olvasta valahol és ráragadt. Egy egyetemi oktató sem tévedhetetlen. Nem szimulál a CLR processzort.
    Mutasd a teljes hozzászólást!
  • köszönöm. Egyébként, mint látszik az első postból, énis tisztában voltam ezekkel, amiket írtatok, csak ebben videóban, meg az ez előtt íródott könyvben olvastam ezt a proc-szim dolgot, és hát gondoltam, egyetemi előadó, könyvet írnak stb, adok a szavára.

    Most akkor ez a videó semmiresevaló ? ? :O :D Mert nekem tetszett, amikor meghallgattam, érthető is volt, és ez az egy újdonság volt benn.. (nyílván nem 100%-an figyeltem rá, csak egy "próba" volt, hogy milyen a vidi) :)
    Mutasd a teljes hozzászólást!
  • A CIL egy kellően általános assembly-szerű nyelv, de annál több, mert natívan támogat kivételkezelést, objektumot lehet benne létrehozni, amúgy veremalapú ésatöbbi...

    A lényeg az, hogy a CLR az exe betöltésekor a kezdő main metódust, majd minden metódust annak első hívásakor behelyettesít az általa kezdetben mutatott CIL kódból fordított natív kóddal. Tehát ha van egy Any CPU-ra fordított CIL-t tartalmazó assemblyd, és futtatod egy 32 bites rendszeren, akkor natív 32 bites kódot generál a JIT, 64 bites rendszeren 64-eset. És ezzel nincs vége, kiaknázhatja a speciális instruction seteket is (SSE, stb.).

    Gondolom nem kell ecsetelni, hogy egy adott gépre optimálisan fordított natív kódnak mekkora performanciabeli előnye van valamilyen egyéb módon végrehajtott bájtkóddal szemben.

    BTW a Java is használ JIT-et.

    real_het: nem csak szükség esetén() fordít..
    Mutasd a teljes hozzászólást!
  • Az a JIT.
    Mutasd a teljes hozzászólást!
  • Ez egy teves informacio, ami a magyar wikin is tevesen van fent.
    Ez nem processzor szimulator, hanem egy fordito, ami CIL-bol fordít a géped gépi kódjára. Csak akkor fordít, ha szukseges és az eredmenyt cacheolja is. Tehat amíg egy processzor szimulatornal a forrasnyelv ertelmezese mindig CPU%-ot eszik a futas kozben, addig az ilyen helyben fordito megoldasnal csak egyszer terheli ezzel a CPU-t, amikor az adott kodreszlet még nem lett leforditva a cache-ba.

    (Kozben meg hallgatom a videoban, hogy "a tomb indexeles csak 0-tol lehetseges", nagyonhelyesssssssssssss! :D)
    Mutasd a teljes hozzászólást!
  • akkor marad a turbo pascal
    Mutasd a teljes hozzászólást!
  • A Wikipedia nem így tudja. Én jelen helyzetben jobban hiszek neki, mint az oktatódnak.
    Mutasd a teljes hozzászólást!
  • http://csharptk.ektf.hu/video/2_04_microdotkorny_1.mpg

    Egyetemi előadó, első mondata: a Common Language Runtime, egy processzor-szimulátor, amely végrehatja a viruális gépi kódú nyelvet, amely egy erősen típusos nyelv..
    Mutasd a teljes hozzászólást!
  • A .NET-ben sehol nincs szimulált processzor, szerintem kevered a Java virtuális géppel. A fordító CIL-t gyárt, ebből a JIT fordító natív kódot, és itt vége a dalnak.

    A CLR egy úgynevezett futásidejű környezet. Ebben van minden, amire futás közben minden .NET programnak szüksége van: kivételkezelés támogatása, osztályok betöltése, szemétgyűjtés, stb. stb. Hiába fordítod le natív kódig a programodat, a futtatókörnyezet segítsége nélkül meg se tud moccanni.
    Mutasd a teljes hozzászólást!
  • Hello emberek !
    Ha jól értelmezem, akkor a .NET CLR egy processzor- szimulátor, ami végrehajtja a virtuális gépi kódú nyelvet, ahol ez a nyelv, a Common Intermediate Language (CIL) ? Ugye ? És akkor itt jön a képbe a JIT compiler.

    És akkor hogyan történik sorrendben ?

    1. Forráskód
    2. Létrejön a CIL
    3. Ekkor JIT működésbe lép
    4. Natív kód

    És akkor a CLR hol fejti ki hatását ? Én úgy tudom a CIL-t futtatja, de akkor minek a natív kód ? :O

    Előre is köszönöm !
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd