คุณคิดว่าระบบปฏิบัติการที่จัดการเป็นความคิดที่ดีหรือไม่? [ปิด]


15

ระบบปฏิบัติการที่มีการจัดการเช่นMicrosoft SingularityและJNodeค่อนข้างเป็นแนวคิดที่น่าสนใจ โดยพื้นฐานแล้วระบบปฏิบัติการจะบู๊ตด้วยโค้ดที่เขียนด้วยภาษาระดับต่ำ (C / C ++ / Assembly) ซึ่งใช้เครื่องเสมือนเป็นหลัก ส่วนที่เหลือของ OS (และแอพผู้ใช้ทั้งหมด) ทำงานบนเครื่องเสมือน มีบางสิ่งที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้ ตัวอย่างเช่นคุณทำตัวชี้โดยพลการล้าสมัย และถ้าเขียนได้ดีคุณก็จะกำจัดสิ่งที่เป็นมรดกตกทอดมากมายที่ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่มีอยู่ในปัจจุบัน

อย่างไรก็ตามในฐานะผู้เสียเปรียบคุณอยู่ห่างจากฮาร์ดแวร์มากและในฐานะนักพัฒนาคุณสูญเสียความสามารถในการเลื่อนลงไปสู่ระดับที่เป็นนามธรรมและทำให้มือสกปรก

คุณมีความคิดเห็นอย่างไรกับเรื่องนี้?


ฉันกลัวที่จะตอบเนื่องจากฉันมีอคติต่อภาษาระดับสูงเนื่องจากเป็นภาษาเดียวที่ฉันใช้
TheLQ

2
ด้วยคอมพิวเตอร์ที่เร็วกว่าเดิมฉันคิดว่านี่เป็นเรื่องใหญ่ อย่างไรก็ตามถ้า MSFT ใช้งานมันจะยอดเยี่ยมหรือดูดมาก - ไม่มีในระหว่างนั้น
งาน

โปรดทราบว่า "crud ดั้งเดิม" เป็นสิ่งที่ทำให้แอปพลิเคชันที่มีอยู่ทำงาน อย่าประมาทความสำคัญของการมีบางสิ่งบางอย่างที่จะใช้จริง

คำตอบ:


8

ฉันคิดว่านี่เป็นอีกกรณีที่ "มันขึ้นอยู่กับ"

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

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

อย่างไรก็ตามจะมีแอปพลิเคชัน (เช่นเกม!) ที่ต้องการการเข้าถึงระดับต่ำและจะยังคงต้องเรียกใช้ "ดั้งเดิม"

เช่นเดียวกับภาษาที่มีการจัดการคุณจะต้องใช้เครื่องมือที่เหมาะสมสำหรับงาน


3
ฉันไม่เห็นด้วยจริงๆ ไม่มีเหตุผลที่จะต้องเล่นเกมเนทิฟและไม่มีความจำเป็นที่จะต้องอยู่ในระดับต่ำหากระบบปฏิบัติการมอบจุดเข้าใช้งานที่มีการจัดการทั้งหมดที่คุณต้องการ แน่นอนว่ามีข้อเสียเปรียบด้านประสิทธิภาพ (เล็กน้อยจริง ๆ แล้วถ้าระบบทั้งหมดได้รับการจัดการ) แต่วันนี้เรามีพลังการประมวลผลจำนวนมากและความต้องการซอฟต์แวร์ที่เชื่อถือได้จำนวนมาก
Wizard79

@ Lorenzo Games มีปัญหากับคอมพิวเตอร์อยู่แล้วดังนั้นประสิทธิภาพในการทำงานจึงเป็นสิ่งสำคัญ อย่างไรก็ตามฉันไม่แน่ใจว่าผลกระทบต่อประสิทธิภาพจะมากแค่ไหนถ้า VM ทั้งหมดเป็นแบบการโทรดั้งเดิม
TheLQ

