วันจันทร์ที่ 12 ธันวาคม พ.ศ. 2559

บทที่ 3 ระบบปฏิบัติการกับการจัดการทรัพยากรระบบ

บทที่ 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