วันพฤหัสบดีที่ 8 ธันวาคม พ.ศ. 2559

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


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


โปรเซส  คือโปรแกรมที่ถูกประมวลผลโดยซีพียู

สถานะของโปรเซส จะประกอบด้วยสถานะ  NEW , Ready , Running , Waiting และ Terminated

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

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




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




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



การจัดตารางการทำงานแบบหมุนเวียนกันทำงาน(Round-Robin Scheduling)
การจัดตารางด้วยวิธีแบบหมุนเวียนกันทำงานนี้ ถูกออกแบบมาให้ใช้กับระบบคอมพิวเตอร์แบบแบ่งเวลา โดยจะใช้วิธีพื่นฐานวิธีแบบมาก่อนได้ก่อน(FCFS)เป็นหลัก แต่โปรเซสจะไม่สามารถครอบครองซีพียู ได้ เท่ากับเวลาที่ต้องกาล ดังนั้น ด้งยวิธีนี้จึงมีการกำหนดให้แต่ละโปรเซสที่เข้าใช้บริการซีพียูถูกจำกัดด้วยเวลาใช้งานที่เท่าๆกัน ซึ้งช่วงเวลาเหล่านี้จะเป็นช่วงเวลาสั้นๆ ที่เรียกว่า เวลาควันตัม(Quantum Time) โดยอาจมีช่วงเวลาระหว่าง 10 ถึง 100 มิลลิวินาที ครั่นเมื่อโปรเวสถูกประมวลผลครบเวลาควอนตัมแล้ว ก็จะถูกนำออกไปจัดคิวต่อถ่ายใหม่(กรณียังประมวลผลไม่เสร็จ) และจะนำโปรเซสลำดับถัดไปในคิวมาประมวลผล ซึ้งเป็นไปในลักษณะหมุ่นเวียนการทำงานนั่นเอง ดังนั้นโปรเซสจะไม่สามารถใช้เวลาเกินกว่าเวลาควันตัมที่กไหนด แต่สามารถใช้เวลาประมวลผลน้อยกว่าเวลาควันตัมได้



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




   การจัดการหน่วยความจำ

          การจัดการหน่วยความจำจัดเป็นหน้าที่หนึ่งของระบบปฎิบัติการ หน่วยความจำนี้เป็นองค์ประกอบหนึ่งในการพิจารณาขีดความสามารถของเครื่องคอมพิวเตอร์ด้วย  กล่าวคือถ้าหากคอมพิวเตอร์มีความจำมาก  นั้นหมายถึงขีดความสามารถในการทำงานก็จะเพิ่มขึ้นโปรแกรมที่มีสลับซับซ้อนและมีสมรรถนะสูง มักจะเป็นโปรแกรมที่ต้องการหน่วยความจำสูง แต่ก็เป็นที่ทราบแล้วว่าหน่วยความจำมีราคาแพง (เปรียบเทียบราคาฮาร์ดดิสก์ประมาณ 5,000 บาท สามารถได้ความจุถึง 10 GB ขึ้นไป แต่ถ้าเป็นแรมได้ความจุเพียงหน่วย MB เท่านั้น) ดังนั้นระบบปฎิบัติการที่ดีจะต้องมีการจัดการหน่วยความจำที่มีอยู่จำกัด ให้สามารถรองรับงานต่างๆ ที่จำเป็นต้องใช้หน่วยความจำจำนวนมากได้

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

        1 การจัดสรรหน่วยความจำแบบต่อเนื่อง (continuous Memory allocation)
คอมพิวเตอร์ในยุคก่อนๆ นั้นจะมีการครอบครองหน่วยความจำให้โปรแกรมต่างๆ ในลักษณะต่อเนื่องทั้งสิ้น กล่าวคือโปรแกรมหนึ่งๆ จะถูกโหลดลงในหน่วยความจำได้ต่อเมื่อมีหน่วยความจำขนาดใหญ่พอที่จะวางโปรแกรมนั้นลงไปทั้งหมดได้ การจัดการในลักษณะนี้หากมีหน่วยความจำที่ต่อเนื่องกันมีขนาดไม่เพียงพอสำหรับโปรแกรมทั้งโปรแกรมที่จะลงไปได้โปรแกรมนั้นก็จะทำงานไม่ได้ต้องรอจนกว่าจะมีหน่วยความจำเหลือพอที่จะวางโปรแกรมทั้งโปรแกรมนั้นลงไปได้

