ScholarGate
ผู้ช่วย

ระบบรันไทม์และเครื่องเสมือน

ระบบรันไทม์และเครื่องเสมือนเป็นสภาพแวดล้อมการประมวลผลสำหรับโปรแกรม โดยทำหน้าที่แปลความหมายหรือคอมไพล์โค้ดระดับกลาง และจัดการบริการที่โปรแกรมที่กำลังทำงานต้องการ

ค้นหาหัวข้อด้วย PaperMindเร็ว ๆ นี้Find papers & topics
Tools & resources
ดาวน์โหลดสไลด์
Learn & explore
วิดีโอเร็ว ๆ นี้

Definition

ระบบรันไทม์คือสภาพแวดล้อมซอฟต์แวร์ที่สนับสนุนการทำงานของโปรแกรมที่นอกเหนือจากโค้ดของตัวมันเอง และเครื่องเสมือนคือกลไกการประมวลผลเชิงนามธรรมที่แปลความหมายหรือคอมไพล์ชุดคำสั่งแบบพกพา เพื่อให้เกิดความสามารถในการพกพาและบริการรันไทม์

Scope

หัวข้อนี้ครอบคลุมชั้นระหว่างโค้ดที่คอมไพล์แล้วกับฮาร์ดแวร์: ตัวแปลภาษาไบต์โค้ดและเครื่องจักรนามธรรม, การคอมไพล์แบบทันเวลา (JIT), การส่งงานแบบไดนามิกและการค้นหาเมธอด, ข้อตกลงการเรียกใช้และการจัดการสแต็ก, และบริการรันไทม์ เช่น การจัดการข้อยกเว้นและการสะท้อนกลับ (reflection) โดยจะกล่าวถึงการออกแบบเครื่องเสมือนแบบพกพาและเทคนิคที่ทำให้ภาษาที่มีการจัดการมีประสิทธิภาพ

Core questions

  • เครื่องเสมือนให้ความสามารถในการพกพาข้ามฮาร์ดแวร์ได้อย่างไร?
  • การคอมไพล์แบบทันเวลาผสมผสานการแปลความหมายและโค้ดเนทีฟได้อย่างไร?
  • การส่งงานแบบไดนามิกและการค้นหาเมธอดมีประสิทธิภาพได้อย่างไร?
  • บริการรันไทม์ใดบ้างที่ต้องสนับสนุนภาษาที่มีการจัดการ?

Key theories

สถาปัตยกรรมเครื่องเสมือนแบบพกพา
ข้อกำหนดของ Java Virtual Machine กำหนดไบต์โค้ดและโมเดลการประมวลผลที่พกพาได้และตรวจสอบได้ ซึ่งแสดงให้เห็นว่าเครื่องเสมือนแยกภาษาออกจากฮาร์ดแวร์เฉพาะได้อย่างไร
การคอมไพล์แบบทันเวลา
Aycock ได้สำรวจเทคนิคที่รันไทม์ใช้ในการคอมไพล์โค้ดให้อยู่ในรูปแบบเนทีฟระหว่างการประมวลผล โดยปรับสมดุลระหว่างการเริ่มต้นของตัวแปลภาษาที่เรียบง่ายกับปริมาณงานของโค้ดที่คอมไพล์แล้วโดยใช้ข้อมูลรันไทม์
การแคชแบบอินไลน์สำหรับการส่งงานแบบไดนามิก
การนำ Smalltalk ไปใช้ของ Deutsch และ Schiffman ได้นำเสนอการแคชแบบอินไลน์และการแปลแบบไดนามิก ซึ่งเป็นเทคนิคสำคัญที่ทำให้การค้นหาเมธอดในภาษาที่มีการส่งงานแบบไดนามิกเป็นไปอย่างรวดเร็ว

Clinical relevance

เครื่องเสมือนและรันไทม์ที่มีการจัดการเป็นขุมพลังของแพลตฟอร์มที่ใช้กันอย่างแพร่หลายสำหรับ Java, .NET, JavaScript และ Python ซึ่งให้ความสามารถในการพกพา ความปลอดภัย และการปรับแต่งประสิทธิภาพแบบปรับเปลี่ยนได้ การคอมไพล์แบบ JIT และการแคชแบบอินไลน์เป็นเหตุผลที่ทำให้ภาษาไดนามิกที่มีระดับสูงสามารถบรรลุประสิทธิภาพที่แข่งขันได้

History

เครื่องจักรนามธรรมมีมาตั้งแต่ระบบแบบพกพายุคแรกเริ่มและ Smalltalk ซึ่งการนำไปใช้ในปี 1984 ได้บุกเบิกการแปลแบบไดนามิกและแคชแบบอินไลน์ Java Virtual Machine ทำให้ไบต์โค้ดแบบพกพาเป็นที่นิยมในช่วงกลางทศวรรษ 1990 และคอมไพเลอร์ JIT แบบปรับเปลี่ยนได้ เช่น HotSpot และต่อมาคือเอนจิน JavaScript ได้นำการปรับแต่งประสิทธิภาพรันไทม์เชิงรุกมาสู่ภาษาที่มีการจัดการกระแสหลัก

Debates

การแปลความหมายเทียบกับการคอมไพล์แบบทันเวลา
นักออกแบบรันไทม์ชั่งน้ำหนักระหว่างตัวแปลภาษาที่เรียบง่ายซึ่งเริ่มต้นได้เร็วและใช้หน่วยความจำน้อย กับคอมไพเลอร์ JIT ที่ให้ประสิทธิภาพสูงสุดที่สูงกว่า แต่มีค่าใช้จ่ายด้านเวลาในการวอร์มอัพและความซับซ้อนในการนำไปใช้ ซึ่งมักจะรวมทั้งสองอย่างเข้าด้วยกันในระบบแบบแบ่งชั้น

Key figures

  • Peter Deutsch
  • John Aycock
  • James Gosling
  • Gilad Bracha

Related topics

Seminal works

  • lindholm2014
  • aycock2003
  • deutsch1984

Frequently asked questions

ในบริบทนี้ เครื่องเสมือนคืออะไร?
ในที่นี้ เครื่องเสมือนคือกลไกการประมวลผลซอฟต์แวร์ที่รันชุดคำสั่งแบบพกพา (เช่น ไบต์โค้ด) โดยทำหน้าที่เป็นนามธรรมเหนือฮาร์ดแวร์พื้นฐานและให้บริการรันไทม์ แทนที่จะจำลองคอมพิวเตอร์ทั้งเครื่อง
การคอมไพล์แบบทันเวลาช่วยเพิ่มประสิทธิภาพได้อย่างไร?
คอมไพเลอร์ JIT จะแปลส่วนของโปรแกรมที่ถูกเรียกใช้บ่อยๆ ให้เป็นโค้ดเนทีฟในขณะรันไทม์ โดยใช้ข้อมูลการทำโปรไฟล์ที่คอมไพเลอร์แบบ ahead-of-time ไม่มี ทำให้โค้ดที่ทำงานบ่อย (hot code) ทำงานด้วยความเร็วใกล้เคียงกับเนทีฟ

Methods for this concept

Related concepts