4
@TheLQ: ประเด็นคือเกมนั้นไม่ต้องจัดการกับ "สิ่งระดับต่ำ" เนื่องจากมีมิดเดิ้ลอยู่เสมอ (DirectX, Open GL และอื่น ๆ ) แน่นอนว่าพวกเขาใช้คอมพิวเตอร์อย่างเข้มข้น แต่การใช้มิดเดิลแวร์นั้นเป็นที่นิยมอย่างมาก มันจะเป็นมิดเดิลแวร์ที่มีการจัดการ (และ jitted)
Wizard79

3
หากระบบปฏิบัติการดูแล JITting คุณจะต้องจบลงด้วยรหัสที่ได้รับการจัดการที่รันได้เร็วหรือเร็วกว่ารหัส "เนทีฟ" โปรดจำไว้ว่าหากคุณต้องควบคุมโปรแกรมเหมือนชุดประกอบคุณสามารถใช้โปรแกรมในรหัสไบต์ได้โดยตรง
Chinmay Kanchi

3
Afaik, MS Singularity ได้รับการเพิ่มประสิทธิภาพอย่างมากจากข้อเท็จจริงที่ว่ามันไม่จำเป็นต้องสลับระหว่างโหมดเคอร์เนลและโหมดผู้ใช้เลย การส้อมก็ยิ่งถูกลงเช่นกัน
9000

3

โดยทั่วไปฉันคิดว่าพวกเขาเป็นความคิดที่ดี แต่เนื่องจากมีไม่มากในรอบหรือใกล้อบอย่างเต็มที่ยากที่จะบอกว่าพวกเขาจะแสดงในโลกแห่งความจริง ฉันหวังว่า MS จะอัปเดตโครงการเอกฐานเพื่อที่เราจะได้เห็นว่าเกิดอะไรขึ้น แต่ฉันเดาว่ามันกำลังทำงานอยู่ใน Windows บางเวอร์ชัน


3

ฉันคิดว่าประโยชน์ของระบบปฏิบัติการที่มีการจัดการอย่างเต็มที่มีขนาดใหญ่และอาจเป็นอนาคตได้ แต่จะต้องใช้เวลาอีกหลายปี

ระบบปฏิบัติการที่มีการจัดการที่ดีจะให้จุดเข้าใช้งานที่มีการจัดการทุกอย่างที่คุณต้องทำทุกสิ่งที่คุณต้องการโดยไม่คำนึงถึงการจัดการ: การขัดจังหวะและการแสดง I / O ด้วยอุปกรณ์ C # ยังอนุญาตให้ใช้รหัสที่ไม่ปลอดภัย (การจัดการกับตัวชี้) แต่จะได้รับอนุญาตเฉพาะใน "ไดรเวอร์อุปกรณ์" (ซึ่งจะเป็นเพียงกระบวนการแยกซอฟแวร์ประเภทอื่น)

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


คุณแน่ใจเกี่ยวกับการสลับบริบทไม่จำเป็น? คุณยังต้องใช้หลายโปรแกรมพร้อมกัน
งาน

หากทั้งโปรแกรมและโค้ดทำงานใน VM อาจไม่มีการสลับบริบท อย่างไรก็ตามมันจะต้องมีการนำ MMU มาใช้ใหม่ในภาษา HL ดังนั้นฉันสงสัยว่าจริง ๆ แล้วจะมีประโยชน์ด้านประสิทธิภาพมาก
Maciej Piechotka

2

ระบบปฏิบัติการที่มีการจัดการอาจเป็นเหมือน microkernels - คุณเสียสละประสิทธิภาพในนามของความปลอดภัย

อาจมีปัญหาคล้ายกันเนื่องจากต้องมีการแยกรหัสใน 2 ส่วน:

  • เคอร์เนลระดับต่ำเขียนใน C / Assembler
  • เคอร์เนลระดับสูงกว่าเขียนในภาษาที่ได้รับการจัดการ

