ทำไม Linux ถึงขยายขนาดได้ดีกับแพลตฟอร์มฮาร์ดแวร์ที่แตกต่างกัน?


22

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


7
ฉันคิดว่าคุณมีคำตอบอยู่แล้วส่วนหนึ่ง - การเปิดกว้างทำให้มันง่ายสำหรับกลุ่มคนหรือธุรกิจต่าง ๆ ที่จะปรับให้เข้ากับความต้องการของพวกเขา เนื่องจากเคอร์เนลถูกวิพากษ์วิจารณ์อย่างเด่นชัดว่าเป็นเสาหินฉันไม่แน่ใจว่าการออกแบบเริ่มต้นนั้นได้รับการปรับให้เหมาะสมสำหรับความสามารถในการปรับขยายในทางใดทางหนึ่ง ฉันเดาว่าคนจำนวนมากทำงานบน core ของ Linux มากกว่าในระบบปฏิบัติการอื่น - และบางทีนี่อาจบังคับให้ผู้ดูแลระบบหลักดูแลในการแบ่งรหัสออกเป็นชิ้น ๆ ด้วยอินเตอร์เฟสที่ชัดเจน? ในทางกลับกันตัวแปรบางส่วนของ BSD มีความสามารถในการพกพาเป็นเป้าหมายที่ชัดเจน
RedGrittyBrick

@ แดง: มันถูกวิพากษ์วิจารณ์ว่าเป็นเคอร์เนลเสาหินแทนที่จะเป็นไมโครเคอร์เนล - มันไม่ได้เกี่ยวข้องกับการออกแบบของมัน มันเกี่ยวข้องกับจำนวนของเคอร์เนลที่รันใน userspace และจำนวนการรันใน kernelspace เคอร์เนลของ Windows NT (ตัวอย่าง) เป็นแบบแยกส่วนมาก แต่ก็ยังคงเป็นเสาหินทางเทคนิคเพราะส่วนใหญ่บริการ (เช่นระบบไฟล์) ทำงานในโหมดเคอร์เนลมากกว่าโหมดผู้ใช้
Billy ONeal

@Billy: Windows NT เป็นเทคนิคเคอร์เนลแบบลูกผสม ฉันเชื่อว่า Microsoft ยังคงรักษาระบบย่อยโดยใช้การส่งข้อความและรักษาความสามารถในการเคลื่อนย้ายชิ้นส่วนไปยังพื้นที่ผู้ใช้ตามที่ต้องการ พวกเขาทำสิ่งนี้กับระบบกราฟิกใน Vista: ตอนนี้อยู่ในพื้นที่ผู้ใช้หลังจากที่ได้ใช้เคอร์เนลตั้งแต่ NT 4.0
Zan Lynx

2
@Zan: ผมก็รู้สึกว่าสถานะเป็น "ไฮบริดเคอร์เนล" แน่นอน ดังนั้นฉันจึงพูดว่า "เสาหิน" NT มีคุณสมบัติแบบเสาหินจำนวนมากแม้ว่ามันจะแยกออกเป็นชิ้นส่วนห้องสมุด
Billy ONeal

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

คำตอบ:


31

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

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

จากการสัมภาษณ์เมื่อหลายปีก่อน :

ถาม: Linux เป็นระบบอเนกประสงค์ มันให้พีซี, เซิร์ฟเวอร์ขนาดใหญ่, โทรศัพท์มือถือและสิบหรืออุปกรณ์อื่น ๆ จากตำแหน่งที่มีอภิสิทธิ์ของคุณภาคใดจะเป็นส่วนที่ Linux จะแสดงศักยภาพสูงสุด?

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


18
และระบบขนาดเล็กและคำจำกัดความของระบบที่มีขนาดใหญ่ยังคงมีการเปลี่ยนแปลงอยู่ตลอดเวลาดังนั้นจึงเป็นสิ่งที่หลีกเลี่ยง kludges ที่ดี โทรศัพท์สมาร์ทมัลติคอร์สามารถได้รับประโยชน์จากงานซุปเปอร์คอมพิวเตอร์ทุกอย่างที่ทำเมื่อหลายปีก่อน
Zan Lynx

4

Linux ปรับขนาดฮาร์ดแวร์ประเภทต่างๆเนื่องจาก:

  • มันกำหนดค่าได้มาก
  • แหล่งที่มาใช้ได้อย่างอิสระและสามารถสร้างขึ้นสำหรับ CPU ใด ๆ ที่มีคอมไพเลอร์ C ที่มีอยู่
  • โปรเซสเซอร์ในอุปกรณ์ฝังตัวและโทรศัพท์มือถือมีพลังงานอย่างน้อยระดับเดียวกันหรือมากกว่าเมื่อเทียบกับเครื่องดั้งเดิม 386 เครื่องก่อนการพัฒนาลีนุกซ์ได้ดำเนินการและยังคงได้รับพลังงาน
  • มันใช้งานได้ดีโดยไม่มีอะไรนอกจากเครือข่ายรูปแบบของดิสก์หรืออุปกรณ์ที่คล้ายดิสก์และพอร์ตอนุกรม

มีใครบางคนจะต้องเขียนรหัส bootstrap และ C runtime จำนวนน้อยที่สุดสำหรับแพลตฟอร์มเป้าหมาย โอ้และมันก็ต้องรองรับหน่วยความจำเสมือน แต่เป็นอย่างนั้นจริง :)
Billy ONeal

1
@Billy มีพอร์ตสำหรับระบบ nommu: uClinux, uClinux / ARM และ MontaVista Linux
Tobu

@Tobu: อืม .. ฉันไม่เข้าใจว่าเป็นไปได้อย่างไร "Unix Philosophy" ทั้งหมดสำหรับหลาย ๆ กระบวนการมีข้อสันนิษฐานว่าสิ่งที่forkเป็นไปได้และforkไม่สามารถทำได้อย่างมีประสิทธิภาพในระบบหน่วยความจำเสมือน ในขณะที่พอร์ตที่ระบุอาจใช้บางส่วนของเคอร์เนล Linux และสามารถเรียกใช้ซอฟต์แวร์ Linux บางส่วนส่วนใหญ่จะปรากฏว่า APIs ที่เปิดเผยโดยพอร์ตเหล่านี้แตกต่างจากเมล็ด Linux ทั่วไป (ตัวอย่าง: การจับคู่หน่วยความจำ - ซึ่งต้องใช้หน่วยความจำเสมือนอย่างเห็นได้ชัด)
Billy ONeal

linuxjournal.com/article/7814 : กล่าวว่าuCLinuxไม่รองรับ fork () แต่ตัวแปรการบล็อกที่เรียกว่า vfork () แอปพลิเคชันภายใต้ uCLinux จะต้องเขียนใหม่เพื่อใช้ vfork หรือเธรด
LawrenceC

4

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

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

รองรับไดรเวอร์ที่ฝังอยู่ในเคอร์เนลหรือโมดูลที่โหลดได้ สิ่งนี้ทำให้เคอร์เนลสามารถกำหนดค่าแบบไดนามิกกับฮาร์ดแวร์ที่รันอยู่ นี่คือวิธีการที่ใช้โดยการแจกแจงจำนวนมาก

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

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


1

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

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

ยกโทษให้ฉันถ้านั่นทำให้คำถามของคุณง่ายเกินไป


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

@Tshepang: เพื่อความเป็นธรรมคำถามจะถามเกี่ยวกับ "Linux kernel และ / หรือระบบ" Windows 7 และ Windows Phone 7 แชร์เคอร์เนลหรือไม่ เล็ก ๆ น้อย ๆ ที่ฉันได้อ่านบอกว่าเมล็ดของพวกเขาอาจมีรหัสน้อยกว่าเมล็ดของ Ubuntu Server และ Android
RedGrittyBrick

ขอบคุณ แต่คำถามนั้นเกี่ยวกับ Linux จริงๆและไม่ใช่ระบบปฏิบัติการอื่น มีคนอื่นอีกมากมายที่นั่น: en.wikipedia.org/wiki/List_of_operating_systems
Justin Ethier

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