ผมอยากจะทราบวิธีการทำงานของระบบปฏิบัติการสั้น :
- ส่วนประกอบพื้นฐานที่สร้างขึ้น
- องค์ประกอบเหล่านั้นทำงานร่วมกันอย่างไร
- อะไรทำให้ยูนิกซ์ยูนิกซ์
- สิ่งที่ทำให้แตกต่างจากระบบปฏิบัติการอื่น ๆ เช่น Windows
ผมอยากจะทราบวิธีการทำงานของระบบปฏิบัติการสั้น :
คำตอบ:
ระบบ UNIX ประกอบด้วยหลายส่วนหรือหลายชั้นตามที่ฉันต้องการเรียกพวกมัน
ในการเริ่มระบบโปรแกรมที่เรียกว่าบูตโหลดเดอร์จะอยู่ที่เซกเตอร์แรกของพาร์ติชั่นฮาร์ดดิสก์ มันเริ่มต้นโดยระบบและในทางกลับกันมันจะอยู่ในเคอร์เนลระบบปฏิบัติการและโหลด
layering
เคอร์เนล นี่คือโปรแกรมกลางที่เริ่มต้นโดยบูตโหลดเดอร์ มันเป็นการโต้ตอบฮาร์ดแวร์ขั้นพื้นฐานสำหรับระบบ (ดิสก์หน่วยความจำวิดีโอเสียง) และมีสภาพแวดล้อมเสมือนจริงซึ่งสามารถเริ่มโปรแกรมได้ เคอร์เนลยังจัดส่งไดรเวอร์ทั้งหมดที่จัดการกับความแตกต่างเล็กน้อยระหว่างอุปกรณ์ฮาร์ดแวร์ สำหรับโลกภายนอก (เลเยอร์ที่สูงขึ้น) แต่ละคลาสของอุปกรณ์นั้นจะทำงานในลักษณะที่สอดคล้องกัน - ซึ่งโปรแกรมสามารถสร้างขึ้นได้
ระบบย่อยพื้นหลัง มีเพียงโปรแกรมปกติที่เพิ่งออกนอกเส้นทางของคุณ พวกเขาจัดการสิ่งต่าง ๆ เช่นการเข้าสู่ระบบจากระยะไกลจัดทำบัสข้อความส่วนกลางและดำเนินการตามเหตุการณ์ฮาร์ดแวร์ / เครือข่าย ตัวอย่างเช่นการค้นพบบลูทู ธ การจัดการ wifi ฯลฯ บริการเครือข่ายใด ๆ (ไฟล์เซิร์ฟเวอร์เซิร์ฟเวอร์การพิมพ์เว็บเซิร์ฟเวอร์) ก็อยู่ในระดับนี้เช่นกัน ในระบบ UNIX ทั้งหมดนี้เป็นเพียงโปรแกรมปกติ
เครื่องมือบรรทัดคำสั่ง โปรแกรมเหล่านี้เป็นโปรแกรมเล็ก ๆ ที่สามารถเริ่มทำสิ่งต่าง ๆ เช่นการแก้ไขข้อความการดาวน์โหลดไฟล์หรือการดูแลระบบ ณ จุดนี้ระบบ UNIX สามารถใช้งานได้อย่างสมบูรณ์สำหรับผู้ดูแลระบบ ใน Windows เลเยอร์นี้ไม่มีอยู่จริงอีกต่อไป
ส่วนต่อประสานกราฟิกกับผู้ใช้ สิ่งเหล่านี้เป็นเพียงโปรแกรมความแตกต่างเพียงอย่างเดียวก็คือการวาดหน้าต่างที่หน้าจอแทนที่จะเขียนข้อความ สิ่งนี้ทำให้ระบบใช้งานง่ายขึ้นสำหรับผู้ใช้ทั่วไป
บริการหรือกิจกรรมใด ๆ จะไปจากด้านล่างทั้งหมดขึ้นไปด้านบน
ไลบรารี - แพลตฟอร์มทั่วไป
โปรแกรมทำสิ่งต่าง ๆ มากมายเช่นแสดงหน้าต่างวาดสิ่งที่หน้าจอหรือดาวน์โหลดไฟล์ สิ่งเหล่านี้จะเหมือนกันสำหรับหลาย ๆ โปรแกรมดังนั้นโค้ดจะถูกใส่ในไฟล์ " .so
ไลบรารี่" แยกต่างหาก ( ไฟล์ - หมายถึงวัตถุที่ใช้ร่วมกัน) ห้องสมุดสามารถใช้ร่วมกันได้ในทุกโปรแกรม
สำหรับทุกสิ่งเท่าที่จะเป็นไปได้มีห้องสมุด มีหนึ่งสำหรับการอ่าน / เขียนไฟล์ PNG มีหนึ่งไฟล์สำหรับ JPEG สำหรับอ่าน XML สำหรับการเข้ารหัสสำหรับการเล่นวิดีโอและอื่น ๆ
บน Linux ไลบรารีทั่วไปสำหรับนักพัฒนาแอปพลิเคชันคือ Qt และ Gtk ไลบรารีเหล่านี้ใช้ไลบรารีระดับต่ำกว่าภายในสำหรับความต้องการเฉพาะของพวกเขาในขณะที่เปิดเผยการทำงานของพวกเขาในวิธีที่สอดคล้องและรัดกุมดีสำหรับนักพัฒนาแอปพลิเคชันเพื่อสร้างแอปพลิเคชันได้เร็วขึ้น
ไลบรารีจัดเตรียมแพลตฟอร์มแอปพลิเคชันซึ่งโปรแกรมเมอร์สามารถสร้างแอปพลิเคชันผู้ใช้ปลายทางสำหรับระบบปฏิบัติการ ยิ่งห้องสมุดมีระบบที่มีคุณภาพสูงเท่าไหร่รหัสก็น้อยลงที่โปรแกรมเมอร์ต้องเขียนเพื่อสร้างโปรแกรมที่สวยงาม
บางไลบรารีสามารถใช้ได้กับระบบปฏิบัติการที่แตกต่างกัน (ตัวอย่างเช่น Qt) บางไลบรารีถูกผูกเข้ากับระบบปฏิบัติการเดียว สิ่งนี้จะ จำกัด โปรแกรมของคุณเพื่อให้สามารถทำงานบนแพลตฟอร์มนั้นเท่านั้น
การสื่อสารระหว่างกระบวนการ
มุมที่สามของระบบปฏิบัติการคือวิธีที่โปรแกรมสามารถสื่อสารระหว่างกันได้ เหล่านี้เป็นกลไกการสื่อสารระหว่างกระบวนการ (IPC) สิ่งเหล่านี้มีอยู่ในหลายรสชาติเช่นหน่วยความจำที่แบ่งใช้หรือช่องสัญญาณขนาดเล็กถูกตั้งค่าระหว่างสองโปรแกรมเพื่อแลกเปลี่ยนข้อมูล นอกจากนี้ยังมีบัสข้อความกลางซึ่งแต่ละโปรแกรมสามารถโพสต์ข้อความและรับการตอบกลับ สิ่งนี้ใช้สำหรับการสื่อสารทั่วโลกซึ่งไม่ทราบว่าโปรแกรมใดสามารถตอบสนองได้
จากห้องสมุดไปจนถึงระบบปฏิบัติการ
ด้วยไลบรารี, IPC และเคอร์เนล, โปรแกรมเมอร์สามารถสร้างแอพพลิเคชั่นสำหรับบริการระบบ, การจัดการผู้ใช้, การกำหนดค่า, การจัดการ, งานสำนักงาน, ความบันเทิง, ฯลฯ . นี้เป็นชุดที่สมบูรณ์ซึ่งผู้ใช้มือใหม่จำได้ว่าเป็นระบบปฏิบัติการ "
ในระบบ UNIX / Linux บริการทั้งหมดเป็นเพียงโปรแกรม เครื่องมือการดูแลระบบทั้งหมดเป็นเพียงโปรแกรม พวกเขาทั้งหมดทำงานของพวกเขาและพวกเขาสามารถถูกล่ามโซ่ด้วยกัน ฉันได้สรุปโปรแกรมสำคัญ ๆ มากมายที่http://codingdomain.com/linux/sysadmin/
ส่วนที่แตกต่างกับ Windows
UNIX ส่วนใหญ่เป็นระบบของโปรแกรมไฟล์และการอนุญาตที่ จำกัด หลีกเลี่ยงความซับซ้อนจำนวนมากทำให้มันเป็นระบบที่มีประสิทธิภาพในขณะที่ดูเหมือนว่าจะมีงานที่ทำได้ง่าย
รายละเอียดนี่คือหลักการที่สามารถพบได้ในระบบ UNIX / Linux:
มีวิธีที่เหมือนกันในการเข้าถึงข้อมูล ("ทุกอย่างเป็นเพียงไฟล์") คุณสามารถเปิดไฟล์ซ็อกเก็ตเครือข่ายช่อง IPC พารามิเตอร์เคอร์เนลและอุปกรณ์บล็อกเป็นไฟล์ ดังนั้นการปรากฏตัวของระบบไฟล์เสมือนใน / dev, / sys และ / proc API ที่เดียวที่คุณต้องเป็นopen
, และread
close
ระบบพื้นฐานมีความโปร่งใส ทุกโปรแกรมทำงานภายใต้กฎเดียวกัน ต่างจาก Windows ไม่มีความแตกต่างที่เกิดขึ้นระหว่าง "โปรแกรมคอนโซล", "โปรแกรม gui" หรือ "บริการพื้นหลัง" พวกเขาทั้งหมดเป็นเพียงโปรแกรมที่เกิดขึ้นกับสิ่งที่แตกต่าง พวกเขายังสามารถสังเกตวิเคราะห์และตรวจแก้จุดบกพร่องในลักษณะเดียวกัน
การตั้งค่าสามารถอ่านได้แก้ไขได้และสามารถใส่คำอธิบายประกอบไว้กับข้อคิดเห็น โดยทั่วไปจะมีรูปแบบ INI แต่อาจใช้รูปแบบกำหนดเองสำหรับความต้องการของแอปพลิเคชันนั้น เนื่องจากเป็นเพียงไฟล์จึงสามารถคัดลอกไปยังระบบอื่นจัดเก็บหรือสำรองข้อมูลด้วยเครื่องมือมาตรฐาน
ไม่มีแอปพลิเคชั่น "ทำทั้งหมดในครั้งเดียว" ที่มีขนาดใหญ่ มนต์คือ "ทำสิ่งหนึ่งทำมันให้ดี" เครื่องมือบรรทัดคำสั่งสามารถถูกผูกมัดและร่วมกันมีประสิทธิภาพ บริการที่แยกต่างหาก (เช่น SMTP, IMAP และ POP และการเข้าสู่ระบบ) เป็นโปรแกรมย่อยที่แยกต่างหากหลีกเลี่ยงรหัสที่ซับซ้อนและปัญหาด้านความปลอดภัย สภาพแวดล้อมเดสก์ทอปที่ซับซ้อนมอบการทำงานอย่างหนักให้กับแต่ละโปรแกรม
fork()
. โปรแกรมใหม่เริ่มต้นโดยโปรแกรมที่มีอยู่ในการโคลนตัวเอง โคลนตั้งค่าทุกอย่าง (เช่นจัดการไฟล์) และเลือกแทนที่ตัวเองด้วยรหัสโปรแกรมใหม่ สิ่งนี้ทำให้ง่ายต่อการใช้การตั้งค่าความปลอดภัยและข้อ จำกัด เดียวกันกับโปรแกรมใหม่แชร์หน่วยความจำหรือตั้งค่ากลไก IPC ต้นทุนในการเริ่มต้นกระบวนการยังต่ำมาก
ระบบไฟล์เป็นหนึ่งทรีซึ่งพาร์ติชันดิสก์อื่นและเครือข่ายแชร์สามารถติดตั้งได้ มีอีกวิธีการเข้าถึงข้อมูลที่เป็นสากล ตำแหน่งระบบทั่วไป (เช่น/usr
สามารถติดตั้งได้อย่างง่ายดายในฐานะเครือข่ายที่ใช้ร่วมกัน
ระบบถูกสร้างขึ้นเพื่อสิทธิพิเศษของผู้ใช้น้อย หลังจากเข้าสู่ระบบผู้ใช้ทุกคน (ยกเว้นรูท) จะถูก จำกัด ทรัพยากรของตัวเองเรียกใช้แอปพลิเคชันและไฟล์เท่านั้น บริการเครือข่ายลดสิทธิ์ของพวกเขาโดยเร็วที่สุด มีวิธีที่ชัดเจนเพียงวิธีเดียวในการรับสิทธิ์เพิ่มเติมหรือขอให้บางคนทำงานที่ได้รับสิทธิพิเศษแทนพวกเขา การโทรอื่น ๆ จะถูก จำกัด โดยข้อ จำกัด และข้อ จำกัด ของโปรแกรม
ทุกโปรแกรมจัดเก็บการตั้งค่าในไฟล์ / โฟลเดอร์ที่ซ่อนของโฮมไดเรกทอรีผู้ใช้ ไม่มีโปรแกรมใดพยายามเขียนไฟล์การตั้งค่าส่วนกลาง
ความโปรดปรานต่อกลไกการสื่อสารที่อธิบายอย่างเปิดเผยเกี่ยวกับกลไกลับหรือกลไก 1 ต่อ 1 ที่เฉพาะเจาะจง ผู้ค้ารายอื่นและนักพัฒนาซอฟต์แวร์ได้รับการสนับสนุนให้ปฏิบัติตามข้อกำหนดเดียวกันดังนั้นสิ่งต่าง ๆ สามารถเชื่อมต่อแลกเปลี่ยนและยังอยู่คู่กันอย่างหลวม ๆ ได้อย่างง่ายดาย
UNIX เป็นระบบปฏิบัติการที่แข็งแกร่งสร้างบนการออกแบบเสียงที่พิสูจน์แล้วว่าประสบความสำเร็จมานานกว่า 40 ปี (ซึ่งเกือบตลอดกาลในสาขาวิทยาศาสตร์คอมพิวเตอร์) เทคโนโลยีกลางขึ้นอยู่กับภาษา C และโปรแกรมขนาดเล็กมากมาย: คำสั่ง UNIX ปรัชญาพื้นฐานได้รับการสรุปโดย McIlroy:
เขียนโปรแกรมที่ทำสิ่งหนึ่งและทำได้ดี เขียนโปรแกรมเพื่อทำงานร่วมกัน เขียนโปรแกรมเพื่อจัดการสตรีมข้อความเนื่องจากเป็นอินเตอร์เฟสสากล
ข้อมูลเพิ่มเติมเกี่ยวกับปรัชญา UNIX สามารถพบได้ใน ESRaymond "The Art of UNIX Programming"
มีคำตอบที่ยอดเยี่ยมอยู่ที่นี่ อย่างไรก็ตามสิ่งหนึ่งที่ฉันคิดว่าถูกทิ้งไว้คือ * แตกต่างจากระบบปฏิบัติการอื่นโดยเฉพาะอย่างยิ่ง Microsoft Windows
แนวคิดพื้นฐานที่กล่าวมาแล้วข้างต้น "ทำสิ่งหนึ่งสิ่งที่ทำได้ดี" เป็นศูนย์กลางของระบบปฏิบัติการ * ระวังซึ่งบางครั้งมันอาจถูกมองข้าม แต่เป็นปรัชญาการออกแบบที่ทำให้ Linux มีความยืดหยุ่นและทรงพลัง
ตัวอย่างเช่นส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI) สำหรับ MS Windows นั้นเชื่อมโยงกันในระบบปฏิบัติการ แทบเป็นไปไม่ได้เลยที่จะติดตั้งระบบปฏิบัติการ MS โดยไม่ต้องใช้ GUI ใน Linux คุณสามารถนำเซิร์ฟเวอร์หรือระบบสมองกลฝังตัวที่ไม่มีส่วนประกอบกราฟิกได้เลย มันสามารถขับเคลื่อนบรรทัดคำสั่งทั้งหมดและยังคงเป็นเซิร์ฟเวอร์ที่โดดเด่นเต็มรูปแบบ
การออกแบบแบบแยกส่วนของ Linux ยังช่วยให้ผู้ดูแลระบบสามารถนำบริการมาอัพเกรดและนำกลับมาสำรองได้โดยไม่ต้องรีบูตระบบปฏิบัติการ ในความเป็นจริงเกี่ยวกับเวลาเดียวที่คุณต้องรีบูตระบบปฏิบัติการ Linux คือเมื่อเคอร์เนลเองจะถูกปรับเปลี่ยนหรืออัพเกรด
ตัวอย่างเช่นคุณสามารถติดตั้งตัวจัดการ windows ใหม่ (gnome, kde หรืออะไรก็ได้) บน Linux และผู้ใช้ที่เข้าสู่ระบบในปัจจุบันอาจไม่เคยรู้มาก่อน
บน Windows บ่อยครั้งการเปลี่ยนแปลงที่ง่ายที่สุดในระบบจำเป็นต้องมีการรีบูตแม้ว่าบางครั้งนี่จะเป็นปัญหาด้านความปลอดภัยมากกว่าข้อกำหนดทางเทคนิคที่เกิดขึ้นจริง ฉันขอเสนอว่านี่เป็นหนึ่งในข้อบกพร่องพื้นฐานของระบบปฏิบัติการ MS บน Linux คุณสามารถอัพเกรดโมดูลไดรเวอร์จำนวนมากและส่งผลกระทบเล็กน้อยต่อผู้ใช้ บน Windows คุณอาจต้องรีบูตทั้งช่องหากคุณเพียงติดตั้งแอปพลิเคชั่นใหม่
การออกแบบแบบแยกส่วนนี้ยังให้ความยืดหยุ่นเป็นพิเศษแก่ Linux ระบบลีนุกซ์แต่ละระบบสามารถปรับให้เหมาะกับงานเฉพาะที่คุณต้องทำให้สำเร็จโดยใช้ทรัพยากรให้น้อยที่สุดเท่าที่จะทำได้ สำหรับ Windows คุณไม่สามารถปิดส่วนต่อประสาน GUI เพื่อเรียกใช้เซิร์ฟเวอร์ HTTP อย่างง่าย มี footprint หน่วยความจำที่ Windows สันนิษฐานว่าสร้างอุปสรรคด้านล่างซึ่งฮาร์ดแวร์ของคุณไม่สามารถไปได้ นี่เป็นเหตุผลหลักที่ลีนุกซ์กลายเป็นระบบปฏิบัติการที่เป็นทางเลือกสำหรับแอพพลิเคชั่นมือถือและเอ็มเบ็ดเด็ด
ฉันสามารถไปต่อได้ แต่ฉันหวังว่าตัวอย่างเหล่านี้จะช่วยอธิบายว่าทำไม Linux จึงเป็นที่นิยมมากและแตกต่างจากระบบปฏิบัติการอื่น ๆ อย่างไร
"การออกแบบระบบปฏิบัติการ UNIX"จะเป็นหนังสือที่ดีในการอ่าน
ฉันอยากจะแนะนำให้อ่านการเขียนโปรแกรมขั้นสูงใน Unix Environment 2eเพื่อเรียนรู้มากมายเกี่ยวกับ Single Unix Standard (SUS) API และ POSIX ซึ่งจะทำให้คุณมีความคิดเกี่ยวกับสิ่งที่ทำให้ Unix Unix และองค์ประกอบทำงานอย่างไรและทำงานร่วมกัน
อย่างไรก็ตามมันเป็นหนังสือที่หนักมาก C และคู่มืออ้างอิงเพิ่มเติม หากคุณมีปัญหาเกี่ยวกับการนอนไม่หลับเพียงแค่เอามันไปนอนกับคุณ นอกจากนี้หากคุณเป็นโปรแกรมเมอร์ Unix C มันจะต้องมี
ด้วยจิตวิญญาณของหนังสือสองเล่มก่อนหน้านี้ฉันขอแนะนำด้วย
อินเตอร์เฟสการเขียนโปรแกรม LINUXโดย M. Kerrisk
ซึ่งแม้ว่าการกำหนดเป้าหมายหัวข้อของการเขียนโปรแกรมระบบ UNIX / Linux จะเปิดเผยข้อมูลโดยละเอียดมากมายเกี่ยวกับการทำงานของ Linux และระบบ UNIX โดยทั่วไปจากมุมมองของโปรแกรมเมอร์ / ผู้ใช้ มันเจาะลึกรายละเอียดลงในกระสุนส่วนใหญ่ที่กล่าวถึงในคำตอบของ vdboor และเปิดเผยรายละเอียดที่เพียงพอในลักษณะที่เข้าใจและอ่านได้เพื่อให้ได้ความรู้สึก / ภาพของแนวคิดพื้นฐานของ UNIX และการสนับสนุนของพวกเขา