ทั้งนี้ขึ้นอยู่กับค่าใช้จ่ายในการเข้า / ออกอย่างปลอดภัยภาษา HL มันอาจกำหนดปัญหาที่คล้ายกันเป็น microkernels - อาจจะเร็วกว่าเล็กน้อย (ปล่อยให้ HL เร็วขึ้นจากนั้นสลับบริบทแบบเต็ม แต่ IIRC เช่น JNI ค่อนข้างแพง)

แอปพลิเคชันผู้ใช้อาจต้องการบริบทแยกต่างหากเนื่องจากมีแอปจำนวนมากที่เขียนบนแพลตฟอร์มอื่น (เช่น C, Java หรือ. Net) ในกรณีเดียวกันแอพพลิเคชั่นอาจมีการเชื่อมต่อกับ CPU (คอมไพเลอร์, ตัวแปลงเพลงเป็นต้น) และจำเป็นต้องมีแม้แต่การเพิ่มประสิทธิภาพแอสเซมเบลอร์เพื่อให้ทำงานด้วยความเร็วที่เพียงพอ นอกจากนี้ - การป้องกัน MMU ที่นำมาใช้ในภาษา HL อาจจะไม่เร็วเท่ากับฮาร์ดแวร์หนึ่งแม้ว่ามันอาจจะถูกปรับแต่งเพิ่มเติม

นอกจากนี้ภาษา HL ไม่เชี่ยวชาญในการดำเนินการระดับต่ำ ในขณะที่ซอฟแวร์มักจะได้รับการออกแบบด้วยไดรเวอร์การฝึกการเขียนโปรแกรม "ดี" ไม่จำเป็นต้องทำเช่นนั้น ฉันไม่คิดว่าพวกเขาจะป้องกันข้อผิดพลาดอย่างน้อยที่สุดเพราะในบางครั้งเมล็ดต้องมีการจัดการหน่วยความจำด้วยมือ

ในที่สุดฉันไม่คิดว่าระบบปฏิบัติการดังกล่าวจะต้องการ VM แบบเต็ม เนื่องจากระบบปฏิบัติการไม่สามารถสร้างขึ้นได้ด้วยภาษา HL ที่คอมไพล์ครั้งเดียวทำงานได้ทุกที่ (แม้กับ GC & co.) จะทำให้ผู้สมัครดีขึ้น

ตัวอย่างเช่นคุณทำตัวชี้โดยพลการล้าสมัย

ระบบปฏิบัติการอยู่ในระดับต่ำโดยเนื้อแท้ คุณส่งต่อไปยังฮาร์ดแวร์ไม่เพียง 'ตัวชี้โดยพลการ' แต่อาจเป็นที่อยู่จริงแทนที่จะเป็นที่อยู่เสมือน DMA บางตัวสามารถรองรับหน่วยความจำ 16MiB แรกเท่านั้น ในขณะที่ระบบปฏิบัติการดังกล่าวอาจลดความซับซ้อนมากมันจะไม่กำจัดที่อยู่

และถ้าเขียนได้ดีคุณก็จะกำจัดสิ่งที่เป็นมรดกตกทอดมากมายที่ระบบปฏิบัติการสมัยใหม่ส่วนใหญ่มีอยู่ในปัจจุบัน

  1. มีฮาร์ดแวร์รุ่นเก่ามากมาย มากขึ้นแล้วในซอฟต์แวร์ คุณเริ่มต้นในโหมดจริงจากนั้นเปิดใช้เกต A20 (ไม่ต้องถาม) กระโดดเข้าสู่โหมดป้องกันจากนั้นเข้าสู่โหมดยาว
  2. API / ABI ใช้งานได้ดี สมมติว่าพวกเขาเขียนระบบปฏิบัติการเช่นนี้ - คุณจะใช้งานมันอย่างไร Firefox - ไม่ (C และ C ++ ใช้ WinAPI) Java - อาจจำเป็นต้องได้รับการจัดวางหรือมีปัญหาเล็กน้อยผ่าน ikvm - ยกเว้นว่าจะยินดีใช้ JNI ฉันเดา MSSQL (และแน่นอนว่า Oracle, MySQL, Postgresql ... ) ไม่ได้เขียนในภาษาที่ได้รับการจัดการดังนั้นมันจึงไม่เหมาะสำหรับเซิร์ฟเวอร์
  3. ความเข้ากันได้ของบั๊กก็คือ "ดี" AFAIK MS ใช้เวลามากมายในการทดสอบและตรวจสอบว่าซอฟต์แวร์บางตัวไม่ได้ใช้ API อย่างฉลาด (อ่านไม่ถูกต้อง) เหมือนปัญหาการใช้ตัวชี้หลังจากfreeWindows เริ่มหน่วยความจำว่างจริง ๆ

ฉันเดาว่ามันจะได้รับความนิยมในเวลาเดียวกันกับ microkernels


2

ส่วนตัวแล้วฉันคิดว่าความคิดของระบบปฏิบัติการที่มีการจัดการนั้นค่อนข้างเหมือนกับคอมมิวนิสต์: ดีในทางทฤษฎี แต่ใช้การไม่ได้

ปัญหาคือฉันไม่เห็นวิธีใด ๆ ที่จะนำระบบปฏิบัติการที่มีการจัดการมาโดยไม่ต้องเขียนระบบปฏิบัติการใหม่ทั้งหมดตั้งแต่ต้น (และฉันหวังว่าจะมีคนพิสูจน์ฉันผิดในส่วนนี้) นอกจากนี้คุณจะสร้างรหัสที่ไม่มีการจัดการหลายสิบปีให้เหมาะกับระบบปฏิบัติการที่มีการจัดการได้อย่างไร

เมล็ดของระบบปฏิบัติการที่ได้รับความนิยมมากที่สุดนั้นได้รับการทดสอบการต่อสู้และได้เติบโตขึ้นในช่วงสองสามทศวรรษที่ผ่านมา คุณไม่เพียงแค่เขียนมันใหม่ด้วยความตั้งใจ ไม่ต้องพูดถึงว่าประวัติศาสตร์เต็มไปด้วยตัวอย่างของการออกแบบตัวประมวลผลและสถาปัตยกรรมเคอร์เนลที่ดีกว่าอย่างปฏิเสธไม่ได้ แต่ไม่สามารถโน้มน้าวใครได้ว่าพวกเขาคุ้มค่ากับการเปลี่ยนมาใช้พวกเขา

สุดท้าย บริษัท เช่น Microsoft หรือ Apple จะขายระบบปฏิบัติการที่มีการจัดการให้กับลูกค้าอย่างไร ผู้ใช้คอมพิวเตอร์โดยเฉลี่ยจะสนใจแม้ว่าระบบปฏิบัติการของพวกเขาจะได้รับการจัดการหรือไม่มีการจัดการบ้างไหม?

จากที่กล่าวมาข้างต้นฉันหวังว่าฉันผิดและระบบปฏิบัติการที่จัดการจะเป็นจริง แต่ฉันไม่เชื่อ หากเราเคยเห็นมันอาจจะไม่เป็นอีกสิบหรือสองปี


2
เคอร์เนลระบบปฏิบัติการไม่สำคัญมากสำหรับการยอมรับ MS คิดค้นเคอร์เนล NT ใหม่ทั้งหมดที่เข้ากันไม่ได้กับทุกอย่างและมันก็ประสบความสำเร็จ Apple เปลี่ยนสถาปัตยกรรมเคอร์เนลเป็นจำนวนมาก (และสถาปัตยกรรม CPU ถึงสามเท่า) และยังคงเติบโต กุญแจสำคัญคือความเข้ากันได้กับซอฟต์แวร์ที่มีอยู่และความสะดวกในการพอร์ต เลเยอร์ความเข้ากันได้และ / หรือ virtualization เลเยอร์ที่อนุญาตให้มีการเปลี่ยนจากโค้ดเก่าไปเป็นโค้ดใหม่ได้อย่างราบรื่นไม่ยากอย่างไม่มีเหตุผลในระบบปฏิบัติการที่มีการจัดการ
9000