2 การจัดสรรหน่วยความจำแบบไมต่อเนื่อง (Non-Continuous Allocation)
  การจัดสรรหน่วยความจำลักษณะนี้มักใช้ในระบบปฏิบัติการในปัจจุบัน  กล่าวคือในการครอบครองหน่วยความจำนี้  โปรแกรมจะถูกแบ่งออกเป็นส่วนๆ  หลายๆ  ส่วนด้วยกันเมื่อจะทำการรันโปรแกรม  ก็จะโหลดโปรแกรมลงในหน่วยความจำส่วนไหนก็ได้ที่มีที่ว่างพอและที่ความสำคัญในแต่ละส่วนที่โหลดลงไปในหน่วยความจำนั้น  ไม่จำเป็นต้องเรียงต่อกันอย่างแบบแรก  ดังนั้นการจักสรรหน่วยความจำในลักษณะนี้จะสามารถใช้งานความจำได้เต็มที่กว่าแบบแรก  โดยไม่ต้องรอว่าจะต้องมีหน่วยความจำที่ติดต่อกันทั้งหมดมีขนาดใหญ่เพียงพอกับโปรแกรมทั้งหมดหรือไม่  แต่การจัดสรรหน่วยงานความจำแบบนี้  ตัวระบบปฏิบัติการก็จะต้องมีกระบวนการจัดการที่ยุ่งยากซับซ้อนเพิ่มขึ้น

 ระบบโปรแกรมเดี่ยว( Single Porgram )
ระบบโปรแกรมเดี่ยว  หมายถึงการรันโปรแกรมที่ใช้เพียง 1 โปรเซสเท่านั้นซึ่งมักใช้งานกับคอมพิวเตอร์ขนาดเล็ก และตัวระบบปฎิบัติการก็มีการจัดการหน่วยความจำที่ค่อนข้างง่าย ไม่สลับซับซ้อน

ระบบหลายโปรแกรม(Multipramming)

ในระบบคอมพิวเตอร์  ซีพียูถือว่าเป็นหน่วยที่แพงที่สุด  สำคัญที่สุด   และต้องการใช้งานซีพียูให้คุ้มค่ามากที่สุด  ดังนั้นจึงได้คิดค้นวิธีการต่าง ๆ เพื่อสามารถใช้งานซีพียูคุ้มค่ายิ่งขึ้น ระบบโปรแกรมเดี่ยว (Single   program) ซีพียูแทบจะใช้งานน้อยมากกล่าวคือ เมื่อมีการติดต่ออุปกรณ์อินพุต/เอาต์พุต ซึ่งพื้นฐานของการทำงานอุปกรณ์เหล่านั้นเป็นแบบ Machanics ไม่ใช้แบบ Electtronics  เหมือนกับหน่วยความจำหลัก ดังนั้นการทำงานย่อยช้ากว่าซีพียูมาก  ในช่วงขณะที่ซีพียูจัดการกับอุปกรณ์อินพุต/เอาต์ว่าได้สูญเสียค่าใช้จ่ายในการใช้งานซีพียูใดไม่ได้ประโยชน์ใด ๆ และไม่คุ้มกับความสามารถและราค่าของซีพียูเลย จากความคิดนี้จึงได้มีการสร้างคอมพิวเตอร์ที่สามารถทำการรันงานหรือโปรแกรมต่าง ๆ ได้หลาย ๆ โปรแกรมหลายโปรแกรมจากความคิดการรันงานหลาย ๆ โปรแกรมพร้อม ๆ กันนี้ จึงต้องมีความจำเป็นที่ต้องทำแบ่งหน่วยความจำออกเป็นส่วน ๆ เพื่อเก็บโปรแกรมต่าง ๆ มิให้ปะบนกัน  และ เพื่อรันโปรแกรมได้หลาย ๆ โปรแกรม นั่นหมายถึงว่าจะต้องมีขนาดของหน่วยความจำเพิ่มขึ้นด้วย  หลักการทำงานของระบบปฎิบัติการนั้น  ก็จะต้องมีความยุงยากสลับซับซ้อนยิ่งขึ้น  และการทำงานของซีพีนั้นสามารถทำงานเพียงงานเดียวในช่วงเวลาหนึ่ง  ดังนั้นซีพียูก็จะทำงานการสับหลีกโปรแกรมหนึ่งเพื่อไปทำงานอีกโปรแกรมหนึ่ง  เปรียบเสมือนกับการทำงานหลาย ๆ งานในคณะเดียว  และที่สำคัญระบบปฎิบัติการจะต้องมีการป้องกันตัวเองจากโปรแกรมของผู้ใช้แล้ว  ยังต้องปกป้องกันโปรแกรมหนึ่งจากโปรแกรมอื่น ๆ ที่ใช้ในระบบด้วย

