30 ก.ย. เวลา 01:39 • วิทยาศาสตร์ & เทคโนโลยี

ลินุกซ์และยูนิกซ์: รากฐานเดียวกันของโลกโอเพนซอร์ส

เมื่อพูดถึง “ลินุกซ์” (Linux) ระบบปฏิบัติการที่นักพัฒนาและองค์กรทั่วโลกนิยมใช้กันอย่างกว้างขวาง หลายคนอาจไม่รู้ว่าแท้จริงแล้วลินุกซ์มีรากเหง้ามาจาก “ยูนิกซ์” (UNIX) ระบบปฏิบัติการระดับตำนานที่ถือเป็นจุดเปลี่ยนของวงการคอมพิวเตอร์ การทำความเข้าใจยูนิกซ์จึงเป็นกุญแจสำคัญที่จะช่วยให้เราเข้าใจลินุกซ์ได้ลึกซึ้งยิ่งขึ้น
แม้ลินุกซ์จะไม่ใช่ยูนิกซ์โดยตรง แต่ก็ถือว่าอยู่ในตระกูลเดียวกัน เพราะสามารถทำสิ่งเดียวกันได้แทบทั้งหมด ไม่ว่าจะเป็นคำสั่ง (command) หรือซิสเต็มคอลล์ (system call) ที่ใช้ติดต่อกับเคอร์เนลก็มีรูปแบบใกล้เคียงกัน สิ่งที่ทำให้ลินุกซ์แตกต่างอย่างสำคัญคือมันเป็น ซอฟต์แวร์เสรี ที่เปิดเผยรหัสต้นฉบับให้ทุกคนศึกษา ปรับแต่ง และแจกจ่ายได้ โดยไม่ได้คัดลอกซอร์สโค้ดของยูนิกซ์ต้นฉบับมาใช้
หลายคนอาจสงสัยว่า เหตุใดลินุกซ์จึงเลือกสร้างระบบให้คล้ายยูนิกซ์ ทั้งที่มีระบบปฏิบัติการอื่นให้เลียนแบบมากมาย คำตอบอยู่ที่ ปรัชญาของยูนิกซ์ (UNIX Philosophy) ที่เรียบง่ายแต่ทรงพลัง — “สร้างระบบที่ไม่ใหญ่เกินไป ทำเฉพาะสิ่งที่จำเป็น และให้โปรแกรมต่าง ๆ ส่งต่อผลลัพธ์ให้กันได้” ปรัชญานี้คือหัวใจของความยืดหยุ่นและประสิทธิภาพที่ลินุกซ์สืบทอดมาโดยตรง
จุดเริ่มต้นของยูนิกซ์
ย้อนกลับไปในยุคแรก ๆ ของคอมพิวเตอร์ เครื่องคอมพิวเตอร์มีขนาดใหญ่เท่าตู้เสื้อผ้า ใช้งานได้ทีละคน และทำได้เพียงงานเดียว ผู้ใช้ต้องป้อนโปรแกรมผ่านเทปหรือการ์ดเจาะรู (punch card) แล้วรอผลลัพธ์กลับมา ปัญหาก็เกิดขึ้นเมื่อมีหลายคนต้องการใช้งาน หรือเมื่อค่าใช้จ่ายในการใช้งานสูงจนไม่คุ้มค่า
เพื่อแก้ไขข้อจำกัดเหล่านี้ นักวิจัยจาก MIT, Bell Telephone Laboratories (BTL) และ General Electric (GE) จึงเริ่มพัฒนาโครงการระบบปฏิบัติการแบบแบ่งเวลาชื่อ “MULTICS” ในปี ค.ศ. 1965 อย่างไรก็ตาม ในปี 1969 BTL ถอนตัวจากโครงการ ทีมงานบางส่วนอย่าง Ken Thompson และ Dennis Ritchie จึงตัดสินใจสร้างระบบปฏิบัติการของตนเองขึ้นมา
แม้ในตอนนั้นเครื่องคอมพิวเตอร์มีราคาสูงจนยากจะหามาทดลองใช้งาน แต่ Thompson และทีมก็เริ่มออกแบบระบบไฟล์ในเชิงทฤษฎี และสร้างเกมชื่อ “Space Travel” ขึ้นมาในเวลาว่าง เกมนี้พัฒนาต่อบนเครื่อง PDP-7 ซึ่งไม่ค่อยมีใครใช้งาน และนั่นเองคือจุดเริ่มต้นของระบบปฏิบัติการใหม่ที่พวกเขากำลังสร้าง
พวกเขาเริ่มพัฒนาเครื่องมือพื้นฐาน เช่น คำสั่ง copy, print, delete, ตัวแก้ไขข้อความ (editor) และ shell โดยย้ายโปรแกรมจากระบบอื่นมารันบน PDP-7 จนกระทั่งสร้างระบบที่สามารถทำงานได้ด้วยตัวเองโดยไม่ต้องพึ่งพาเครื่องอื่น ในปี 1970 Brian Kernighan ได้ตั้งชื่อระบบใหม่นี้ว่า “UNICS” เพื่อเปรียบเทียบกับ MULTICS ก่อนจะเปลี่ยนชื่อเป็น UNIX ซึ่งกลายเป็นชื่อที่โลกจดจำมาจนถึงทุกวันนี้
ยูนิกซ์เวอร์ชันแรกถูกใช้ภายในแผนกสิทธิบัตรของ BTL สำหรับงานประมวลข้อความ เมื่อผู้ใช้เพิ่มขึ้น BTL จึงลงทุนซื้อเครื่อง PDP-11 และพอยูนิกซ์ถูกพอร์ตให้ใช้งานบนเครื่องนี้ได้สำเร็จ ก็ถือเป็นการเปิดตัว UNIX First Edition อย่างเป็นทางการ
จากภาษาแอสเซมบลีสู่ภาษา C
ยูนิกซ์ยุคแรกถูกเขียนด้วยภาษาแอสเซมบลี ซึ่งผูกติดกับสถาปัตยกรรมของฮาร์ดแวร์ ทำให้ย้ายระบบไปยังเครื่องอื่นได้ยาก Ken Thompson พยายามเขียนระบบด้วยภาษา Fortran แต่ไม่ประสบความสำเร็จ เขาจึงพัฒนาภาษาใหม่ชื่อ “B” ขึ้นมา แต่ก็ยังมีข้อจำกัดหลายอย่าง
Dennis Ritchie จึงต่อยอดภาษา B เป็นภาษา C และในปี ค.ศ. 1973 พวกเขาได้เขียนยูนิกซ์ขึ้นมาใหม่ทั้งหมดด้วยภาษา C นี่คือจุดเปลี่ยนสำคัญของวงการคอมพิวเตอร์ เพราะทำให้ยูนิกซ์สามารถย้ายไปทำงานบนเครื่องรุ่นต่าง ๆ ได้ง่ายขึ้น ถือเป็นครั้งแรกที่ระบบปฏิบัติการใหญ่ถูกเขียนด้วยภาษาระดับสูง และจากนั้นยูนิกซ์ก็แพร่หลายไปยังเครื่องอื่น ๆ เช่น Interdata 7/32 และ VAX
ยุคของ BSD และการขยายตัวของยูนิกซ์
ช่วงปลายทศวรรษ 1970 ยูนิกซ์เริ่มเข้าสู่วงการการศึกษา เมื่อ Thompson ได้รับเชิญให้ไปสอนที่มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ (UC Berkeley) ที่นั่นนักศึกษากลุ่มหนึ่งนำโดย Bill Joy ได้พัฒนาระบบต่อยอดจนเกิดเป็น Berkeley Software Distribution (BSD) ในปี ค.ศ. 1978
BSD เพิ่มความสามารถใหม่ ๆ เช่น csh shell ที่รองรับ job control และ history รวมถึงตัวแก้ไขข้อความ vi ที่เรายังใช้กันมาจนถึงทุกวันนี้ อีกทั้งยังได้รับการสนับสนุนจากโครงการ DARPA ของกระทรวงกลาโหมสหรัฐฯ ทำให้ BSD และยูนิกซ์ในเวลาต่อมารองรับโปรโตคอล TCP/IP กลายเป็นพื้นฐานของอินเทอร์เน็ตในยุคใหม่
UNIX System V และมาตรฐาน POSIX
ในเวลาเดียวกันกับที่ Berkeley เดินหน้าพัฒนา BSD ฝั่ง AT&T ก็พัฒนาเวอร์ชันเชิงพาณิชย์ของยูนิกซ์ขึ้นมา โดยตั้งกลุ่ม UNIX Support Group (USG) และเปิดตัว UNIX System III และต่อมาในปี ค.ศ. 1983 ก็เปิดตัว UNIX System V ซึ่งได้รับการปรับปรุงประสิทธิภาพและกลายเป็นอีกสายหนึ่งของยูนิกซ์ที่ได้รับความนิยม
อย่างไรก็ตาม การที่ยูนิกซ์แยกออกเป็นสองสายใหญ่คือ BSD และ System V ทำให้เกิดปัญหาความเข้ากันได้ (compatibility) โปรแกรมที่พัฒนาสำหรับสายหนึ่งอาจไม่สามารถรันบนอีกสายได้โดยตรง เพื่อแก้ปัญหานี้ สถาบัน IEEE จึงได้กำหนดมาตรฐาน POSIX (Portable Operating System Interface for UNIX) ซึ่งกำหนดองค์ประกอบพื้นฐานที่ระบบยูนิกซ์ทุกตัวต้องมี เช่น ไลบรารีมาตรฐาน, shell, ยูทิลิตี้ และ system call ที่สำคัญ
ลินุกซ์: ผู้สืบทอดอุดมการณ์ยูนิกซ์
ในเวลาต่อมา ลินุกซ์ ก็ถือกำเนิดขึ้นในฐานะระบบปฏิบัติการที่ได้รับแรงบันดาลใจจากยูนิกซ์อย่างเต็มที่ มันสามารถทำงานได้เหมือนยูนิกซ์ แต่ออกแบบให้เป็นซอฟต์แวร์เสรี เปิดเผยซอร์สโค้ด และให้เสรีภาพกับผู้ใช้เต็มที่ ลินุกซ์ประกอบด้วย เคอร์เนล (Kernel) ที่ควบคุมทรัพยากรของระบบ และ โปรแกรมใช้งาน (User Programs) ที่ทำงานบนเคอร์เนล
ซอร์สโค้ดของลินุกซ์เปิดเผยต่อสาธารณะ ทำให้ใครก็สามารถศึกษา แก้ไข และแจกจ่ายได้อย่างเสรี โครงการพัฒนาลินุกซ์ดำเนินไปทั่วโลกผ่านอินเทอร์เน็ต และถึงแม้จะ “ฟรี” แต่ความฟรีในที่นี้หมายถึง “อิสระ” มากกว่าการไม่มีค่าใช้จ่าย
ลินุกซ์ยังสามารถทำงานได้กับอุปกรณ์หลากหลาย ตั้งแต่ซูเปอร์คอมพิวเตอร์ เครื่องเซิร์ฟเวอร์ ไปจนถึงอุปกรณ์ฝังตัว (embedded system) อีกทั้งยังมีดิสทริบิวชัน (distribution) หลากหลายรูปแบบ ที่รวมเคอร์เนลและโปรแกรมต่าง ๆ ไว้ในแพ็กเกจพร้อมติดตั้งใช้งานได้ทันที
บทสรุป
แม้ลินุกซ์และยูนิกซ์จะไม่เหมือนกันทุกประการ แต่ทั้งสองก็มีสายสัมพันธ์ที่แนบแน่น ลินุกซ์ถือกำเนิดขึ้นจากแนวคิดและปรัชญาของยูนิกซ์ และยังคงสานต่ออุดมการณ์แห่ง “ความเรียบง่ายแต่ทรงพลัง” จนกลายเป็นระบบปฏิบัติการที่มีบทบาทสำคัญที่สุดระบบหนึ่งของโลกยุคดิจิทัล
ยูนิกซ์พิสูจน์แล้วว่าระบบปฏิบัติการที่ออกแบบอย่างดีสามารถยืนหยัดและพัฒนาได้ยาวนานกว่าครึ่งศตวรรษ ส่วนลินุกซ์ก็พิสูจน์ให้เห็นแล้วว่าอุดมการณ์แบบโอเพนซอร์สสามารถเปลี่ยนโลกได้จริง
ฝากติดตามซีรีส์การใช้ Linux ขั้นพื้นฐานด้วยนะครับ
ติดตามตอนต่อไปได้ที่ - > https://www.blockdit.com/series/68dc9f8ccfbe2a355b6c87d6

ดูเพิ่มเติมในซีรีส์

โฆษณา