จากสิ่งที่ฉันเข้าใจว่าเครื่องเสมือนแบ่งออกเป็นสองประเภท ได้แก่ "เครื่องเสมือนระบบ" หรือ "เครื่องเสมือนกระบวนการ" มันค่อนข้างคลุมเครือสำหรับฉันที่บีมอยู่ มีเครื่องเสมือนชนิดอื่นที่ฉันไม่รู้จักหรือไม่?
จากสิ่งที่ฉันเข้าใจว่าเครื่องเสมือนแบ่งออกเป็นสองประเภท ได้แก่ "เครื่องเสมือนระบบ" หรือ "เครื่องเสมือนกระบวนการ" มันค่อนข้างคลุมเครือสำหรับฉันที่บีมอยู่ มีเครื่องเสมือนชนิดอื่นที่ฉันไม่รู้จักหรือไม่?
คำตอบ:
Erlang VM ทำงานเป็นกระบวนการ OS เดียว โดยค่าเริ่มต้นจะรันเธรด OS หนึ่งเธรดต่อคอร์เพื่อให้ใช้งานเครื่องได้สูงสุด สามารถตั้งค่าจำนวนเธรดและแกนที่รันได้เมื่อ VM เริ่มทำงาน
กระบวนการ Erlang จะดำเนินการทั้งหมดโดย Erlang VM และมีการเชื่อมต่อกับทั้งกระบวนการระบบปฏิบัติการหรือ OS ไม่มีหัวข้อ ดังนั้นแม้ว่าคุณจะใช้ระบบ Erlang มากกว่าหนึ่งล้านกระบวนการ แต่ก็ยังคงเป็นเพียงกระบวนการ OS เดียวและหนึ่งเธรดต่อคอร์ ดังนั้นในแง่นี้ Erlang VM จึงเป็น "เครื่องเสมือนกระบวนการ" ในขณะที่ระบบ Erlang เองก็มีพฤติกรรมเหมือน OS และกระบวนการ Erlang มีคุณสมบัติคล้ายกับกระบวนการ OS มากเช่นการแยก มีจริง Erlang VM บนพื้นฐานของ BEAM ซึ่งทำงานบนโลหะเปลือยและในความเป็นจริงระบบปฏิบัติการในสิทธิของตนเองให้ดู Erlang บน Xen
โดยวิธีการที่มันเป็นไปได้อย่างสมบูรณ์แบบที่จะมีระบบที่ใช้นับล้านของกระบวนการ Erlang และจะมีการทำจริงในผลิตภัณฑ์บางอย่างเช่นWhatsApp
เราคิดถึง OSes เป็นอย่างมากเมื่อเราออกแบบสภาพแวดล้อม Erlang พื้นฐาน
เครื่องเสมือนเป็นระบบคอมพิวเตอร์ เป้าหมายสูงสุดของระบบคอมพิวเตอร์คือการรันตรรกะโปรแกรม จากมุมมองนี้เครื่องเสมือนสามารถแบ่งออกเป็น4 ประเภทตามระดับของนามธรรมและขอบเขตของการจำลอง:
ประเภทที่ 1: เครื่องเสมือนสถาปัตยกรรมชุดคำสั่งแบบเต็ม (ISA)ให้การจำลอง ISA หรือการจำลองเสมือนของระบบคอมพิวเตอร์เต็มรูปแบบ ระบบปฏิบัติการและแอปพลิเคชันของแขกสามารถทำงานที่ด้านบนของเครื่องเสมือนเสมือนคอมพิวเตอร์จริง (เช่นVirtualBox, QEMU, XEN )
ประเภทที่ 2: เครื่องเสมือน Application Binary Interface (ABI)จัดเตรียมการจำลอง ABI ของกระบวนการแบบแขก แอปพลิเคชันต่อต้าน ABI นั้นสามารถทำงานในกระบวนการควบคู่ไปกับกระบวนการอื่น ๆ ของแอปพลิเคชัน ABI ดั้งเดิม (เช่นIA-32 Execution Layer ของ Intel บน Itanium, Code Morphing ของ Transmeta สำหรับการจำลอง X86, เลเยอร์การแปล Rosetta ของ Apple สำหรับการจำลอง PowerPC )
ประเภทที่ 3: เครื่องเสมือน ISA เสมือนจัดเตรียมเอ็นจิ้นรันไทม์เพื่อให้แอปพลิเคชันที่เข้ารหัสใน ISA เสมือนสามารถดำเนินการได้ Virtual ISA มักจะกำหนดขอบเขตความหมายของ ISA ในระดับสูงและ จำกัด ดังนั้นจึงไม่จำเป็นต้องใช้เครื่องเสมือนเพื่อจำลองระบบคอมพิวเตอร์เต็มรูปแบบ (เช่นJVM ของ Sun Microsystem, Microsoft's Common Language Runtime, Parrot virtual machine ของ Parrot Foundation)
ประเภทที่ 4: Language Virtual Machineมีเอ็นจินรันไทม์ที่รันโปรแกรมที่แสดงในภาษาแขก โดยปกติโปรแกรมจะถูกนำเสนอไปยังเครื่องเสมือนในรูปแบบซอร์สของภาษาแขกโดยไม่ได้รวบรวมเป็นรหัสเครื่องไว้ล่วงหน้า รันไทม์เอ็นจินจำเป็นต้องแปลความหมายหรือแปลโปรแกรมและยังตอบสนองฟังก์ชันการทำงานบางอย่างที่เป็นนามธรรมโดยภาษาเช่นการจัดการหน่วยความจำ (เช่นเอ็นจินรันไทม์สำหรับ Basic, Lisp, Tcl, Ruby )
ขอบเขตระหว่างประเภทเครื่องเสมือนไม่ชัดเจน ตัวอย่างเช่นเครื่องเสมือนภาษาสามารถใช้เทคนิคของเครื่องเสมือน ISA เสมือนได้โดยการรวบรวมโปรแกรมให้เป็น ISA เสมือนชนิดหนึ่งจากนั้นเรียกใช้รหัสบนเครื่องเสมือนของ ISA เสมือนนั้น
การออกแบบ VM จำนวนมากเช่นBEAMข้ามขอบเขต สามารถเข้าได้กับทั้งประเภทที่ 3 และ 4
แหล่งที่มา:
ฉันคิดว่าคุณได้อ่านhttp://en.wikipedia.org/wiki/Virtual_machineภายใต้คำศัพท์นั้น BEAM เป็น "เครื่องเสมือนกระบวนการ" เช่นเดียวกับ JVM