หน่วยความจำเสมือน (Virtual memory)
 คือหน่วยความจำที่จำลองขึ้น ไม่ใช้พื้นที่หน่วยความจำหลักจริงๆ ทำได้โดยนำพื้นที่ของหน่วยเก็บข้อมูลสำรองส่วนหนึ่งมาจำลองใช้งานเสมือนเป็นหน่วยความจำหลัก ระบบที่ใช้งานหน่วยความจำเสมือนจะแบ่งประเภทของตำแหน่งที่อยู่ออกเป็น 2 ประเภท คือ
1. Virtual address คือ ตำแหน่งที่อยู่ที่มีไว้สำหรับให้โปสเซสอ้างอิงใช้งาน
2. Real address  (หรือ Physical address) คือตำแหน่งที่อยู่จริงๆบนหน่วยความจำหลัก





การจัดการแฟ้มข้อมูล

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

สามารถจัดเก็บไฟล์ข้อมูล จะมีหลักการอยู่ 2 วิธีด้วยกันคือ 

1.การบันทึกไฟล์ข้อมูลแบบเรียงติดกัน 
หลักการของวิธีนี้ ข้อมูลแต่ละไบต์ของไฟล์จะถูกบันทึกในลักษณะเรียงต่อเนื่องกันไปจนกระทั้งจบไฟล์
แต่วิธีนี้จะเกิดปัญหาขึ้นได้ในกรณีไฟล์นั้นมีข้อมูลเพิ่มเติม และมีขนาดใหญ่เพิ่มขึ้น ทำให้ต้องการพื้นที่มากขึ้น ไฟล์ดังกล่าวอาจไม่สามารถจัดเก็บในตำแหน่งเดิมที่เคยบันทึกอยู่เนื่องจากต้องหาพื้นที่แห่งใหม่ที่ว่างพอที่จะบันทึกไฟล์เหล่านี้แบบต่อเนื่องกันไปจนจบ

2.การแบ่งไฟล์เป็นบล็อค 
 ด้วยข้อจำกัดของวิธีการบันทึกไฟล์แบบเรียงติดกัน ดังนั้น ระบบปฏิบัติการในเกือบทุกระบบ ได้ใช้วิธีการแบ่งไฟล์ออกเป็นส่วนๆ ที่เรียกว่าบล็อค(Block)โดยแต่ละบล็อคจะนำไปเก็บไว้ที่ตำแหน่งใดในดิสก์ก็ได้ ไม่จำเป็นต้องบันทึกเรียงกันเป็นลำดับอย่างวิธีแรก ความสำคัญก็คือแต่ละบล็อคจะมีลิ้งก์ใช้เชื่ิอมโยงตำแหน่งข้อมูลในลำดับถัดไป โดยจะเชื่อมโยงกันไปเรื่ิอยๆ จนกระทั้งเมื่่อพบบล็อคข้อมูลใดที่มีรหัส EOF (End Of File) ก็หมายความว่าไฟล์นี้มีจุดจบที่ตำแหน่งนี้ 




อ้างอิง

หนังสือเรียนวิชา การใช้งานระบบปฏิบัติการ รหัสวิชา  2128-2002 ประเภทวิชาอุตสาหกรรม สาขาเทคนิคคอมพิวเตอร์   116


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

แสดงความคิดเห็น