การจัดการโปรเซส
โปรเซส คือ โปรแกรมที่ถูกประมวลผลโดยซีพียู แต่ในความจริงแล้วกิจกรรมที่ส่งไปให้ซีพียูประมวลผลนั้น ใช่ว่าจะเป็นโปรแกรมเท่านั้น ซึ่งในบางระบบอาจมีการเรียกกิจกรรมที่ซีพียูประมวลผลอยู่นั้นแตกต่างกันไป ดังนั้นไม่ว่าจะเป็น Job,Task หรือ User Program ซึ่งต่างก็มีความหมายเดียวกันกับคำว่าโปรเซส และโปรแกรมที่กำลังทำงานอยู่ ก็เรียกว่าโปรเซสเช่นกันโดยการทำงานของโปรเซสจะทำงานแบบเป็นลำดับสถานะของโปรเซส
เมื่อแต่ละโปรเซสกำลังทำงานอยู่นั้น จะมีการเปลี่ยนแปลงสถานะของโปรเซสในแต่ละช่วงเวลา โดยการทำงานของโปรเซสจะเกิดขึ้นบนสถานะใดสถานะหนึ่งเท่านั้น ซึ่งสถานะของโปรเซสจะประกอบด้วย1. New
คือสถานะทีี่โปรเซสใหม่กำลังถูกสร้างขึ้น
2. Ready
คือสถานะที่โปรเซสกำลังรอคอย หรือพร้อมที่จะครอบครองหน่วยซีพียูเพื่อทำงาน
3. Running
คือสถานะที่โปรเซสได้ตรอบครองซีพียู หรือโปรเซสที่กำลังทำงานตามคำสั่งของโปรแกรม
4. Waiting
คือสถานะที่โปรเซสกำลังรอคอยเหตุการณ์บางอย่าง เช่น รอให้มีการรับหรือส่งข้อมูลให้เรียบร้อยก่อน
5. Terminated
คือสถานะที่โปรเซสได้สิ้นสุดลง
https://sites.google.com/site/rabbpdibatikar2/_/rsrc/1358598415128/kar-peliyn-sthana-khxng-porses/6.png?height=295&width=667
วิธีการจัดตารางการทำงาน
จากสถานะของโปรเซสที่กล่าวมา ทำให้ทราบว่าโปรเซสใดที่จะถูกส่งไปให้ซีพียูทำงานก่อนดังนั้น ระบบปฏิบัติการจึงต้องมีวิธีการตัดสินใจในการส่งโปรเซสเข้าครอบครองซีพียู จึงเกิดการจัดตารางการทำงานของหน่วยซีพียูขึ้น1. วิธีแบบมาก่อนได้ก่อน
(First-Come,First-Served Scheduling :FCFS)เป็นวิธีที่โปรเซสใดที่ร้องขอหน่วยซีพียูก่อน ก็จะได้รับการบริการจากซีพียูตามที่ได้ร้องขอกล่าวคือ เป็นไปตามโปรเซสที่ร้องขอบริการซีพียูตามลำดับคิว วิธีนี้เป็นวิธีที่ง่าย ไม่ซับซ้อน โดยวิธีFCFS นั้นสามารถนำแนวคิดหรือหลักการของคิวมาใช้งานได้ทันที ซึ่งเป็นไปในลักษณะ FIFO (First In,First Out) นั่นเอง
2. วิธีแบบงานใดใช้เวลาสั้นที่สุด จะได้ก่อน
(Shortest-Job-Fist Scheduling : SJF)เป็นวิธีที่ไม่ได้คำนึงถึงลำดับในคิวงานว่างานใดมาก่อน แต่จะพิจารณาถึงงานหรือโปรเซสที่ใช้เวลาการประมวลผลน้อยที่สุดก็จะได้บริการหน่วยซีพียูก่อน อย่างไรก็ตาม หากกลุ่มงานมีเวลาประมวลผลเท่ากัน ก็จะพิจารณาโปรเซสแบบมาก่อนได้ก่อนแทน
3.วิธีตามลำดับความสำคัญ(Priority Scheduling)
เป็นวิธีที่มีการกำหนดความสำคัญของโปรเซสแต่ละดปรเซสไม่เท่ากัน โดยโปรเซสที่จะเข้าครอบครองซีพียูได้ ต้องมีลำดับความสำคัญสูงสุดในกลุ่ม ดังนั้นโปรเซสใดที่มีลำดับความสำคัญที่สูงกว่า ก็จะถูกประมวลผลก่อน ถึงแม้ว่าจะมาทีหลังก็ตาม
4. วิธีแบบหมุนเวียนการทำงาน (Round-Robin Scheduling)
การจัดตารางด้วยวิธีแบบหุนเวียนกันทำงานนี้ ถูกออกแบบมาให้ใช้กับระบบคอมพิวเตอร์แบบแบ่งเวลา โดยจะใช้พื้นฐานวิธีอบบมาก่อนได้ก่อน(FCFS) เป็นหลัก แต่โปรเซสจะไม่สามารถครอบครองซีพีูได้เท่ากับเวลาที่ต้องการ ดังนั้น ด้วยวิธีนี้จึงมีการกำหนดให้แต่ละโปรเซสที่เข้าใช้บริการซีพียูถูกจำกัดด้วยเวลาใช้งานเท่าๆกัน ซึ่งช่วงเวลาเหล่านี้จะเป็นช่วงเวลาสั้นๆ ที่เรียกว่า เวลาควันตัม (Quantum Time)
วงจรอับ(Deadlock)
ในระบบปฏิบัติการที่ออกแบบมาเพื่อรองรับการทำงานหลายๆ โปรเซส หรือที่เรียกว่า Multiprogramming หรือ Multiuser นั้น ทีความเป็นไปได้ที่โปรเซสต่างๆ ต้องการครอบครองทรัพยากรเดียวกัน เหตุการณ์ดังกล่าวหากเกิดขึ้น ก็จะเกิดการแก่งแย่งชิงทรัพยากรในระบบขึ้นและหากระบบปฏิบัติการไม่มีกระบวนการใดๆ จัดการกับโปรเซสและทรัพยากรที่ต้องแชร์ใช้งานร่วมกัน ย่อมส่งผลต่อบางโปรเซสที่อาจต้องรอคอยทรัพยากรจากโปรเซสอื่นที่ครอบครองอยู่อย่างชั่วนิรันดร์ จึงเป็นที่มาของวงจรอับนั่นเอง
http://bc.feu.ac.th/pichate/os_c7/chapte3.gif
การจัดการหน่วยความจำ
การจัดการหน่วยความจำจัดเป็นสิ่งที่ยากต่อการออกแบบระบบปฏิบัติการทีเดียว เนื่องจากการจัดการหน่วยความจำหลักในแต่ละวิธี ล้วนแต่มีข้อจำกัดเหมือนกันก็คือ โปรแกรมทั้งหมดของโปรเซสหนึ่งๆ จะต้องถูกโหลดเข้าไปอยู่ในหน่วนความจำหลักก่อนที่โปรเซสนั้นจะเริ่มทำงานหรือประมวลผล นั่นหมายความว่าขนาดของโปรเซสที่โหลดเข้าไปในหน่วยความจำหลักนั้น จะต้องไม่โตกว่าขนาดของหน่วยความจำหลักที่มีอยู่
การจัดสรรหน่วยความจำ (Memory Allocation)
ตามที่ได้กล่าวมาแล้วก็คือ ข้อมูลและโปรแกรมต่างๆ ล้วนต้องถูกโหลดเข้าไปในหน่วยความจำหลัก หรือกล่าวได้อีกนัยหนึ่งว่า โปรแกรมจะทำงานได้ก็ต่อเมื่อ โปรแกรมนั้นได้ถูกโหลดไว้ในหน่วยความจำแล้วเท่านั้น และการที่โปรแกรมสามารถเข้าไปใช้หน่วยความจำของระบบได้ เพราะระบบปฏิบัติการเป็นผู้จัดสรรให้นั่นเอง
การจัดสรรหน่วยความจำ สามารถแบ่งออกเป็น 2 ประเภทด้วยกันคือ การจัดสรรหน่วยความจำแบบต่อเนื่อง และจัดสรรหน่วยความจำแบบไม่ต่อเนื่อง
1. การจัดหน่วยความจำแบบต่อเนื่อง (Continuous Memory Allocation)
คอมพิวเตอร์ในยุคก่อนๆ นั้นจะมีการครอบครองหน่วยความจำให้โปรแกรมต่างๆ ในลักษณะต่อเนื่องทั้งสิ้น กล่าวคือโปรแกรมหนึ่งๆ จะถูโหลดลงในหน่วยความจำได้ก็ต่อเมื่อมีหน่วยความจำขนาดใหญ่พร้อมที่จะวางโปรแกรมนั้นลงไปทั้งหมดได้ การจัดการในลักษณะนี้หากมีหน่วยความจำที่ต่อเนื่องกันมีขนาดไม่เพียงพอสำหรับโปรแกรมทั้งโปรแกรมที่จะลงไปได้โปรแกรมนั้นก็จะทำงานไม่ได้ต้องรอจนกว่าจะมีหน่วยความจำเหลือพอที่วางโปรแกรมทั้งโปรแกรมนั้นลงไปได้
2. การจัดสรรหน่วยความจำแบบไม่ต่อเนื่อง ( Non-Continuous Allocation )
การจัดสรรหน่วยความจำลักษณะนี้มักใช้ในระบบปฏิบัติการในปัจจุบัน กล่าวคือการครอบครองหน่วยความจำนี้ โปรแกรมจะถูกแบ่งเป็นส่วนๆ หลายๆ ส่วนด้วยกันเมื่อจะทำการรันโปรแกรม ก็จะโหลดโปรแกรมลงในหน่วยความจำส่วนไหนก็ได้ที่มีที่ว่างพอและที่สำคัญในแต่ละส่วนที่โหลดลงไปในความจำนั้น ไม่จำเป็นต้องเรียงต่อกันอย่างแบบแรก ดังนั้นการจัดสรรหน่วยความจำในลักษณะนี้จะสามารถใช้งานหน่วยความจำได้เต็มที่กว่าแบบแรก โดยไม่ต้องรอว่าจะต้องมีหน่วยความจำที่ติดต่อกันทั้งหมดมีขนาดใหญ่เพียงพอกับโปรแกรมทั้งหมดหรือไม่ แต่การจัดสรรหน่วยความจำแบบนี้ ตัวระบบปฎิบัติการก็จะต้องมีกระบวนการที่ยุ่งยากซับซ้อนเพิ่มขึ้น
ระบบโปรแกรมเดี่ยว (Single Program/Monoprogramming)
ในระบบคอมพิวเตอร์ที่ประมวลผลในรูปแบบโปรแกรมเดี่ยว หมายความว่าสามารถรันโปรแกรมของผู้ใช้ได้เพียงครั้งละหนึ่งโปรแกรมเท่านั้น ซึ่งหลักการทำงานของระบบโปรแกรมเดี่ยวมีข้อดีตรงที่การจัดการหน่วยความจำเป็นไปค่อนข้างง่าย ไม่ซับซ้อน แต่ข้อจำกัดก็คือไม่สามารถรันโปรแกรมได้หลายๆ โปรแกรม ตัวอย่างระบบปฏิบัติการแบบ)รแกรมเดี่ยวคือ ระบบปฏิบัติการ DOS
ระบบหลายโปรแกรม (Multiprogramming)
หลักการของระบบหลายโปรแกรมมีอยู่ว่า การทำงานของโปรแกรมในคอมพิวเตอร์นั้นส่วนใหญ่สูญเสียไปกับการจัดการกับอุปกรณ์อินพุตและเอาต์พุต ซึ่งอุปกกรณ์ดังกล่าว มีการเข้าถึงและการทำงานช้ามากเมื่อเทียบกับซีพียู และในขณะที่ได้มีการจัดการกับอุปกรณ์อินพุตและเอาต์พุตนั้น ก็ไม่จำเป็นต้องใช้ซีพียู
หน่วยความจำเสมือน (Virtual Memory)
จากหลักการรันโปรแกรมโดยทั่วไปที่ได้กล่าวมาข้างต้น โปรแกรมที่รันจะต้องถูกโหลดเข้าไปเก็บไว้ในหน่วยความจำทั้งหมด กล่าวคือโปรแกรมหรือโปรเซสทั้งตัวจะต้องอยู่ในหน่วยความจำหลักก่อน จึงสามารถเริ่มทำการประมวลผลได้ซึ่งแลดูแล้วเป็นเรื่องปกติธรรมดา แต่หากพิจารณาให้ดีแล้วจะพบว่า หากโปรแกรมมีขนาดใหญ่กว่าพื้นที่ในหน่วยความจำหลัก ก็ไม่สามารถประมวลผลได้หรือ และหากเป็นเช่นนี้จริง ก็คงเป็นสิ่งที่เลวร้ายไม่น้อยเลยทีเดียว
http://bc.feu.ac.th/pichate/os_c9/Image43.gif
การจัดการแฟ้มข้อมูล
ในระบบปฏิบัติการจะมีวิธีการจัดเก็บข้อมูลในรูปแบบของไฟล์หรือแฟ้มข้อมูล โดยที่ไฟล์หรือแฟ้มข้อมูลนั้น อาจบรรจุไปด้วยข้อมูล หรือโปรแกรมใดๆ ก็ได้ที่ผู้ใช้ต้องการรวบรวมไว้รวมเป็นชุดเดียวกัน ที่สำคัญ การอ้างอิงไฟล์ หรือข้อมูลต่างๆ ภายในโปรแกรม จะไม่ได้เกี่ยวข้องกับแอดเดรสของโปรแกรมใดๆ เลยทั้งสิ้น แต่ระบบปฏิบัติการจะเตรียม System Call หรือตัวเลือกระบบเพื่อให้โปรแกรมเรียกใช้ เพื่อจัดการกับงานที่เเเกี่ยวข้องกับไฟล์ได้ ไ่ว่าจะเป็นการสร้างไฟล์ การลบฟล์ การปรับปรุงหรือบันทึกไฟล์ เป็นต้น
สำหรับการจัดเก็บไฟล์ข้อมูล จะมีหลักการอยู่ 2 วิธีด้วยกันคือ การบันทึกข้อมูลในไฟล์แบบเรียงติดกัน และกาารแบ่งไฟล์เป็นบล็อก
อ้างอิง
http://bc.feu.ac.th/pichate/os_c9/chapter9.htm
https://th.jobsdb.com/th-th/articles
http://490702464037.exteen.com/20080818/6-deadlock
https://sites.google.com/site/rabbpdibatikar2/kar-peliyn-sthana-khxng-porses
http://th.jobsdb.com/th-th/wp-content/uploads/sites/-folder.jpg
อ้างอิง
http://bc.feu.ac.th/pichate/os_c9/chapter9.htm
https://th.jobsdb.com/th-th/articles
http://490702464037.exteen.com/20080818/6-deadlock
https://sites.google.com/site/rabbpdibatikar2/kar-peliyn-sthana-khxng-porses
ไม่มีความคิดเห็น:
แสดงความคิดเห็น