วันเสาร์ที่ 6 กันยายน พ.ศ. 2551

ประวัติความเป็นมาและคุณสมบัติของUnixและlinuk


ความเป็นมาของระบบปฏิบัติการ UNIX
ย้อนหลังไปในช่วงทศวรรษที่ 1940 และ 1950 เครื่องคอมพิวเตอร์ทุกเครื่องที่มีในโลกอาจกล่าวได้ว่าเป็นเครื่องคอมพิวเตอร์ส่วนบุคคล เนื่องจากระบบปฏิบัติการของเครื่องอนุญาตให้ผู้ใช้ใช้งานเครื่องได้เพียงครั้งละคนเดียว ดังนั้นผู้ใช้ที่มีความประสงค์จะใช้เครื่องต้องทำการจองเวลาใช้เครื่องไว้ล่วงหน้า เมื่อถึงเวลาที่จองไว้ผู้ใช้นั้นจะได้เครื่องคอมพิวเตอร์นั้นแต่เพียงผู้เดียวตลอดระยะเวลาที่จองไว้ ผู้ใช้อื่นไม่สามารถใช้งานเครื่องอีกได้ และโดยทั่วไปในระหว่างการใช้งาน ผู้ใช้ไม่ได้ใช้งานหน่วยประมวลผลกลางเต็มกำลัง เพราะอาจต้องหยุดคิดแก้ปัญหา หรือป้อนข้อมูลเข้าเครื่องซึ่งใช้ความสามารถของเครื่องน้อยมาก จึงกล่าวได้ว่าผู้ใช้งานนั้นไม่ได้ใช้เครื่องจนเต็มขีดความสามารถตลอดเวลา เนื่องจากระบบคอมพิวเตอร์ในยุคนั้นมีราคาแพงจึงเกิดแนวความคิดที่จะสร้างระบบปฏิบัติการที่ผู้ใช้สามารถใช้งานเครื่องได้เต็มกำลังตลอดเวลาโดยการให้ผู้ใช้แต่ละคนเตรียมงานไว้ล่วงหน้าโดยใช้บัตรเจาะรู เมื่อมีปริมาณของงานมากถึงระดับหนึ่งจึงจะเดินเครื่องและทำการอ่านงานเหล่านั้นเข้าไปประมวลผลต่อเนื่องกันไป ระบบปฏิบัติการเช่นนี้เรียกว่าระบบการประมวลผลแบบ batch ระบบนี้ช่วยให้ใช้งานเครื่องได้โดยมีประสิทธิภาพมากขึ้นกว่าเดิม แต่อย่างไรก็ดีสำหรับผู้เขียนโปรแกรมแล้วระบบเช่นนี้ยังมีการตอบสนองไม่ดีนัก กล่าวคือเมื่อผู้เขียนโปรแกรมนำโปรแกรมต้นฉบับซึ่งอยู่ในรูปของบัตรเจาะรูไปส่งที่ห้องเครื่อง แล้วต้องรอเป็นระยะหนึ่งกว่าจะทราบผลการดำเนินการ ภายใต้ภาวะการณ์เช่นนี้การตรวจสอบและแก้ไขโปรแกรม (debugging) จึงเป็นกระบวนการที่กินเวลามาก หากผู้เขียนโปรแกรมลืมใส่เครื่องหมายวรรคตอนเพียงตัวเดียวผู้เขียนโปรแกรมต้องใช้เวลานานหลายชั่วโมงกว่าทราบความผิดพลาดนั้นและทำการแก้ไข ทำให้การพัฒนางานล่าช้า ดังนั้นผู้เขียนโปรแกรมโดยทั่วไปจึงต้องการระบบปฏิบัติการที่มีการตอบสนองเร็วเพื่อให้สามารถตรวจสอบแก้ไขโปรแกรมได้ดียิ่งขึ้น
จากความต้องการดังกล่าวนี้เองจึงมีการคิดระบบปฏิบัติการแบบ timesharing ซึ่งช่วยให้ผู้ใช้หลายคนสามารถใช้เครื่องในเวลาเดียวกันได้ โดยอาศัยการแบ่งเวลาของหน่วยประมวลผลกลางให้แก่ผู้ใช้เวียนกันไป ระบบ timesharing ที่ประสบความสำเร็จเกิดขึ้นที่ Dartmouth College และที่ Massachusetts Institute of Technology (M.I.T.) โดยระบบของ Dartmouth College เป็นระบบปฏิบัติการที่ใช้สนับสนุนการเขียนโปรแกรมด้วยภาษา BASIC เพียงอย่างเดียวและประสบความสำเร็จในการใช้งานทางธุรกิจในระยะหนึ่ง ส่วนระบบปฏิบัติการของ M.I.T. มีชื่อเรียกว่าระบบ CTSS เป็นระบบที่ได้รับการออกแบบเพื่อให้เป็นระบบปฏิบัติการเอนกประสงค์ และประสบความสำเร็จสูงกว่าโดยเฉพาะในกลุ่มนักวิทยาศาสตร์ หลังจากระบบ CTSS ประสบความสำเร็จแล้วไม่นาน M.I.T., Bell Labs และบริษัท General Electric ซึ่งเป็นบริษัทผู้ผลิตคอมพิวเตอร์ ได้ร่วมกลุ่มกัน เพื่อทำการวิจัยและออกแบบระบบปฏิบัติการแบบ timesharing ใหม่ให้มีความสามารถมากขึ้น และกำหนดชื่อระบบปฏิบัติใหม่เป็น MULTICS (MULTiplexed Information and Computing Service)
ระบบปฏิบัติการ MULTICS ไม่ทำงานตามที่คณะผู้ทำงานหวังไว้ เนื่องจากระบบได้รับการออกแบบให้สามารถรองรับผู้ใช้ได้หลายร้อยคนบนเครื่องคอมพิวเตอร์ที่มีหน่วยประมวลผลกลางซึ่งมีความสามารถสูงกว่า หน่วยประมวลผลกลางแบบ 80286 ในปัจจุบันเพียงเล็กน้อย อย่างไรก็ดีแนวความคิดดังกล่าวนี้เป็นเรื่องที่เป็นไปได้ในยุคนั้นเนื่องจากเป็นระยะเริ่มต้นของการใช้คอมพิวเตอร์ โปรแกรมที่เขียนขึ้นใช้งานส่วนใหญ่เป็นโปรแกรมขนาดเล็ก สาเหตุที่แท้จริงของความล้มเหลวของโครงการนี้มีมากมายเช่นในการออกแบบระบบกำหนดให้มีการใช้ภาษาระดับสูงคือภาษา PL/I ซึ่งเป็นภาษาที่อยู่ระหว่างการพัฒนาและมีการพัฒนาล่าช้ากว่ากำหนดการที่กำหนดไว้มากและมีข้อบกพร่องมากมาย นอกจากนี้แล้วยังมีการนำความคิดที่ล้ำสมัยหลายอย่างมาใช้ในขณะที่เทคโนโลยียังไม่พร้อม ปัจจัยเหล่านี้ส่งผลให้โครงการนี้ไม่ประสบความสำเร็จเช่นเดียวกับการพัฒนางานของ Charles Babbage ในสมัยศตวรรษที่ 19
เมื่อสิ้นระยะแรกของโครงการ ห้องปฏิบัติการ Bell ถอนตัวออกจากโครงการ ทำให้นักวิจัยคนหนึ่งในโครงการนี้คือ Ken Thompson ซึ่งว่างงานอยู่เริ่มหาแนวทางในการทำวิจัยต่อไป ในที่สุดตัดสินใจที่จะทำการเขียนระบบปฏิบัติการ MULTICS แบบย่อส่วนขึ้นโดยใช้ภาษา Assembly โดยใช้เครื่องมินิคอมพิวเตอร์รุ่น PDP-7 ซึ่งว่างอยู่ในขณะนั้น ระบบปฏิบัติการของ Thompson สามารถทำงานได้เป็นอย่างดี ระบบปฏิบัติการนี้นักวิจัยอีกคนหนึ่งของห้องปฏิบัติการ Bell คือ Brian Kernighan ตั้งชื่อให้ว่า UNICS หรือ Uniplexed Information and Computing Service เพื่อเป็นการล้อเลียนโครงการ MULTICS และต่อมาได้รับการเปลี่ยนชื่อเป็น UNIX



คุณสมบัติของระบบUNIX
Softwere tool
- โปรแกรมบนUNIX จะแบ่งตัวเองออกเป็นส่วนย่อยๆและสามารถใช้งานส่วนย่อยเหล่านั้นร่วมกัน ระหว่างหลายๆโปรแกรมได้
portability
- เนื่องจาก UNIX สามารถนำไปใช้กับเครื่องแบบต่างๆได้มากมาย โปรแกรมที่ใช้งานบนUNIXจะสามารถนำไปใช้ได้ด้วยเช่นเดียวกัน
flexibility
- UNIX จะมีความยืดหยุ่นในการใช้งานสูง สามารถนำไปใช้งานกับงานเล็กๆหรืองานใหญ่ๆก็ได้
power
- สามารถทำงานที่ซับซ้อนได้ดี และมีความสามารถในด้านต่างๆมากกว่าระบบปฏิบัติการอื่นๆ
multi – user & multitasking
- สามารถมีผู้ใช้งานได้ทีละหลายๆคน และทำงานหลายๆอย่างพร้อมกัน
Elegance
- หลักการทำงานของส่วนต่างๆจะเหมือนกันดังนั้นเมื่อผู้ใช้ทำงานส่วนหนึ่งได้ ก็จะเรียนรู้และใช้งานส่วนอื่นๆได้ง่าย
network orientation
- UNIXเป็นระบบปฏิบัติการที่สนับสนุนการใช้งานเครือข่ายโดยเฉพาะเครือข่าย TCP/IP ซึ่งใช้ในระบบ Internet




ประวัติของ Linux

ลีนุกซ์ถือกำเนิดขึ้นในฟินแลนด์ ปี คศ. 1980 โดยลีนุส โทรวัลด์ส (Linus Trovalds)
นักศึกษาภาควิชาวิทยาการคอมพิวเตอร์ (Computer Science) ในมหาวิทยาลัยเฮลซิงกิ

ลีนุส เห็นว่าระบบมินิกซ์ (Minix) ที่เป็นระบบยูนิกซ์บนพีซีในขณะนั้น ซึ่งทำการพัฒนา
โดย ศ.แอนดรูว์ ทาเนนบาวม์ (Andrew S. Tanenbaum) ยังมีความสามารถไม่เพียงพอ
แก่ความต้องการ จึงได้เริ่มต้นทำการพัฒนาระบบยูนิกซ์ของตนเองขึ้นมา โดยจุด
ประสงค์อีกประการ

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

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

ปัจจุบันเวอร์ชันล่าสุดของระบบลีนุกซ์ที่ได้ประกาศออกมาคือเวอร์ชัน 2.0.13
ข้อสังเกตในเรื่องเลขรหัสเวอร์ชันนี้ก็คือ ถ้ารหัสเวอร์ชันหลังทศนิยมตัวแรก
เป็นเลขคู่เช่น 1.0.x,1.2.x เวอร์ชันเหล่านี้จะถือว่าเป็นเวอร์ชันที่เสถียรแล้วและ
มีความมั่นคงในระดับหนึ่ง แต่ถ้าเป็นเลขคี่เช่น 1.1.x, 1.3.x จะถือว่าเป็น
เวอร์ชันทดสอบ ซึ่งในเวอร์ชันเหล่านี้จะมีการเพิ่มเติมความสามารถใหม่ๆลงไป
และยังต้องทำการทดสอบหาข้อผิดพลาดต่างๆอยู่


คุณสมบัติของระบบปฏิบัติการลีนุกซ์ - Linux

มัลติทาสกิ้ง (Multi-tasking) คือ ทำงานหลายๆ อย่างพร้อมกันได้ในเวลาเดียวกัน ทำให้ไม่ต้องเสียเวลาในการรอ โดยแบ่งการทำงานออกเป็น Foreground และ Background

มัลติยูสเซอร์ (Multi-user) Unix สามารถรองรับผู้ใช้ได้มากกว่า 1 คนในเวลาเดียวกันหรือพูดง่ายๆ ก็คือ ใช้งานได้หลายคนพร้อมกันนั่นเอง

ป็นระบบปฏิบัติการแบบหลายงาน และหลายผู้ใช้ (Multitasking & Multiuser) ที่สมบูรณ์แบบ ทำให้สามารถมีผู้ใช้งานพร้อมๆ กัน ได้หลายๆ คน และแต่ละคนก็
สามารถรันโปรแกรมได้หลายๆ โปรแกรมพร้อมๆ กัน

มีความเข้ากันได้ (Compatible) กับระบบ UNIX ส่วนมากในระดับ Source Code
ความสามารถในการสลับหน้าจอระหว่าง Login sessions ต่างๆ บนหน้าจอคอนโซล
ในเท็กซ์โหมดได้ (Pseudo Terminal, Virtual Console)

สนับสนุนระบบไฟล์หลายชนิด เช่น Minix-1, Xenix, ISO-9660, NCPFS,
SMBFS, FAT16, FAT32, NTFS, UFS เป็นต้น

สนับสนุนเครือข่าย TCP/IP ตลอดจนมีโปรแกรมไคลเอ็นต์ และเซิร์ฟเวอร์
สำหรับบริการต่างๆ ในอินเทอร์เน็ตทุกประเภท ไม่ว่าจะเป็น FTP, Telnet, NNTP,
SMTP, Gopher, WWW

Kernal ของ Linux มีความสามารถในการจำลองการทำงานของ
Math Processor 80387 ทำให้สามารถรันโปรแกรม ที่ต้องการใช้งานคำสั่ง
เกี่ยวกับ floating-point ได้

Kernal ของ Linux สนับสนุน Demand-Paged loaded executable คือ
ระบบจะเรียกใช้โปรแกรม เท่าที่จะใช้งานเท่านั้น จากดิสก์สู่หน่วยความจำ
เป็นการใช้หน่วยความจำอย่างมีประสิทธิภาพ และมีการใช้หน่วยความจำ
ส่วนเดียว กับขบวนการหลายๆ ขบวนการพร้อมๆ กัน (Shared copy-on-write pages

สนับสนุน swap space มากถึง 2 GB ทำให้มีหน่วยความจำใช้งานมากขึ้น
จึงรัน Application ขนาดใหญ่ได้ และมีผู้ใช้งานได้พร้อมกันมากขึ้น

Kernal มีระบบ Unified Memory Pool สำหรับโปรแกรมและ Cache
ทำให้ Cache ปรับเพิ่ม-ลดขนาดได้โดยอัตโนมัติ ขณะที่มีการเรียกใช้
หรือไม่ใช้โปรแกรมใดๆ

โปรแกรมที่รันมีการใช้งาน Library ร่าวมกัน (Dynamically
Linked Shared Libraries) ทำให้โปรแกรมมีขนาดเล็ก และทำงานเร็ว

สนับสนุนการดีบัก (Debug) โปรแกรม และหาสาเหตุที่ทำให้โปรแกรม
ทำงานผิดพลาดได้

จากจุดเด่นนี้ทำให้พบว่าในปัจจุบันเรานิยมใช้ Unix เป็นระบบปฏิบัติการของเครื่อง Internet Server กันมาก



ไม่มีความคิดเห็น: