มีอะไรในระบบปฏิบัติการอื่นนอกเหนือจากเคอร์เนล


43

ตามที่ฉันเข้าใจเคอร์เนลจะโต้ตอบกับฮาร์ดแวร์และจัดการหน่วยความจำอุปกรณ์ I / O ฯลฯ ดังนั้นเคอร์เนลจึงทำทุกอย่าง แต่มันเป็นเพียงส่วนหนึ่งของระบบปฏิบัติการ แล้วมีอะไรอีกบ้างใน OS? มีเพียงแอปพลิเคชันที่มาพร้อมกับมันหรือไม่? ตัวอย่างเช่น Ubuntu มีอะไรนอกเหนือจากเคอร์เนล เดสก์ท็อป Gnome และแอปพลิเคชั่นอื่น ๆ

คำตอบ:


54

แน่นอนว่าเชลล์

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

บางคนต้องการผูก "เคอร์เนล" (และแน่นอน "เชลล์") ลงเพื่อให้เฉพาะเจาะจงยิ่งกว่านั้น แต่ในความเป็นจริงมันมีการเปลี่ยนแปลงมากมายในระบบปฏิบัติการ สิ่งที่เปลี่ยนแปลงไม่น้อยคือสิ่งที่ถือเป็น "เชลล์" (ซึ่งอาจมีตั้งแต่ Solaris ' shถึง Netware's Console Command Interpreter ถึง Workplace Shell ของ OS / 2 และ Explorer ของ Windows NT) แต่ก็มีความแปรปรวนมากมายจากระบบปฏิบัติการหนึ่งไปยังอีกระบบหนึ่งใน คืออะไรและไม่ได้เป็นส่วนหนึ่งของ "เคอร์เนล" (ซึ่งอาจมีหรือไม่มีดิสก์ I / O เป็นต้น) มันเป็นเรื่องที่ดีที่สุดจำไว้ว่าคำเหล่านี้เป็นคำอุปมาอุปมัย

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

นิวเคลียสจะแสดงรหัสส่วนเล็ก ๆ ของสิ่งที่คิดกันโดยทั่วไปว่าเป็นระบบปฏิบัติการทั้งหมด [... ]

คำว่า "นิวเคลียส" มาจากนิวเคลียสละตินและหมายถึงเคอร์เนลของถั่ว (cf the Latin nuxซึ่งหมายถึง "น็อต") ดังนั้นแม้แต่การเรียกโปรแกรมควบคุม "นิวเคลียส" ก็คือการสร้างระบบปฏิบัติการแบบอะซิน - อะ - นัทแบบเดียวกัน มันเป็นการเปรียบเทียบที่ใช้มากกว่าระบบปฏิบัติการ หากคุณมีความคุ้นเคยกับเคมีเช่นคุณจะรู้ว่าอะตอมนิวเคลียสล้อมรอบด้วยอิเล็กตรอนในเปลือกหอย

สิ่งที่บุคคลนามแฝงnew123456เขียนด้านล่างเป็นตัวอย่างข้อผิดพลาดที่เกิดจากการลืมต้นกำเนิดของคำอุปมาอุปมัยเหล่านี้เท่าที่หนึ่งผิดพลาดส่วนทั้งหมดและเคอร์เนลผิดพลาดสำหรับระบบปฏิบัติการทั้งหมด การเป็นโปรแกรม "userland" ไม่ได้ทำให้เชลล์มีส่วนนอกของระบบปฏิบัติการน้อยลงและไม่ทำให้มันน้อยลงไปกว่าสิ่งที่ล้อมรอบเคอร์เนล ยิ่งไปกว่านั้นการเป็นไอเดียของ DOS อย่างเดียวที่ไม่ได้ใช้กับ Unix เกินกว่าเวอร์ชัน 7 ความคิดนี้เป็นที่แพร่หลายและเป็นปัจจุบันในโลก Unix

(มันเป็นเรื่องน่าขันที่new123456ผิดพลาดสำหรับ DOSism การเปรียบเทียบเคอร์เนล / เชลล์นั้นค่อนข้างแปลกใน DOS ในช่วงปีแรก ๆ ซึ่งได้รับการสนับสนุนตัวประมวลผลคำสั่งและคล้ายกันจาก CP / M เหมือนกับ CP / M ก่อนหน้านั้น MS-DOS ถูกแบ่งออก ในระบบปฏิบัติการดิสก์พื้นฐาน (BDOS), ระบบอินพุต - เอาท์พุตพื้นฐาน (ไบออส - ไม่ใช่เฟิร์มแวร์ระบบ, หมายเหตุ), ตัวประมวลผลคำสั่งและโปรแกรมอรรถประโยชน์การดูแลทำความสะอาดรหัสถูกแยกเป็นไฟล์ด้วยวิธีนี้จริง ๆ นี่เป็นอีกอย่างหนึ่ง ตัวอย่างในความเป็นจริงวิธีการเปรียบเทียบเคอร์เนล / เชลล์ไม่ได้ครอบคลุมจริงๆหรือตรงกับแผนกจริงในระบบปฏิบัติการหลายระบบ)

new123456กำลังลืมสิ่งที่ Deitel เขียนเกี่ยวกับนิวเคลียสซึ่งเป็นส่วนหนึ่งของระบบปฏิบัติการโดยรวม ระบบปฏิบัติการเป็นทั้งเคอร์เนลและเชลล์ นั่นคือหลังจากทั้งหมดอุปมา Deitel ไม่ได้โดดเดี่ยวเช่นกัน มีหนังสือรีมิกซ์ของยูนิกซ์อธิบายการเปรียบเทียบคำอุปมาของยูนิกซ์ตั้งแต่ปี 1980 เป็นต้นมา ฉันขอแนะนำ Urban's และ Tiemann สอนตัวเอง FreeBSD ใน 24 ชั่วโมง (SAMS, ISBN 9780672324246) ด้วยเหตุผลง่ายๆที่ในหน้า 54 มีแผนภาพแสดงคำอุปมาระบบปฏิบัติการแบบ as-a-a-seed และน่าประหลาดใจ - เป็นหนึ่งใน หนังสือสองสามเล่มที่จะทำเช่นนั้น

ชื่อ "นิวเคลียส" น่าจะเป็นชื่อที่เก่ากว่า predating Unix อย่างแน่นอน, ซึ่งสนับสนุนคำศัพท์เคอร์เนล / เชลล์ที่ในวันนี้ - คงไม่ได้เป็นส่วนเล็ก ๆ จากยูนิกซ์ - ซึ่งแพร่หลายมากขึ้น นี่คือสิ่งที่อยู่ในหนังสือเล่มปี 1974 ของอลันซีชอว์การออกแบบเชิงตรรกะของระบบปฏิบัติการ (Prentice-Hall, ISBN 9780135401125) ตัวอย่างเช่น:

ส่วนหนึ่งของระบบที่ถาวรอยู่ในการจัดเก็บข้อมูลหลักที่ได้รับในอดีตเรียกว่านิวเคลียส นิวเคลียสจะประกอบด้วยชุดพื้นฐานและกระบวนการขั้นต่ำสำหรับการจัดการกระบวนการทรัพยากรและอินพุต - เอาต์พุต
Shaw มีแผนภาพด้วย ☺


7
ฉันคิดว่านี่เป็นคำตอบที่ยอดเยี่ยมเพราะมันทำให้ฉันนึกถึงความสัมพันธ์ระหว่างคำอุปมาอุปมัย "เชลล์" และ "เคอร์เนล" ฉันรู้ว่าทั้งสองฉันไม่เคยเชื่อมต่อพวกเขา ฉันรู้คำตอบของคำถาม แต่ก็ยังสามารถเรียนรู้บางสิ่งจากคำตอบนี้ได้ ดังนั้นการโหวต ขอบคุณ!
Andrew J. Brehm

ฉันลังเลที่จะพูดแบบนี้เพราะเชลล์ UNIX แยกออกจากเคอร์เนลตั้งแต่รุ่น 7 และมีตั้งแต่โปรแกรม userland ในทุกความรู้สึกของคำ อย่างไรก็ตามสิ่งที่คุณพูดคือความจริงของ DOS (ซึ่งเป็นตัวเลือกการออกแบบที่น่ากลัวโดยเฉพาะ)
new123456

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

