Sistem Runtime dan Mesin Virtual
Sistem runtime dan mesin virtual menyediakan lingkungan eksekusi untuk program, menginterpretasikan atau mengkompilasi kode perantara dan mengelola layanan yang dibutuhkan program yang sedang berjalan.
Definition
Sistem runtime adalah lingkungan perangkat lunak yang mendukung eksekusi program di luar kodenya sendiri, dan mesin virtual adalah mesin eksekusi abstrak yang menginterpretasikan atau mengkompilasi set instruksi portabel, menyediakan portabilitas dan layanan runtime.
Scope
Topik ini mencakup lapisan antara kode yang dikompilasi dan perangkat keras: interpreter bytecode dan mesin abstrak, kompilasi just-in-time (JIT), pengiriman dinamis dan pencarian metode, konvensi pemanggilan dan manajemen tumpukan, serta layanan runtime seperti penanganan pengecualian dan refleksi. Ini membahas desain mesin virtual portabel dan teknik yang membuat bahasa terkelola efisien.
Core questions
- Bagaimana mesin virtual menyediakan portabilitas di berbagai perangkat keras?
- Bagaimana kompilasi just-in-time menggabungkan interpretasi dan kode asli?
- Bagaimana pengiriman dinamis dan pencarian metode dibuat efisien?
- Layanan runtime apa yang harus mendukung bahasa terkelola?
Key theories
- Arsitektur mesin virtual portabel
- Spesifikasi Java Virtual Machine mendefinisikan bytecode dan model eksekusi yang portabel dan dapat diverifikasi, menunjukkan bagaimana mesin virtual memisahkan bahasa dari perangkat keras tertentu.
- Kompilasi just-in-time
- Aycock meninjau teknik di mana runtime mengkompilasi kode ke bentuk asli selama eksekusi, menyeimbangkan startup interpretasi dengan throughput kode yang dikompilasi menggunakan informasi runtime.
- Caching inline untuk pengiriman dinamis
- Implementasi Smalltalk oleh Deutsch dan Schiffman memperkenalkan caching inline dan terjemahan dinamis, teknik kunci untuk membuat pencarian metode dalam bahasa yang dikirim secara dinamis menjadi cepat.
Clinical relevance
Mesin virtual dan runtime terkelola mendukung platform yang banyak digunakan untuk Java, .NET, JavaScript, dan Python, menyediakan portabilitas, keamanan, dan optimasi adaptif. Kompilasi JIT dan caching inline adalah alasan mengapa bahasa tingkat tinggi dan dinamis dapat mencapai kinerja yang kompetitif.
History
Mesin abstrak berasal dari sistem portabel awal dan Smalltalk, yang implementasinya pada tahun 1984 memelopori terjemahan dinamis dan cache inline. Java Virtual Machine mempopulerkan bytecode portabel pada pertengahan 1990-an, dan kompiler JIT adaptif seperti HotSpot dan kemudian mesin JavaScript membawa optimasi runtime agresif ke bahasa terkelola arus utama.
Debates
- Interpretasi versus kompilasi just-in-time
- Perancang runtime mempertimbangkan interpreter sederhana dengan startup cepat dan penggunaan memori rendah dibandingkan dengan kompiler JIT yang mencapai kinerja puncak yang lebih tinggi dengan biaya waktu pemanasan dan kompleksitas implementasi, seringkali menggabungkan keduanya dalam sistem berjenjang.
Key figures
- Peter Deutsch
- John Aycock
- James Gosling
- Gilad Bracha
Related topics
Seminal works
- lindholm2014
- aycock2003
- deutsch1984
Frequently asked questions
- Apa itu mesin virtual dalam konteks ini?
- Di sini mesin virtual adalah mesin eksekusi perangkat lunak yang menjalankan set instruksi portabel (seperti bytecode), mengabstraksi perangkat keras yang mendasarinya dan menyediakan layanan runtime daripada meniru seluruh komputer.
- Bagaimana kompilasi just-in-time membantu kinerja?
- Kompiler JIT menerjemahkan bagian-bagian program yang sering dieksekusi ke kode asli saat runtime, menggunakan informasi profil yang tidak dimiliki kompiler ahead-of-time, sehingga kode 'panas' berjalan dengan kecepatan mendekati asli.