วันจันทร์ที่ 16 มิถุนายน พ.ศ. 2551

การจัดตารางงาน

การจัดตารางงาน

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

ทำไมเราต้องจัดตารางงาน?

- เพื่อไม่ให้ซีพียูว่าง

- เพื่อให้โพรเซสได้มีโอกาสใช้ซีพียูอย่างสม่ำเสมอ

- เพื่อให้เกิดความสมดุล

ประเภทของตารางงาน

เราสามารถแบ่งตารางงานเป็น 3 ประเภทดังนี้

ตารางงานระยะสั้น (Short term scheduler) มีการสลับงานบ่อย ใช้กับช่วงเวลาที่มีโพรเซสงานหนาแน่น
ตารางงานระยะกลาง (Medium term xcheduer) มีการสลับงานปานกลาง ใช้กับช่วงเวลาที่มีโพรเซสงานปานกลาง
ตารางงานระยะยาว (Long term scheduler) มีการสลับงานน้อย ใช้กับช่วงเวลาที่มีโพรเซสงานน้อย

นอกจากการแบ่งตารางงานตามความถี่ในการสลับงาน เรายังสามารถแบ่งตารางงานตามกฏเกณฑ์ในการทำงานได้ 2 ประเภทดังนี้
- ตารางงานทีไม่อนุญาตให้แทรกงาน(Non-preemptive scheduling)
- ตารางงานที่อนุญาติให้แทรกงานได้ (Preemptive scheduling)
ธรรมชาติของโพรเซส

ก่อนที่เราจะวางตารางงานของโพรเซสได้ เราควรจะเรียนรู้ถึงธรรมชาติของโพรเซสว่าเป็นอย่างไร เพื่อที่เราจะได้เข้าใจและจัดวางตารางได้อย่างเหมาะสม
  • โพรเซสจะประกอบด้วยการใช้งานซีพียู และการรอข้อมูลจากอุปกรณ์ต่อพ่วง
  • ช่วงที่โพรเซสใช้งานซีพียู เราเรียกช่วงนั้นว่า CPU burst times
  • ช่วงที่โพรเซสรอข้อมูลจากอุปกรณ์ต่อพ่วง เราเรียกช่วงนั้นว่า l/O burst times
  • โพรเซสจะมีการสลับไปมาระหว่าง CPU burst และ l/O burst ตลอด
  • โพรเซสแต่ละโพรเซสจะใช้ CPU burst ต่างกันขึ้นกับตัวเองของโพรเซสนั้น และการจัดตารางงานของระบบ
  • โดยปกติทุกๆ โพรเซสจะมีการใช้ CPU burst ถี่ในช่วงแรก และช่วงหลังจะใช้ CPU burst เพียงเล็กน้อย

หลักการจัดตารางงาน (Scheduling Criteria)

ในการจัดตารางงานมีเกณฑ์วัดประสิทธิภาพระบบ ดังนี้

CPU utilization คือ การทำงานของซีพียู

Throughput คือ จำนวนงานเสร็จใน 1 หน่วยเวลา

Turnaround time คือ เวลาที่สูญเสียไปในการทำงาน

Waiting time คือ เวลาที่ใช้รอคิวในสถานะ ready

Response time คือ เวลาที่ใช้รอการตอบรับ

Fairness คือ การแบ่งซีพียูให้กับทุกงานอย่างเหมาะสม เท่าเทียมกัน

วิธีการจัดตารางงาน (Scheduling Algorithms)

ในการจัดตารางงานให้กับโพรเซสเราจะมีวิธีและหลักการจัดหลายๆ แบบ ดังนี้

First-Come, First-Served (FCFS) Scheduling เป็นการจัดตารางงานแบบง่ายที่สุด ยุติธรรมสูง เพราะเรียงลำดับตามคิว ใครมาก่อนก็ได้ก่อน

Shortest-Job-First (SJF) Scheduling SJF จะมีทั้งแบบ Non-preemptive และ Preemptive ซึ่งจะมีความต่างกันดังนี้

Non-preemptive(ไม่มีการแทรกงาน)

Preemptive (มีการแทรกงาน)

Priority Scheduling

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

Round-Robin Scheduling

หรือเราใช้ตัวย่อว่า RR การจัดตารางงานในลักษณะนี้ถูกออกแบบมาเพื่อใช้กับระบบจัดแบ่งเวลา ซึ่งระบบดังกล่าวจะแบ่งช่วงเวลาให้แต่ละงานใช้ซีพียูครั้งละ 10-100 มิลลิวินาที

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

Multi-level Queue Scheduling

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

Multiple-Processor Scheduling

การจัดตารางงานให้กับซีพียู 2 ตัวพร้อมกัน จะทำให้เราสามารถทำงานได้มากขึ้น แต่ใช้เวลาน้อยลง

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

สรุปประเด็นในการจัดตารางงาน

  • การจัดตารางงานให้ซีพียู คือกระบวนการคัดเลือกงานที่ต่อแถวรอคิวอยู่ขึ้นมาทำงานตามข้อกำหนดที่ตั้งไว้
  • FCFS เป็นตารางงานแบบง่ายที่สุด แต่ไม่ดีถ้างานเล็กไปอยู่ข้างหลังงานใหญ่
  • SJF เป็นตารางงานที่มีค่าเฉลี่ย waiting time ต่ำสุด
  • Priority scheduling คือ SJF แบบพิเศษที่มีการกำหนดลำดับความสำคัญให้กับงาน
  • ทั้ง SJF และ Priority มีปัญหาเดียวกันคือ การแช่งานความสำคัญต่ำค้างอยู่ในคิว ไม่สามารถทำงานนั้นเสร็จได้
  • RR เป็นการกำหนดตารางเวลาแบบแบ่งช่วงเวลาเข้าใช้ซีพียูจะไม่อนุญาตให้งานใดๆ ใช้ซีพียูเกินเวลาที่กำหนด
  • ปัญหาหลักของ RR คือการกำหนดเวลาเข้าใช้ซีพียู ถ้ากำหนดกว้างเกินไประบบจะกลายเป็น FCFS แต่ถ้าไม่แคบเกินไป งานก็จะต้องทำหลายรอบจนเสร็จ
  • FCFS มีแต่แบบ Non-preemptive ไม่มีการแทรกงาน
  • RR มีแต่แบบ Preemptive คือแทรกงานได้
  • SJF และ Priority เป็นได้ทั้งแบบ Non-preemptive และ Preemptive
  • Multi-level queue algorithm คือการแยกคิวเป็นหลายๆ คิว แต่ละคิวมีลำดับความสำคัญไม่เท่ากัน
  • Multi-level feedback queues คือ คิวที่อนุญาตให้งานสามารถเปลี่ยนคิวไปอยู่คิวอื่นได้

วันอังคารที่ 10 มิถุนายน พ.ศ. 2551

บทที่ 2
ระบบปฏิบัติการเบื้องต้น

ประเภทของระบบปฏิบัติการ
-supercomputing Operation Systems จะใช้ในงานด้านวิทยาศาสตร์ที่มีการประมวลผลข้อมูลปริมาณมหาศาล หรือใช้งานด้านกราฟิกกับงานที่มีรายละเอียดสูง ปริมาณมากๆ
-mainframes Operating Systems จะใช้ในงานบริการขนาดใหญ่ เช่น หน่วยงานรัฐบาลและสามารถจ่ายแจกข้อมูลในผู้ใช้ได้พร้อมๆกัน มีความปลอดภัยสูง
-servers Operating Systems มีความสามารถในการจัดการเครือข่าย การให้บริการอินเตอร์เน็ตร่วมกัน
-desktop Operating Systems เพื่อผู้ใช้ตามบ้าน สำหรับเครื่องพีซีที่ทรัพยากรเครื่องไม่สูงมากนักง่ายในการใช้งาน ไม่ซับซ้อนจนเกินไป
-workstations Operating Systems ใช้สำหรับเครื่องพีซี โดยจะมีผู้ใช้คนเดียว มีประสิทธิภาพพอๆกับแบบDesktop เน้นใช้ทำงานในสำนักงาน องค์กรเป็นหลัก
-handheld Operating Systems เป็นระบบที่ถึงความสามารถจากระบบ Desktop แต่ปรับปรุงให้ใช้ทรัพยากรน้อย เหมาะกับอุปกรณ์มือถือแบบต่างๆ
-real Time Operating System(RTOS) ออกแบบมาเพื่อใช้ในงานที่ต้องอัพเดทตลอดเวลา มักจะใช้ในการเฝ้าดูและติดตามผล จะมีความเสถียรในการใช้งานสูงและความสามารถในการสื่อสารเยี่ยม
-embedded Operating System ทำขึ้นมาเฉพาะอุปกรณ์มีไว้เพื่อฝังรวมกับอุปกรณ์ตัวนั้น โดยจะเป็นอุปกรณ์อิเล็กทรอนิกส์ระดับสูง ระบบจะมีขนาดเล็กใช้ได้เฉพาะอุปกรณ์ตระกูลเดียวกัน
-smart Card Operating Systems ระบบที่ฝังใน Smart Card มีขนาดเล็กบรรจุในหน่วยความจำภายในการ์ด หน้าที่หลักคือการป้องกันข้อมูล
ระบบปฏิบัติการกับอุปกรณ์คอมพิวเตอร์
เราสามารถแบ่งออกเป็น 4 หมวดหลัก คือ
-processors หรือ ซีพียู ระบบปฏิบัติการจะทำการจัดแบ่งเวลาในการประมวลผลให้กับงานที่กำลังทำอยู่ รวมถึงการแทรกงานที่มาจากผู้ใช้
-memory หรือ หน่วยความจำจะทำงานควบคู่กับซีพียู ระบบปฏิบัติการจะเป็นตัวระบุตำแหน่งข้อมูลซึ่งหน่วยความจำของคอมพิวเตอร์จะมี 3 ประเภท คือ high-speed cache,main memory, secondary memory
-l/0 Devices อุปกรณ์ต่อพ่วงต่างๆ ที่ถูกจัดการโดยระบบปฏิบัติการในการสั่งงาน ควบคุมและแบ่งปันอุปกรณ์เหล่านั้นให้เพียงพอกับงานต่างๆที่ทำอยู่
-buses หรือ ทางเดินข้อมูล โดยระบบปฏิบัติการจะเป็นตัวควบคุมการไหลของข้อมูลบนบัสเพื่อให้การรับส่งข้อมูลทำได้อย่างถูกต้อง

ความสามารถของระบบปฏิบัติการ

ความสามารถหลัก 6 ประการ คือ

-processor Management การจัดซีพียูเป็นความสามารถหลัก และหัวใจของระบบปฏิบัติการมีอยู่ 2 ส่วนด้วยกัน คือ

1.ทำการแบ่งปันเวลาประมวลผลของซีพียูให้เพียงพอกับงานทุกๆงาน

2.พยายามใช้ซีพียูประมวลผลงานตามความเป็นจริง

-memory Maragement การจัดการหน่วยความจำ ระบบที่ดีจะต้องมีการจัดการที่ดี 2 ประเด็นหลัก

1.ระบบต้องแบ่งหน่วยความจำให้เพียงพอสำหรับงานแต่ละงาน

2.ระบบจะต้องจัดการขอบเขตหน่วยความจำให้ดี งานๆหนึ่งจะไม่สามารถนำหน่วยความจำของงานซึ่งมาใช้ได้

-storage Management การจัดการข้อมูล ระบบปฏิบัติการที่ดีจะต้องมีความสามารถในการจัดเก็บข้อมูลลงดิสก์ Disk เพื่อบันทึกเก็บไว้ใช้ในตอนเปิดเครื่องครั้งต่อไป ระบบปฏิบัติการจะต้องมีความสามารถในการอ่านเขียนข้อมูลลงดิสก์ได้ดี มีระบบค้นหาข้อมูลที่มีประสิทธิภาพ และมีระบบการกำหนดสิทธิ์ผู้เข้าใช้ข้อมูลนั้นๆได้

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

-application Interface ส่วนติดต่อโปรแกรมประยุกต์ ระบบปฏิบัติการจะเตรียมส่วนที่ใช้ติดต่อกับโปรแกรมประยุกต์ไว้ เช่น คำสั่งพื้นฐาน ฟังก์ชันการทำงานต่างๆ เตรียมเอาไว้

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