อะไรคือความแตกต่างที่สำคัญระหว่าง BSD และ GNU / Linux userland?


37

ฉันได้อ่าน Unix & Linux เกี่ยวกับ BSD และ GNU เป็นจำนวนมาก แต่ฉันก็ยังไม่เข้าใจว่าความแตกต่างที่เกิดขึ้นจริงในทางปฏิบัติระหว่าง BSD และ GNU คืออะไรแม้ว่าจะมีการกล่าวถึงบ่อยครั้งก็ตาม ใครบางคนสามารถทำอย่างละเอียด?

เมื่อตอบโปรดอธิบายการเชื่อมต่อทางประวัติศาสตร์โดยละเอียดโปรดจำไว้ว่าฉันไม่ได้มีชีวิตอยู่นานพอที่จะมีประสบการณ์เมื่อ GNU / Linux ไม่ใช่ UNIX หลัก (ยกเว้น OS X)


2
ผมโพสต์รายชื่อของความแตกต่างจาก GNU / Linux ใน OS X ในสภาพแวดล้อมบรรทัดคำสั่งที่นี่: reddit.com/r/commandline/comments/4jydnw/...
nisetama

คำตอบ:


27

คำว่า "userland" สามารถอ้างถึงสิ่งต่าง ๆ ในบริบทที่แตกต่างกัน แต่ที่นี่ฉันตีความ "GNU userland" เทียบกับ "BSD userland" เป็นค่าเริ่มต้นชุดขั้นต่ำของโปรแกรมที่มาพร้อมกับการแจกจ่าย

ข้อแตกต่างที่สำคัญคือผู้ใช้สองคนเริ่มต้นด้วยรหัสต้นฉบับที่แตกต่างกันโดยสิ้นเชิง GNU แหล่งแมวรหัส รหัส NetBSD แหล่งแมว เพียงแค่จากโปรแกรมแนวคิดง่ายๆคุณจะเห็นว่า cat ของ NetBSD ใช้แฟล็กบรรทัดคำสั่งแบบอักษรเดี่ยวแบบดั้งเดิม โปรแกรม GNU มีแนวโน้มที่จะมีธงตัวอักษรเดียว แต่ก็มี--something-longตัวเลือกประเภท โปรแกรมของ GNU นั้นมีแนวโน้มที่จะเข้ากันได้กับ POSIX

ความแตกต่างในซอร์สโค้ดจะทำให้ผู้ใช้สองคนมีพฤติกรรมที่แตกต่างกันในบางกรณี

นอกจากนี้ดูเหมือนว่า NetBSD (อย่างน้อย) จะใช้ libc เวอร์ชันมาตรฐานของตัวเอง ฉันเข้ามาอยู่ในหัวของฉันที่นี่ แต่การเชื่อมโยง libc และแบบไดนามิกนั้นมีความเกี่ยวข้องกันอย่างน่าประหลาดใจ อีกครั้งซอร์สโค้ดที่แตกต่างกันจะนำไปสู่พฤติกรรมที่แตกต่าง

ฉันคิดว่าในฐานะผู้ใช้เชลล์คุณจะพบว่าpsมันจะทำงานแตกต่างกันและlsอาจให้ผลลัพธ์ที่แตกต่างออกไปเล็กน้อยกว่าที่คุณคุ้นเคย คุณจะต้องค้นหาการตั้งค่าสถานะบรรทัดคำสั่งที่เทียบเท่าสำหรับบางโปรแกรมถ้าคุณใช้--long-optionชนิดของการตั้งค่าสถานะบรรทัดคำสั่ง

ในอดีตความเข้าใจของฉันคือว่าผู้ใช้ BSD สืบเชื้อสายมาโดยตรงจาก V6 และ V7 Bell Labs Unix ผ่านพอร์ต 32V ไปยังฮาร์ดแวร์ VAX GNU userland เป็นรุ่นใหม่เขียนขึ้นมาอย่างน้อยก็เพื่อตอบสนองต่อความพยายามของ AT&T ในการเก็บรหัสความลับที่ได้รับการปกป้องอย่างใกล้ชิดในช่วงต้นยุค 80 หลังจากการถอนการขายระบบ Bell 1983, AT&T พยายามที่จะ "สร้างรายได้" Unix ส่วนหนึ่งคือการให้สิทธิ์ซอร์สโค้ดในลักษณะที่ทำให้คนส่วนใหญ่ไม่เคยเห็นมาก่อน Richard Stallman และคนอื่น ๆ มีปัญหากับสิ่งนี้ โครงการ GNU ของพวกเขามีอยู่เป็นพิเศษเพื่อสร้างระบบ Unix ที่แชร์ได้อย่างอิสระ

ในระหว่างนั้นในปี 1993 AT&T ได้ฟ้องร้องระบบ University of California ใน BSD ('B' คือ Berkeley ซึ่งเป็นที่ตั้งของ University of California) ผู้คนที่ Berkeley ได้แทนที่แหล่งที่มาดั้งเดิมของ AT & T ทั้งหมดด้วยรหัสใหม่และรหัสใหม่นั้นกลายเป็นบรรพบุรุษของผู้ใช้ NetBSD อย่างน้อยที่สุด AT&T และ UCB มาถึงการตั้งถิ่นฐานในปี 1994 เปิดเผยต่อสาธารณชนในปี 2004

ตามธรรมชาติแล้วอย่างน้อยความคิดจะผสมข้ามกันดังนั้นอย่างน้อยก็มีความคล้ายคลึงกันทางแนวคิดระหว่าง GNU และ BSD userland แต่กรณีมุมแตกต่างกันอย่างแน่นอน


1
ลิงก์ทั้งสองของคุณชี้ไปที่ตำแหน่งเดียว

ดังนั้นมันจึงมีแนวโน้มที่จะเป็นการใช้งานเชลล์ในทางปฏิบัติ? ธงยาวและมุมกรณี?
strugee

12
ประสบการณ์ของฉันก็คือ GNU ให้ความสำคัญกับการปรับขนาดได้อย่างจริงจังมากขึ้น อาจจะนับว่าเป็น "กรณีมุม" เช่นกัน แต่ก็น่าผิดหวังอย่างมากเมื่อคุณsedฉายบนสายอินพุตที่ยาวหรือgrepsegfaults ของคุณในข้อมูลไบนารี
tripleee

ความแตกต่างที่สำคัญอย่างหนึ่งคือ GNU ไม่เคยมีเคอร์เนลของตัวเองในขณะที่ BSD ใช้และสร้างเคอร์เนลของตัวเองซึ่งในบางส่วนนั้นถูกใช้อย่างกว้างขวางในระบบยูนิกซ์เชิงพาณิชย์ MAC OS X ใช้ดาร์วินเป็นเคอร์เนลที่ใช้ BSK ตัวอย่างเช่น
สร้างภาพข้อมูล

@visualication มี GNU HURD แต่ยังไม่ออก
Dmitry Kudriavtsev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.