Słyszałem o takich rzeczach jak „C Runtime”, „Visual C ++ 2008 Runtime”, „.NET Common Language Runtime” itp.
- Czym dokładnie jest „ środowisko wykonawcze ”?
- Z czego to jest zrobione?
- Jak współdziała z moim kodem? A może ściślej, w jaki sposób kontrolowany jest mój kod?
Podczas kodowania języka asemblera w systemie Linux mogłem użyć instrukcji INT do wywołania systemu. Czy więc środowisko wykonawcze jest niczym więcej niż tylko fabrycznie przygotowanymi funkcjami, które otaczają funkcję niskiego poziomu w bardziej abstrakcyjne i funkcje wysokiego poziomu? Ale czy to nie wydaje się bardziej podobne do definicji biblioteki, a nie środowiska wykonawczego?
Czy „środowisko wykonawcze” i „ biblioteka środowiska wykonawczego ” to dwie różne rzeczy?
DODAJ 1
Obecnie myślę, że może Runtime ma coś wspólnego z tak zwaną maszyną wirtualną , taką jak JVM. Oto cytat, który prowadzi do takiej myśli:
Ten proces kompilacji jest wystarczająco skomplikowany, aby można go było podzielić na kilka warstw abstrakcji, i zwykle wymagają one trzech tłumaczy: kompilatora, implementacji maszyny wirtualnej i asemblera. --- Elementy systemów komputerowych (wprowadzenie, droga do krainy sprzętu)
DODAJ 2
Książka Expert C Programming: Deep C Secrets . Rozdział 6 Struktury danych środowiska wykonawczego jest użytecznym odniesieniem do tego pytania.
źródło
runtime library
plus trochę kodu sterującego i trochę stanu (dostarczone przez system operacyjny).Odpowiedzi:
Środowisko wykonawcze opisuje oprogramowanie / instrukcje, które są wykonywane podczas działania programu, szczególnie te, których nie napisałeś wyraźnie, ale są niezbędne do poprawnego wykonania kodu.
Języki niskiego poziomu, takie jak C, mają bardzo małe (jeśli w ogóle) środowisko wykonawcze. Bardziej złożone języki, takie jak Objective-C, które pozwalają na dynamiczne przekazywanie wiadomości, mają znacznie szerszy czas działania.
Masz rację, że kod środowiska wykonawczego jest kodem biblioteki, ale kod biblioteki jest bardziej ogólnym terminem opisującym kod wygenerowany przez dowolną bibliotekę. Kod środowiska wykonawczego to w szczególności kod wymagany do implementacji funkcji samego języka.
źródło
Środowisko wykonawcze to ogólny termin odnoszący się do dowolnej biblioteki, frameworka lub platformy, na której działa Twój kod.
Środowiska wykonawcze C i C ++ są kolekcjami funkcji.
Środowisko wykonawcze .NET zawiera interpreter języka pośredniego , moduł wyrzucający elementy bezużyteczne i inne.
źródło
cout
lubprintf
.Zgodnie z Wikipedią: biblioteka uruchomieniowa / system wykonawczy .
Re: Twoja edycja , „środowisko wykonawcze” i „biblioteka środowiska wykonawczego” to dwie różne nazwy dla tej samej rzeczy.
źródło
Środowisko wykonawcze lub wykonawcze jest częścią implementacji języka, która wykonuje kod i jest obecna w czasie wykonywania ; kompilacji częścią wdrożenia jest nazywany środowisko tłumaczenie w standardzie C.
Przykłady:
środowisko wykonawcze Java składa się z maszyny wirtualnej i standardowej biblioteki
wspólny środowisko wykonawcze C składa się z modułu ładującego (który jest częścią systemu operacyjnego) i biblioteki wykonawczej, która implementuje części języka C, które nie są wbudowane w plik wykonywalny kompilatora; w środowiskach hostowanych obejmuje to większość części standardowej biblioteki
źródło
W moim rozumieniu środowisko wykonawcze jest dokładnie tym, co oznacza - czas uruchomienia programu. Możesz powiedzieć, że coś się dzieje w czasie wykonywania / wykonywania lub w czasie kompilacji.
Myślę, że środowisko uruchomieniowe i biblioteka środowiska wykonawczego powinny (jeśli nie są) dwie odrębne rzeczy. Wydaje mi się, że „środowisko uruchomieniowe C” nie jest właściwe. Nazywam to „biblioteką wykonawczą C”.
Odpowiedzi na inne pytania: Myślę, że termin środowisko wykonawcze można rozszerzyć o środowisko i kontekst programu podczas jego uruchamiania, więc:
Ta odpowiedź jest w pewnym stopniu tylko moją opinią, a nie faktem ani definicją.
źródło
Matt Ball odpowiedział poprawnie. Powiedziałbym o tym na przykładach.
Rozważ uruchomienie programu skompilowanego w kompilatorze Turbo-Borland C / C ++ (wersja 3.1 z 1991 roku) i pozwól mu działać pod 32-bitową wersją systemu Windows, takiego jak Win 98/2000 itp.
To 16-bitowy kompilator. I zobaczysz, że wszystkie twoje programy mają 16-bitowe wskaźniki. Dlaczego tak jest, gdy Twój system operacyjny jest 32-bitowy? Ponieważ Twój kompilator skonfigurował środowisko wykonawcze 16-bitowe, a 32-bitowa wersja systemu operacyjnego go obsługuje.
To, co jest powszechnie nazywane JRE (Java Runtime Environment), zapewnia programowi Java wszystkie zasoby, których może potrzebować do uruchomienia.
W rzeczywistości środowisko wykonawcze jest produktem mózgowym idei maszyn wirtualnych. Maszyna wirtualna implementuje surowy interfejs między sprzętem a tym, co program może potrzebować do wykonania. Środowisko wykonawcze przyjmuje te interfejsy i przedstawia je do użytku programistom. Twórca kompilatora potrzebowałby tych ułatwień, aby zapewnić środowisko wykonawcze dla swoich programów.
źródło
Wykonuj czas dokładnie tam, gdzie powstaje Twój kod i możesz zobaczyć wiele ważnych rzeczy, które robi Twój kod.
Środowisko wykonawcze jest odpowiedzialne za przydzielanie pamięci, zwalnianie pamięci, korzystanie z podsystemu systemu operacyjnego, takiego jak (Usługi plików, Usługi IO .. Usługi sieciowe itp.)
Twój kod będzie się nazywał „PRACA W TEORII”, dopóki praktycznie go nie uruchomisz. a Runtime jest przyjacielem, który pomaga to osiągnąć.
źródło
środowisko wykonawcze może oznaczać bieżącą fazę życia programu (środowisko wykonawcze / czas kompilacji / czas ładowania / czas łącza) lub może oznaczać bibliotekę wykonawczą, która tworzy podstawowe działania niskiego poziomu, które są powiązane ze środowiskiem wykonawczym. lub może to oznaczać system wykonawczy, który jest taki sam jak środowisko wykonawcze.
w przypadku programów typu C środowisko wykonawcze to kod ustawiający stos, stertę itp., czego wymaga środowisko C. zasadniczo tworzy środowisko obiecane przez język. (może mieć komponent biblioteki wykonawczej, crt0.lib lub coś takiego w przypadku C)
źródło
Odkryłem, że następująca struktura folderów stanowi bardzo wnikliwy kontekst dla zrozumienia, co
runtime
to jest:Widać, że istnieje „ źródło ”, jest „ SDK ” lub „Software Development Kit”, a potem jest
Runtime
np. rzeczy uruchamiane - w czasie wykonywania. Jego zawartość jest jak:Plik win32 zip zawiera .exe -s i .dll -s.
Więc np. środowiskiem wykonawczym C byłyby pliki takie jak ten - biblioteki wykonawcze C, .so-s lub .dll -s - działasz w środowisku uruchomieniowym, specjalnie przez ich (lub ich zawartość lub cele) uwzględnienie w definicji Język C (na „papierze”), a następnie implementowany przez wybraną implementację C. A następnie otrzymujesz środowisko wykonawcze tej implementacji, aby z niego korzystać i budować na nim.
Oznacza to, że z niewielką polaryzacją pliki uruchomieniowe, których potrzebują użytkownicy nowego programu w języku C. Jako twórca programu opartego na języku C, ty też, ale potrzebujesz kompilatora C i nagłówków biblioteki C; użytkownicy ich nie potrzebują.
źródło
Środowisko wykonawcze w zasadzie oznacza, gdy program wchodzi w interakcje ze sprzętem i systemem operacyjnym komputera. C nie ma własnego środowiska wykonawczego, ale zamiast tego żąda środowiska wykonawczego od systemu operacyjnego (który jest w zasadzie częścią pamięci RAM), aby sam się wykonał.
źródło
Jeśli moje rozumienie po przeczytaniu powyższych odpowiedzi jest poprawne, środowisko wykonawcze jest w zasadzie „procesami w tle”, takimi jak wyrzucanie elementów bezużytecznych, alokacja pamięci, w zasadzie wszelkie procesy wywoływane pośrednio przez biblioteki / frameworki, w których napisany jest kod, a w szczególności te procesy zachodzące po kompilacji podczas działania aplikacji.
źródło
Poniższe sekcje dokumentacji MSDN dotyczą większości pytań: http://msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx
Mam nadzieję, że to pomoże.
Dzięki, Damian
źródło
Czas działania to instancja, w której nie wiesz, jaki typ obiektów tworzy podczas jego wykonywania, tworzenie obiektów opiera się na określonych warunkach lub pewnej pracy obliczeniowej. Przeciwnie, czas kompilacji jest instancją, w której wymagane obiekty są definiowane przez użytkownika przed jego wykonaniem.
źródło
Środowisko wykonawcze jest nieco przeciwne do czasu projektowania i czasu kompilacji / łącza. Historycznie pochodzi z wolnego środowiska mainframe, w którym czas pracy maszyny był drogi.
źródło