Teorie: aplikace a co se stane po spusteni v PC – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Teorie: aplikace a co se stane po spusteni v PC – .NET – Fórum – Programujte.comTeorie: aplikace a co se stane po spusteni v PC – .NET – Fórum – Programujte.com

 

dotneter
~ Anonymní uživatel
1 příspěvek
17. 12. 2016   #1
-
0
-

Ahoj,

chtel bych se zeptat znalejsich na to, co se deje v pocitaci po spusteni aplikace, jelikoz delam v .netu, tak bych to rozebral na .netove aplikaci, ale nakonec je to asi jedno.

O co mi presneji jde, mam samozrejme predstavu, ale nektere veci nevim a zajima me to.

Co teda vim, po spusteni se .netova aplikace zkompiluje z predkompilovaneho stavu, coz je specifikum .netu, coz je z meho pohledu ted nezajimave, zajima me to od tohoto "mista", aplikace se nacte do pameti a bezi.

Co se ale presne deje?

Dejme tomu, ze mam velmi jednoduchou aplikaci, kde zpocitam 1+2 a vyjde mi 3.

Takze spustim .exe, aplikace s zkompiluje, nacte do pameti, jak v te pameti vypada? Jak vypadaji instrukce pro CPU? Jak se z kodu nakonec stanou 0 a 1, jak to vypada na nejnizsim stupni, jak takovou "jednoduchou" vec zpracuje CPU, tedy co delaji tranzistory?

Zajima me, pokud by to nebylo zrejme, co se postupne stane od spusteni az po finalni zobrazeni vysledku aplikaci.

Dekuji za objasneni, kdyz mate nekdo tyhle vedomosti.

Hezke blizici se svatky :)

Nahlásit jako SPAM
IP: 82.144.139.–
Andy12210
Duch
20. 12. 2016   #2
-
0
-

Velmi zjednodusene (pre windows): pri starte sa do pamate namapuju okrem samotnej aplikacie aj vsetky potrebne DLLka. Vytvori sa CLR (Common Language Runtime) a v nejakom bode ked je vsetko prichystane na beh preda mscoree.dll riadenie tvojej aplikacii. 

Aplikacia je v pamati nacitana v CIL (Common Intermediate Language). Za behu je ale postupne prekladana priamo do strojoveho kodu danej architektury. Toto postupne prekladanie ma na startosti JIT (Just In Time Compiler). Prekladanie funguje stylom "lazy" teda skutocne sa preklada do strojoveho kodu az v momente kedy je prvykrat dana trieda/funkcia pouzivana.

Postupne prekladanie v nejakom okamihu zaruci ze cela aplikacia je prelozena do strojoveho kodu a nahrana v pamati. Kedze sa to deje pocas behu tak nikdy sa nedosiahne tak optimalizovaneho kodu ako napriklad v pripade C++. Cely tento postup prekladu aplikacie sa deje po kazdom starte aplikacie znovu.

Kedze ide o managovany jazyk vyznamnu ulohu hra este garbage collector, ktory sa stara o pamat - odstranuje objekty na ktore uz nevedie ziadna referencia a preusporiadava haldu. Preto raz za cas je pozastavene vykonavanie samotnej aplikacie a pracuje garbage collector.

V pripade ze ta presne zaujima ako vyzera kod nejakej tvojej aplikacie odporucam vygooglit nejaky .NET decompiler

Nahlásit jako SPAM
IP: 78.128.197.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý