บทที่ 3
ระบบปฏิบัติการกับการจัดการทรัพยากรระบบ
การจัดการโปรเซสกกกกกกกโปรเซสคือโปรแกรมที่ถูกประมวลผลโดยซีพียูแต่ในความเป็นจริงแล้วกิจกรรมที่ส่งไปให้ซีพียูประมวลผลนั้น ใช่ว่าจะเป็นโปรแกรมเท่านั้น ซึ่งในบางระบบอาจมีการเรียกกิจกรรมที่ซีพียูประมวลผลอยู่แตกต่างกันไป เช่น Job , Task หรือ User Program ต่างก็มีความหมายเดียวกันกับคำว่าโปรเซส
สถานะของโปรเซส
กกกกกกกเมื่อแต่ละโปรเซสกำลังทำงานอยู่ จะมีการเปลี่ยนแปลงสถานะของโปรเซสในแต่ละช่วงเวลา โดยการทำงานของโปรเซสจะเกิดขึ้นบนสถานะใดสถานะหนึ่งเท่านั้น ซึ่งสถานะของโปรเซสประกอบด้วย
1. New คือสถานะที่โปรเซสใหม่กำลังถูกสร้างขึ้น
2. Ready คือสถานะที่โปรเซสกำลังรอคอย หรือพร้อมที่จะครอบครองหน่วยซีพียูเพื่อทำงาน
3. Running คือสถานะที่โปรเซสได้ครอบครองซีพียู หรือโปรเซสที่กำลังทำงานตามคำสั่งของโปรแกรม
4. Waiting คือสถานะที่โปรเซสกำลังรอคอยเหตุการณ์บางอย่าง เช่น รอให้มีการรับหรือส่งข้อมูลให้เรียบร้อยก่อน
5. Terinated คือสถานะที่โปรเซสได้หยุดลง
วิธีการจัดตารางการทำงาน
กกกกกกกจากสถานะของโปรเซสที่กล่าวมา ทำให้ทราบว่าโปรเซสใดที่จะถูกส่งไปให้ซีพียูทำงานก่อน ดังนั้นระบบปฏิบัติการจึงต้องมีวิธีการตัดสินใจในการส่งโปรเซสเข้าครอบครองซีพียู จึงเกิดการจัดตารางการทำงานของหน่วยซีพียูขึ้น เพื่อแก้ไขปัญหาที่จะเกิดขึ้น โยมีหลายวิธีดังนี้
กกกกกกกกกกก1. วิธีแบบมาก่อนได้ก่อน (First-Come , FirstServed Scheduling : FCFS)
เป็นวิธีที่โปรเซสใดที่ร้องขอหน่วยซีพียูก่อน ก็จะได้รับบริการจากซีพียูก่อนตามที่ร้องขอกล่าวคือ เป็นไปตามโปรเซสที่ร้องขอบริการจากซีพียูตามลำดับคิว เป็นวิธีที่ง่าย ไม่ซับซ้อน ยกตัวอย่างเช่น หากโปรเซสที่ป้อนข้อมูลเข้าสู่ระบบเป็นไปตามลำดับ P1 , P2 , และ P3 ดังนั้นคิวของแต่ละโปรเซสก็คือ
P1 จะใช้เวลารอคอยเป็นศูนย์
P2 จะใช้เวลารอคอยเท่ากับ 24 มิลลิวินาที
P3 จะใช้เวลารอคอยเท่ากับ 27 มิลลิวินาที
วิธีแบบมาก่อนได้ก่อน จะมีประสิทธิภาพก็ต่อเมื่อโปรเซสที่ลำดับเข้ามาในคิวมีความเหมาะสมก็จะทำให้เฉลี่ยเวลาน้อยลง แต่เป็นไปได้ยาก
2. วิธีแบบงานใดใช้เวลาสั้นที่สุด จะได้ก่อน (Shortes-Job-First Scheduling : SJF)
เป็นวิธีที่ไม่นึกถึงลำดับในคิวว่างานใดมาก่อน แต่จะพิจารณาถึงงานหรือโปรเซสที่ใช้เวลาการประมวลผลน้อยที่สุดก็จะได้บริการหน่วยซีพียูก่อน อย่างไรก็ตามหากกลุ่มงานมีเวลาประมวลผลเท่ากัน ก็จะพิจารณาโปรเซสที่มาก่อนได้ก่อนแทน ยกตัวอย่างเช่น
P1 ใช้เวลาการประมวลผลที่ 6 มิลลิวินาที
P2 ใช้เวลาการประมวลผลที่ 8 มิลลิวินาที
P3 ใช้เวลาการประมวลผลที่ 7 มิลลิวินาที
P4 ใช้เวลาการประมวลผลที่ 3 มิลลิวินาที
ดังนั้น โปรเซสที่จะป้อนข้อมูลเข้าสู่ระบบตามวิธีแบบ SJF ก็จะได้แก่ P4 ,P1 , P3 และ P2
3. วิธีตามลำดับความสำคัญ (Priority Scheduling)
เป็นวิธีที่มีการกำหนดความสำคัญของโปรเซสแต่ละโปรเซสไม่เท่ากันโดยโปรเซสที่จะเข้าครอบครองซีพียูได้ ต้องมีลำดับความสำคัญสูงสุดในกลุ่ม
กกกกกกกกกกก4. วิธีการหมุนเวียนกันทำงาน (Round-Robin Scheduling)
การจัดการทำงานแบบนี้ถูกออกแบบมาให้ใช้กับระบบคอมพิวเตอร์แบบแบ่งเวลา โดยจะใช้พื้นฐานวิธีแบบมาก่อนได้ก่อน เป็นหลัก แต่โปรเซสจะไม่สามารถครอบครองซีพียูได้เท่ากับเวลาที่ต้องการ ดังนั้นจึงมีการกำหนดเวลาในการครอบครองให้เทาๆกัน ซึ่งเป็นช่วงเวลาสั้นๆ
การจัดการหน่วยความจำ
การจัดการหน่วยความจำเป็นสิ่งที่ยากต่อการออกแบบระบบปฏิบัติการทีเดียว เนื่องจากการจัดการหน่วยความจำหลักในแต่ละวิธี ล้วนแต่มีข้อจำกัดเหมือนกันนั่นก็คือโปรเซสหนึ่งๆ จะต้องถูกโหลดเข้าไปอยู่ในหน่วยความจำหลักก่อนที่โปรเซสจะเริ่มทำงานหรือประมวลผลนั้นๆ หมายความว่าขนาดของโปรเซสที่ถูกโหลดเขาไปในหน่วยความจำนั้นขนาดจะต้องไม่โตกว่าหน่วยความจำหลักที่มีอยู่ และหากคิดตามหลักความเป็นจริงแล้วขนาดของหน่วยความจำหลักมักมีขนาดจำกัด ในขณะที่โปรแกรมต่างๆ ในปัจจุบันมักมีความซับซ้อนยิ่งขึ้นในหน่วยความจำหลักได้ทั้งหมด เนื่องจากขนาดหน่วยความจำหลักมีน้อยกว่า ดังนั้นจึงต้องมีการะบวนการจัดการเพื่อให้โปรแกรมเหล่านั้นสามารถโหลดเข้าไปในหน่วยความจำหลัก เพื่อนำไปสู่การประมวลผลให้ได้
การจัดสรรหน่วยความจำ (Memory Allocation)
กกกกกกกข้อมูลและโปรแกรมต่างๆ ล้วนต้องถูกโหลดเข้าไปในหน่วยความจำหลัก หรือ โปรแกรมจะทำงานได้ดีก็ต่อเมื่อโปรแกรมนั้นได้ถูกโหลดไว้ในหน่วยความจำแล้วเท่านั้น และการที่โปรแกรมสามารถเข้าไปใช้หน่วยความจำของระบบได้ เพราะระบบปฏิบัติการเป็นผู้จัดสรรนั่นเอง
ระบบโปรแกรมเดี่ยว (Single Program/Monoprograming)
กกกกกกกในระบบคอมพิวเตอร์ที่มีการประมวลผลในรูปแบบโปรแกรมเดียว หมายความว่าสามารถรันโปรแกรมของผู้ใช้ได้เพียงครั้งละหนึ่งโปรแกรมเท่านั้น ซึ่งหลักการทำงานของระบบโปรแกรมเดี่ยวมีข้อดีตรงที่การจัดการความจำเป็นไปค่อนข้างง่าย ไม่ซับซ้อน แต่ข้อจำกัดคือไม่สามารถรันโปรแกรมได้หลายๆโปรแกรม ตัวอย่างระบบปฏิบัติแบบโปรแกรมเดียวคือ ระบบปฏิบัติการ DOS
ระบบหลายโปรแกรม (Multiprogramming)
หลักการของระบบหลายโปรแกรมคือ การทำงานของโปรแกรมในคอมพิวเตอร์ส่วนใหญ่สูญเสียไปกับการจัดการอุปกรณ์อินพุตและเอาต์พุต ซึ่งอุปกรณ์ดังกล่าวมีการเข้าถึงการทำงานช้ามากเมื่อเทียบกับซีพียู และขณะที่จัดการกับอุปกรณ์ดังกล่าวก็ไม่จำเป็นต้องใช้ซีพียูดังนั้นซีพียูจะว่าง ไม่มีการทำงานใดๆให้สูญเสียเวลาอันมีค่าไปอย่างน่าเสียดายหากในช่วงเวลาดังกล่าว นำโปรแกรมอื่นเข้ามาครอบครองเพื่อให้ใช้งานซีพียูได้ ก็ถือว่าคุ้มค่าเพราะซีพียูเป็นสิ่งที่มีทรัพยากรสูง สามารถรันโปรแกรมในขณะเดียวกันได้
คอมพิวเตอร์ที่ใช้ระบบปฏิบัติการที่สามารถรองรับการทำงานแบบหลายโปรแกรมนั้นมักเป็นระบบปฏิบัติการที่มีคุณภาพ ในปัจจุบันระบบปฏิบัติการที่ออกแบบมาล้วนแต่รองรับการทำงานแบบหลายโปรแกรมแทบทั้งสิ้น แต่จะต้องได้รับการออกแบบที่ดี
หน่วยความจำเสมือน (Virtual Memory)
กกกกกกกโปรแกรมที่รันจะต้องถูกเก็บไว้ในหน่วยความจำทั้งหมด กล่าวคือโปรเซสทั้งตัวจะต้องอยู่ในหน่วยความจำหลักไปก่อน จึงสามารถเริ่มทำการประมวลผลได้ ซึ่งเป็นเรื่องปกติ แต่ถ้าพิจารณาให้ดีจะพบว่า หากโปรแกรมมีขนาดใหญ่กว่าพื้นที่หน่วยความจำหลักก็ไม่สามารถประมวลผลได้ นั่นเอง
การจัดการแฟ้มข้อมูล
กกกกกกกในระบบปฏิบัติการจะมีวิธีการจัดเก็บข้อมูลรูปแบบของไฟล์หรือแฟ้มข้อมูล โดยที่ไฟล์ข้อมูลนั้นๆ อาจบรรจุข้อมูลไปด้วยข้อมูลหรือโปรแกรมใดๆ ที่ผู้ใช้ต้องการรวบรวมไว้เป็นชุดเดียวกันที่สำคัญ การอ้างอิงไฟล์หรือข้อมูลต่างๆภายในโปรแกรม จะไม่เกี่ยวข้องกับแอดเดรสของโปรแกรมใดๆทั้งสิ้น
อ้างอิง
https://fernandometha.wordpress.com/2014/10/16/การจัดสรรหน่วยความจำmemory-management/
http://www.irich.co.th/143-385-thickbox/dos-water-tank.jpg
https://sites.google.com/site/tanyapornparakornwatthana/_/rsrc/1427444676311/hnwy-khwam-ca/1.png

