วันอังคารที่ 21 ตุลาคม พ.ศ. 2551

ตอบคำถามความรู้เบื้องต้นเกี่ยวกับ UNIX

1 ความเป็นมา
ระบบปฏิบัติการยูนิกซ์ (UNIX) ระบบปฏิบัติการ UNIX มีต้นกำเนิดจากห้องปฏิบัติการวิจัย Bell ประเทศสหรัฐอเมริกา โดย Ken Thompson และ Dennis Ritchie ปี พ.ศ. 2512 โดยมีที่มาคร่าวๆ คือ

สถาบัน MIT (Massascusetts Institute of Technology), ห้องปฏิบัติการวิจัย AT&T Bell Labs และบริษัท GE (General Electric) ร่วมกันพัฒนาโครงการ Multics ในปี 1960 เพื่อพัฒนาระบบปฏิบัติการสำหรับ Mainframe Computer รุ่น GE 635 โดยให้ระบบปฏิบัติการนี้มีความสามารถทำงานแบบโต้ตอบ (Interactive) มีระบบอำนวยความสะดวกต่อการใช้แฟ้มและข้อมูล ร่วมกันได้ แต่เกิดปัญหาหลายประการ จนกระทั่ง Bell Labs ได้ลาออกจากโครงการ แต่โครงการก็ยังดำเนินการต่อโดย Ken Thompson และ Dennis Ritchie ซึ่งทำงานกับ Bell Labs พร้อมๆ กันไปด้วย
http://kanokrat.ob.tc/-View.php?N=11

2. คุณสมบัติ
•Software Tool
–โปรแกรมบน UNIX จะแบ่งตัวเองออกเป็นส่วนย่อยๆ และสามารถใช้งานส่วนย่อยเหล่านั้นร่วมกัน ระหว่างหลายๆ โปรแกรมได้
•Portability
–เนื่องจาก UNIX สามารถนำไปใช้กับเครื่องแบบต่างๆ ได้มากมาย โปรแกรมที่ใช้งานบน UNIX จะสามารถนำไปใช้ได้ด้วยเช่นเดียวกัน
•Flexibility
–UNIX มีความยืดหยุ่นในการใช้งานสูง สามารถนำไปใช้กับงานเล็กๆ หรืองานใหญ่ๆ ก็ได้
•Power
–สามารถทำงานที่ซับซ้อนได้ดี และมีความสามารถในด้านต่างๆ มากกว่าระบบปฏิบัติการอื่นๆ
•Multi-user & multitasking
–สามารถมีผู้ใช้งานได้ทีละหลายๆคน และทำงานหลายๆ อย่างพร้อมกัน
•Elegance
–หลักการทำงานของส่วนต่างๆ จะเหมือนกัน ดังนั้นเมื่อผู้ใช้ทำงานส่วนหนึ่งได้ ก็จะเรียนรู้และใช้งานส่วนอื่นๆ ได้ง่าย
•Network Orientation
–UNIX เป็นระบบปฏิบัติการที่สนับสนุนการใช้งานเครือข่าย โดยเฉพาะเครือข่าย TCP/IP ซึ่งใช้ในระบบ Internet
http://www.compsci.buu.ac.th/~jakkaman/C_Programming/week01(18%20June%2001)/Unix.ppt

3. โตรงสร้าง
ระบบปฏิบัติการ Unix สามารถแบ่งโครงสร้างหลัก ๆ ได้ 4 ระดับ แต่ละระดับก็จะทำหน้าที่ต่างกัน

- ฮาร์ดแวร์ หมายถึงอุปกรณ์หรือทุกชิ้นส่วนของคอมพิวเตอร์ ที่เราสามารถจับต้องได้ เช่น จอภาพ คีย์บอร์ด เม้าส์ ดิกส์ไดรซ์ ซีดีรอม เป็นต้น

- ยูนิกซ์ เคอร์เนล เคอร์เนล จะทำหน้าที่ควบคุมการทำงานทั้งหมดของระบบ ได้แก่ การจัดสรรทรัพยากร การจัดการข้อมูลบริการหน่วยความจำ ซึ่งเคอร์เนลนี้จะขึ้นกับฮาร์ดแวร์ เช่น ถ้ามีการเปลี่ยนแปลง ฮาร์ดแวร์ เคอร์เนลนี้ก็จะถูกเปลี่ยนไปด้วย เป็นต้น

- เชลล์ คือ ตัวกลางระหว่างผู้ใช้กับตัวเคอร์เนล ทำหน้าที่รับคำสั่งจากผู้ใช้ แล้วนำไปแปลเป็นภาษาที่เครื่องคอมพิวเตอร์เข้าใจ เราเรียกอีกอย่างหนึ่งได้ว่า command interpreter แต่ถ้ามีการนำ เชลล์หลาย ๆ ตัวมาเขียนรวมกัน (คล้าย ๆ กับ batch file ในระบบปฏิบัติการ DOS) เราจะเรียกว่า เชลล์สคริปต์ นอกจากนี้ เชลล์ (Shell) ยังมีอีกหลาย ๆ ประเภท แต่ที่นิยมกันได้แก่
1. Bourne shell (sh) เป็นเชลล์ต้นแบบของทุก ๆ เชลล์ มีความสามารถในการเขียน เชลล์สคริปต์ได้ด้วย
2. C shell (csh) เป็นเชลล์ที่สร้างหลัง Bourne shell ความสามารถพิเศษของ C shell คือเก็บข้อมูลเกี่ยวกับคำสั่งที่เคยใช้
3. Korn shell (ksh) ซึ่งพัฒนาโดย AT&T โดยได้นำคุณสมบัติเด่น ๆ ของ Bourne shell และ C shell มารวมกัน
4. Bourne again shell (bash) มีคุณสมบัติและความสามารถคล้ายกับ Korn shell แต่ shell นี้ถูกสร้างขึ้นมาใช้สำหรับแจกฟรี ซึ่งเป็นเหตุผลสำคัญที่ทาง Linux นำมาใช้
คำสั่งที่ทำให้ทราบว่าเราใช้งาน เชลล์อะไรอยู่คือ echo $SHELL

- โปรแกรมประยุกต์ หมายถึง โปรแกรมการใช้งานเพิ่มเติมต่าง ๆ ที่ใช้บนระบบปฏิบัติการยูนิกซ์ ได้แก่ pine เป็นต้น
http://gotoknow.org/blog/narongwit/110954

4. Unix Shell
Unix Shell & Environment Variables
Shell คือโปรแกรมโปรแกรมหนึ่งบน unix ที่ทำหน้าที่ interface ระหว่าง user กับ unix(kernel) user จะสามารถสั่งงาน unix ได้โดยผ่าน shell เท่านั้นไม่ว่าจะโดยทางตรงหรือทางอ้อม ทางตรงก็คือ user สั่งงาน shell ให้ไปสั่งงาน kernel เลย เช่น internal command ส่วนทางอ้อมคือ user สั่งงานให้ shell ไป execute application ให้ไปสั่งงาน kernel อีกทีหนึ่ง โปรแกรมที่ทำหน้าที่เป็น shell มีอยู่หลายตัว แต่ที่นิยมใช้กันอยู่ใน ปัจจุบันมีดังต่อไปนี้

1.Bourne shell (/bin/sh) เป็น shell ในยุคแรกๆ ที่มีใช้กันอย่างแพร่หลาย และเป็น starndard shell ที่มีใน unix ทุกตัว ทำให้สามารถย้าย shell script ที่เป็น bourne shell ไปยัง unix ระบบอื่นได้โดยไม่ต้องเปลี่ยนแปลงแก้ไขอะไรเลย แต่มีข้อเสียคือขาด funciton ในการทำ job control จะมี default prompt เป็น "$"

2.C shell (/bin/csh) เป็น shell ที่พัฒนาขึ้นมาหลังจาก bourne shell โดยมีโครงสร้างของ syntax และ control structures คล้ายกับภาษา C มี function การทำงานหลายอย่างที่ดีและสะดวกกว่า bourne shell เช่น มีความสามารถในการเรียกคำสั่งที่ใช้ไปแล้ว และเป็น shell ตัวแรกที่สามารถทำ jobs control ได้ แต่มีข้อเสียคือ ทำงานกับ shell script ของ bourne shell ไม่ได้ โดยปรกติ default prompt จะเป็น "%"

3.Korn shell (/bin/ksh) เป็น shell ที่พัฒนาขึ้นมาโดยสามารถทำงานใน function ของ bourne shell (super set ของ bourne shell) ได้ทุกอย่างและยังเพิ่มความสามารถในการทำ jobs control ขึ้นมา การ เขียน shell script ทำได้ง่ายและรัดกุมขึ้น สามารถเรียกคำสั่งที่เคยใช้ไปแล้วมาแก้ไขแล้ว execute ไปใหม่ได้ สรุปว่าเป็น shell ที่รวมเอาข้อดีของ bourne shell และ c shell ไว้ด้วยกัน แต่ไม่ได้มีใน unix ทุกตัว korn shell จะมีขนาดใหญ่กว่า shell อื่น ๆ default prompt จะเป็น "$"

4.Bourne Again shell (/usr/local/bin/bash หรือ /bin/bash) เป็นการนำเอา bourne shell กลับมาพัฒนาใหม่ ให้สามารถทำ command line editing ได้ และทำ jobs control ได้ และยังได้เพิ่มประสิทธิภาพในการทำงานให้พิ่มขึ้นอีกหลายอย่าง bash shell นี้ไม่ใช่ standard unix shell แต่ปัจจุบันกลายเป็น default shell ของ linux จะมี default prompt เป็น $
http://tulip.bu.ac.th/~nattakorn.c/shell_env.php

5.ระบบไฟล์และไดเร็คทอรี
UNIX มองทุกอย่างเป็นไฟล์หมด แม้แต่หน่วยความจำ (/dev/mem) ซีดีรอม (/dev/cdrom) เม้าส์ (dev/mouse) โมเด็ม (/dev/modem) ระบบไฟล์และไดเรคทอรีบนUNIX มีโครงสร้างแบบต้นไม้ (tree structure) โดยไดเรคทอรีนอกสุด คือ ไดเรคทอรีราก (root directory) ใช้ / เป็นตัวแทนครับ ซึ่งก็จะมีไดเรคทอรีย่อยแตกแขนง ออกไปอีกเช่น /usr /local /lib /etc /bin
ในแต่ละไดเรคทอรีบรรจุไฟล์และไดเรคทอรีย่อยลงไปอีกเช่นใน /usr จะมี local bin

ชื่อไดเรคทอรีแบบนี้จะมีความหมาย ก็ต่อเมื่อ เรารู้ว่าไดเรคทอรีนอกก่อนคืออะไร วิธีเรียกชื่อแบบนี้ถูกเรียกว่า relative pathname แต่ถ้าหากเราใช้ /usr/local หรือ /usr/bin แทน local หรือ bin เราก็จะทราบโครงสร้าง tree structure ที่แท้จริงของไดเรคทอรีนี้ วิธีการเรียกแบบนี้เรียก absolute pathname ไดเรคทอรีที่ผู้ใช้ล็อกอินเข้าไปเรียกว่า home directory ซึ่งก็ขึ้นกับผู้บริหารระบบว่าจะให้ไปอยู่ที่ไหน
http://wiki.nectec.or.th/ntl/Main/Unix-doc




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