ได้รับการโหวตให้เป็นคำตอบที่ครอบคลุมและมีประวัติที่น่าสนใจมากมาย (ฉันไม่ทราบว่านิวเคลียสเป็นคำศัพท์คอมพิวเตอร์ - หรือละตินนิรุกติศาสตร์) อย่างไรก็ตามฉันคิดว่ามันจะอ่านได้ดีขึ้นมากในฐานะคำตอบแบบสแตนด์อโลนหากไม่ได้อ้างถึงคำตอบของผู้ใช้รายอื่น (ลบทันที) อย่างชัดเจน
Anthony Geoghegan

45

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

เพื่อยกตัวอย่างฉันได้แสดงโครงสร้างของ OS Xดังที่คุณเห็นด้านบนของเคอร์เนล (สีฟ้าอ่อน) อยู่หลาย ๆ ชั้นของฟังก์ชั่น "คอร์" เครื่องมือระบบบริการและ API (Application Programming Interface) ก่อนที่คุณจะ แม้กระทั่งไปที่ GUI ซึ่งเป็นสิ่งที่คุณมักทำงานด้วยในแอพพลิเคชันจริง

ป้อนคำอธิบายรูปภาพที่นี่

ระบบปฏิบัติการส่วนใหญ่มีโครงสร้างที่คล้ายกัน แต่มีขอบเขตกว้างสำหรับความแตกต่างเกี่ยวกับจำนวนจริงของเคอร์เนล ดูบทความ Wikipedia บนMicrokernelsเพื่อเปรียบเทียบ

แก้ไข - เพื่อตอบความคิดเห็นของคุณ (ความคิดเห็นของฉันยาวไปหน่อย)

คุณสามารถบูทได้แค่เคอร์เนล linux แต่คุณจะไม่สามารถบรรลุผลได้มากนักนั่นคือแอพพลิเคชั่นช่วยเหลือทั้งหมดที่มีอินเตอร์เฟสทั้งหมดที่คุณเห็นและใช้งาน

เมื่อเคอร์เนลถูกบูท (และเริ่มต้นฮาร์ดแวร์) มันจะพยายามส่งต่อไปยังส่วนอื่น ๆ ของระบบปฏิบัติการ GNU / Linux ซึ่งมีฟังก์ชันการทำงานสำหรับบริการเริ่มต้น (เช่นUDEVซึ่งมี/devอินเทอร์เฟซอุปกรณ์ดิบสำหรับโปรแกรมเพื่อใช้สิ่งต่าง ๆ เช่น ฮาร์ดไดรฟ์และพอร์ตอนุกรมและอื่น ๆ ) และโปรแกรมการตั้งค่าเครือข่าย ( dhcpcd ) และ API เช่นX.orgสำหรับการใช้งานเพื่อให้สามารถแสดงหน้าต่างและไอคอนแม้ว่าผู้จัดการหน้าต่างเช่นGNOMEหรือKDE

แต่ใช่คุณสามารถบูทเคอร์เนลเองได้มันแค่นั่งอยู่ที่นั่นด้วย รวดเร็ว


ดังนั้นฉันสามารถบูตเพียงเคอร์เนลและไม่มีสิ่งเพิ่มเติมที่ระบบปฏิบัติการมักจะมี?
AnkurVj

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

@AnkurVj ฉันได้เพิ่มคำตอบแล้ว
Mokubai

3
ฉันไม่คิดว่าคุณสามารถบูตได้เฉพาะเคอร์เนล Linux เคอร์เนลถึงจุดที่เรียกใช้ init ซึ่งเวลาที่ระบบเปลี่ยนจากโหมดเคอร์เนลเป็นโหมดผู้ใช้ หาก init ไม่พร้อมใช้งาน (หรือ init ปลอมเช่นทุบตี) เคอร์เนลจะทำให้ตกใจและล่ม ดังนั้นจึงต้องมีกระบวนการเริ่มต้นบางอย่างที่ทำงานเพื่อหลีกเลี่ยงความตื่นตระหนก ณ จุดนี้มันไม่ได้เป็นเพียงการทำงานของเคอร์เนล
Joe Internet

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