ระบบรันไทม์และเลเยอร์ที่เข้ากันได้


1
  1. ฉันสงสัยว่าระบบรันไทม์และเลเยอร์ที่ใช้งานร่วมกันได้ เป็นอย่างเดียวกันหรือไม่? พวกเขาทั้งคู่ดูเหมือนจะเป็นซอฟต์แวร์บางตัวที่ทำงานซึ่งอนุญาตให้ซอฟต์แวร์อื่นทำงานได้ ลิงค์ไปยังวิกิพีเดียสำหรับแนวคิดทั้งสองได้รับการให้ไว้ข้างต้น
  2. พวกเขาเป็นทั้งเครื่องเสมือนหรือไม่? บทความ Wikipedia สำหรับเครื่องเสมือนระบุว่าระบบเวลาทำงานเป็นเครื่องเสมือนชนิดหนึ่ง
  3. ทำไม Cygwin กล่าวว่าเป็นชั้นที่เข้ากันได้เป็นชนิดในบทความวิกิพีเดีย ? มันเป็นตัวเลียนแบบของ Linux OS และ / หรือระบบรันไทม์หรือไม่?

1
Randolf Richardson ครอบคลุมเรื่องทั่วไปค่อนข้างดี แต่เพื่อตอบคำถามของคุณที่เฉพาะเจาะจง (และจำไว้ว่าบทความ Wikipedia จัดกลุ่มเทคโนโลยีที่แตกต่างกันหลายอย่างเข้าด้วยกัน) บางเลเยอร์รันไทม์นั้นเกี่ยวข้องกับ VM Cygwin เป็นเลเยอร์ความเข้ากันได้ในวงกว้างคล้ายกับ WINE ซึ่งช่วยให้สามารถทำงานร่วมกันได้ในระดับซอร์สกับแอพพลิเคชั่น Linux แต่ไม่มีการจำลองมันให้ API เพียงอย่างเดียว
user55325

1
@ user55325: ขอบคุณ! คุณสามารถระบุเกี่ยวกับบทความใน Wikipedia ที่รวมกลุ่มเทคโนโลยีที่แตกต่างกันและอย่างไร
ทิม

@ user55325: ฉันเห็นด้วยกับคุณเกี่ยวกับ Cygwin และ WINE เป็นเลเยอร์ความเข้ากันได้ ฉันยังคงมีความตั้งใจมากกว่าเพราะฉันเชื่อว่าความแตกต่างระหว่างสองสิ่งนี้เพิ่งเริ่มเบลอส่วนหนึ่ง (แต่ในทางเล็ก ๆ ) ต้องขอบคุณ virtualization และส่วนใหญ่ต้องขอบคุณนักการตลาดที่บางครั้งใช้ศัพท์ทางเทคนิคในทางที่ผิด
Randolf Richardson

คำตอบ:


3

แม้ว่าจะมีความคล้ายคลึงกันมาก แต่ก็มีความแตกต่างที่สำคัญ:

ตัวอย่างที่ดีของระบบรันไทม์คือ Java Virtual Machine ซึ่งให้สภาพแวดล้อมข้ามแพลตฟอร์มที่สอดคล้องกันสำหรับโค้ด Java [[รวบรวม]

ตัวอย่างที่ดีของ Compatibility Layer คือ WINE ซึ่งช่วยให้ผู้ใช้สามารถรันแอพพลิเคชั่น Windows ที่ไม่ได้ทำการแก้ไขบน Linux และ Unix ได้โดยตรง เมื่อเทียบกับ WINE เลเยอร์ความเข้ากันได้อาจมีขนาดค่อนข้างเล็กเช่นไลบรารีเดียวที่ฐานรหัสหลักใช้เพื่อเข้าถึงคุณลักษณะเฉพาะของระบบปฏิบัติการ (เช่นการเปิดไฟล์การสื่อสารผ่านอินเทอร์เน็ต ฯลฯ ) ซึ่งมี API ที่สอดคล้องกัน เพื่อให้แอปพลิเคชันซ่อนความแตกต่างเฉพาะ OS ที่น่าเกลียดทั้งหมดได้อย่างมีประสิทธิภาพ

ข้อเสียของ Runtime Environment คือสภาพแวดล้อมทั้งหมดต้องพร้อมใช้งานกับรหัสใดก็ตามที่จะใช้งานซึ่งอาจต้องใช้ความพยายามในการพัฒนาอย่างมาก

ข้อเสียของเลเยอร์ความเข้ากันได้คือไม่จำเป็นต้องให้ความสอดคล้องและอาจยากต่อการดีบัก

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

ข้อดีของ Compatibility Layer คือการรองรับแพลตฟอร์มใหม่เฉพาะเลเยอร์ใหม่ (หรือชุดของเลเยอร์) จำเป็นต้องสร้างขึ้นและแอปพลิเคชันหลักสามารถรวบรวมสำหรับแพลตฟอร์มเป้าหมายใหม่ที่มีการเปลี่ยนแปลงน้อยที่สุด

การจำลองเสมือนเป็นเหมือนสภาพแวดล้อมรันไทม์ที่กว้างขวางมาก แต่สิ่งที่แตกต่างกันก็คือชุดคำสั่ง CPU (และอุปกรณ์ที่จำเป็น) นั้นกำลังถูกจำลองเสมือนหรือเลียนแบบได้ดีมาก


1
ขอบคุณ! การอ้างอิงใด ๆ สำหรับแนวคิดที่กล่าวถึงในโพสต์นี้ หนังสือหน้าเว็บ ...
ทิม

@Tim: มันขึ้นอยู่กับประสบการณ์ของตัวเอง (ฉันเขียนคำตอบจากหัวใจของฉัน ) ในการทำงานกับเทคโนโลยีเหล่านี้ในช่วงหลายปีที่ผ่านมา สิ่งที่อยู่ในใจคือฉันได้เรียนรู้บิตที่เป็นธรรมจากคนที่มีประโยชน์มากมายใน Freenode.Net (IRC) โดยการอ่านเอกสารสำหรับผลิตภัณฑ์ที่ฉันพูดถึง (และอื่น ๆ ) และทำงานร่วมกับพวกเขาเพื่อใช้ [หรืออย่างน้อยขยาย] ความรู้ด้านเทคนิคของฉันเอง (ถ้ามีคนต้องการเพิ่มคำตอบของฉันที่นี่ในความคิดเห็นที่ฉันยินดีอย่างแน่นอน)
Randolf Richardson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.