2

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

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

คุณจะสนใจหรือไม่ว่า Google แล็ปท็อป (ที่ใช้ Chrome และโดยทั่วไปไม่มีอะไรอื่น) ทำงานบนรหัสที่จัดการหรือไม่


1

อย่างไรก็ตามในฐานะผู้เสียเปรียบคุณอยู่ห่างจากฮาร์ดแวร์มากและในฐานะนักพัฒนาคุณสูญเสียความสามารถในการเลื่อนลงไปสู่ระดับที่เป็นนามธรรมและทำให้มือสกปรก

สิ่งนี้ไม่เป็นความจริง ตัวอย่างเช่นใน JNode มีUnsafeคลาส (และอื่น ๆ ) ที่อนุญาตให้คุณเข้าถึงตำแหน่งหน่วยความจำเป็นต้น นอกจากนี้ยังมีคลาส / เมธอด "เวทมนต์" บางส่วนที่ถูกแปลเป็นคำสั่งพิเศษโดยคอมไพเลอร์ JIT การเข้าถึงคลาส / วิธีการเหล่านี้ถูก จำกัด โดยผู้จัดการความปลอดภัยคอมไพเลอร์ JIT และอื่น ๆ แต่ถ้าคุณกำลังเขียนโค้ดที่ดำเนินการในระดับระบบปฏิบัติการคุณจะสามารถใช้สิ่งอำนวยความสะดวกเหล่านี้ได้

ข้อแม้คือ (แน่นอน) ว่าการใช้งานอย่างไม่ถูกต้องUnsafeและคลาสที่เกี่ยวข้องสามารถนำไปสู่ระบบปฏิบัติการล่มได้ทันทีหรือตามรอยทาง


0

ฉันสงสัยถึงประโยชน์ของคอมพิวเตอร์เดสก์ท็อป แต่เวลาอาจพิสูจน์ว่าฉันผิดในจุดนี้

แต่สิ่งหนึ่งที่น่าสนใจในสายตาของฉันก็คือระบบปฏิบัติการเซิร์ฟเวอร์โดยเฉพาะอย่างยิ่งในฐานะระบบปฏิบัติการของแขกในสภาพแวดล้อมเสมือนจริง ฉันไม่เคยนั่งกับฉันเลยในการติดตั้งการติดตั้งเซิร์ฟเวอร์ windows แบบเต็มในสภาพแวดล้อมเซิร์ฟเวอร์เสมือนรู้ว่าบริการที่ไม่จำเป็นจำนวนมากทำงานรวมถึง GUI เต็มรูปแบบ

ตอนนี้การติดตั้งบางอย่างเช่นภาวะเอกฐานบนเซิร์ฟเวอร์เสมือนสำหรับการโฮสต์แอปพลิเคชัน ASP.NET ซึ่งเหมาะสมกว่า สมมติว่าพวกเขาสามารถทำให้มันเป็นระบบปฏิบัติการที่มีน้ำหนักเบา


1
มันเป็นการดีที่จะทิ้ง Windows ไว้โดยสิ้นเชิงเมื่อคุณทำได้
งาน

1
แนวโน้มที่จะใช้เบราว์เซอร์แซนด์บ็อกซ์และสิ่งที่เชื่อมต่ออินเทอร์เน็ตอื่น ๆ อาจแสดงให้เห็นว่าระบบปฏิบัติการหรือเดสก์ท็อปที่มีการแบ่งประเภทอย่างน้อยก็เป็นที่ต้องการเช่นกัน
9000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.