บทที่ 4 การจัดการหน่วยความจำ

    จัดทำโดย นาย พัทธนันท์ อุรัตน์ รหัสนักศึกษา 6031280059

 


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



     nหน้าที่หน่วยความจำหลัก
 qเก็บระบบปฏิบัติการ
 qเก็บโปรแกรมของผู้ใช้
 qเก็บข้อมูลที่จะใช้

nองค์ประกอบหน่วยความจำ
 qแอดเดรส (address)
 qข้อมูล (data)

nความต้องการหน่วยความจำ
qความเร็วสูง
qมีความเสถียรสูง
qความจุสูง
qราคาต่ำ


ชนิดของหน่วยความจำ
qหน่วยความจำหลัก
ROM เป็นหน่วยความจำถาวร ไม่สูญเสียข้อมูลแม้ไฟดับ มักใช้เก็บข้อมูลพื้นฐานที่จำเป็น
RAM มักจะใช้เป็นหน่วยความจำหลัก มีอยู่  2 ประเภท คือ static ram และ dynamic ram


qหน่วยความจำสำรอง
nมีความเร็วช้า เก็บไว้ได้นาน เช่น ดิสก์ ฮาร์ดดิสก์


การจัดการหน่วยความจำ (Memory Management)


หน่วยความจำหลักเป็นศูนย์กลางของการทำงานต่าง ๆ ของระบบคอมพิวเตอร์ในปัจจุบัน
หน่วยความจำหลักคือพื้นที่เก็บข้อมูลขนาดใหญ่
ประกอบด้วย
พื้นที่เก็บข้อมูลย่อย มีหน่วยเป็น Byte
ตำแหน่งหรือที่อยู่ของพื้นที่ย่อย (Address)


ส่วนของ OS ที่ทำหน้าที่จัดการกับหน่วยความจำได้แก่ ตัวจัดการหน่วยความจำ (Memory Manager) ซึ่งมีหน้าที่ต่าง ๆ ดังนี้

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


การจัดสรรหน่วยความจำแบบต่อเนื่อง

โปรแกรมหนึ่ง ๆ จะถูกโหลดลงหน่วยความจำได้ก็ต่อเมื่อมีหน่วยความจำขนาดใหญ่ที่จะวางโค้ดของโปรแกรมนั้นลงไปทั้งโปรแกรม

โปรแกรมจะอยู่ติดต่อกันในหน่วยความจำหลักเป็นผืนเดียวกัน ไม่มีส่วนหนึ่งของโปรแกรมแยกจากกัน

ถ้ามีพื้นที่ว่างไม่พอก็จะรอจนกว่าจะมีหน่วยความจำว่างเหลือพอ

การจัดสรรหน่วยความจำแบบไม่ต่อเนื่อง


qโปรแกรมจะถูกแบ่งออกเป็นกลุ่มหรือส่วนย่อย ๆ หลาย ๆ ส่วน เมื่อรันโปรแกรมจะโหลดลงหน่วยความจำที่ไหนก็ได้ที่มีที่ว่างพอ แต่ละส่วนไม่จำเป็นต้องเรียงต่อเป็นผืนเดียว

ระบบโปรแกรมเดี่ยว

 


   ระบบโปรแกรมเดี่ยว( Single Porgram )

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

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

           2. ส่วนโปรแกรมของผู้ใช้
ในส่วนนี้จะเป็นโปรแกรมของผู้ใช้(User Area) ที่อยู่ในความจำ โดยในที่นี้ส่วนโปรแกรมถูกจัดเก็บไว้ในตำแหน่งแอดเดรสที่ a ถึง ในหน่วยความจำ ส่วนตำแหน่งแอดเดรสที่ b ถึง c เป็น
ตำแหน่งที่ว่างที่มิได้ถูกใช้งาน
                     
จากรูป  33  เมื่อพิจารณาแล้ว  โอกาสที่โหลดเข้ามาในหน่วยความจำนั้นสามารถที่จะรุกร้ำหรือทับหน่วยความจำปฎิบัติการได้หรือไม่  กล่าวคือถ้าโปรแกรมผู้ใช้โหลดลงมาทับหน่วยความจำที่ระบบปฎิบัติการครอบครองอยู่  ก็อาจจะทำหลายโปรแกรมของระบบปฎิบัติการเสียหายได้  ดังนั้นจึงจำเป็นต้องมีวิธีในการจัดการไม่ให้โปรแกรมเหล่านี้มาทำหลายส่วนหน่วยความจำของระบบปฎิบัติการได้ วิธีหนึ่งที่นิยมใช้กันคือสร้างรีจิสเตอร์ขึ้นมาตัวหนึ่งในซีพียูซึ่งเรียกว่า รีจิสเตอร์(Boundary Register) ซึ่งจะทำการเก็บค่าแอดเดรสที่เป็นช่วงต่อระหว่างส่วนของระบบปฎิบัติการและส่วนของผู้ใช้ โดยพิจารณาจากรูป 3.3 แอดเดรส a เป็นแอดเดรสสิ้นสุดของระบบปฎิบัติการ และโปรแกรมผู้ใช้งานสามารถโหลดต่อจากแอดเดรสนี้ได้ แต่ถ้ารืมีคำสั่งผู้ใช้ให้กระโดดเข้าไปทำงานในแอดเดรสที่น้อยกว่า a และหากมีเหตุการณ์นี้เกิดขึ้น ระบบจะหยุดการทำงานของโปรแกรมผู้ใช้ และจะแสดงข้อความผิดพลาดให้ทราบ และผู้ใช้ก็ต้องตรวจสอบแก้ไขโปรแกรมของตนเองต่อไป
                   และในส่วนของระบบปฎิบัติการที่โหลดอยู่ในหน่วยความจำนี้  ก็จะมีรูทีน (Routine) ที่แยกไว้ต่างหาก ซึ่งเป็นฟังก์ชันในการจัดการอุปกรณ์อินพุต/เอาต์พุต ที่เรียกว่า Kernel l/O Subsystem    โดยในนี้ส่วนระบบปฎิบัติการก็จะมีการป้องกันมิให้โปรแกรมใดๆ   เขามาลุกล้ำหน่วยความจำส่วนนี้ได้เช่นกัน   แต่จะยอมให้เรียกฟังช์ชันการจัดการอุปกรณ์ได้ด้วยการผ่านคำสั่งเรียกระบบมาใช้งานได้ หรือเรียกผ่านทาง  System call  นั้นเอง





โอเวอร์เลย์







 โอเวอร์เลย์(Overlay)

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




   

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




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


การทำให้คอมพิวเตอร์รันโปรแกรมได้หลายโปรแกรม






  การทำให้คอมพิวเตอร์รันโปรแกรมได้หลายโปรแกรม

                วิธีการทำคอมพิวเตอร์สามารถรันโปรแกรมหลาย ๆ โปรแกรมมีอยู่ 2 วิธีคือ วิธี การแบ่งพารทิชั่นและวิธีสลับหน่วยความจำ

1. วิธีการแบ่งพาร์ทิชั่น   (Partition)

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

·       การแบ่งหน่วยความจำขนาดคงที่  ( Fixed Partition Multiprogramming )

                วิธีการแบ่งหน่วยความจำขนาดคงที่นี้ หน่วยความจำจะถูกแบ่งออกเป็นหลายๆส่วน ที่เรียกว่าพาร์ทิชั่น  ( Partition ) โดะแต่ละส่วนจะมีขนาดที่คงที่แน่นอน และในแต่ละส่วนนั้นจะมีพียงโปรแกรมเดียวที่ครอบครองหน่วยความจำในส่วนนั้น ดังนั้นจำนวนโปรแกรมที่รันพร้อม ๆ กันจะเท่ากับจำนวนส่วนขอหน่วยความจำที่แบ่งไว้





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








·       การแบ่งหน่วยความจำขนาดไม่คงที่  ( Variable Partition Multiprogramming )
เนื่องจากเกิดข้อเสียในการแบ่งหน่วยความจำขนาดคงที่ ดังนั้นจึงได้มีการออกแบบระบบปฏิบัติ

การหรือโอเอสนี้จะยอมให้โปรแกรมครอบครองหน่วยความจำมากเท่าที่ต้องการ โดยไม่มีการจำกัดขนาดของหน่วยความจำแบบคงที่ด้วยการแบ่งออกเป็นส่วนย่อย ๆ ที่แน่นอนอีกต่อไปดังนั้นจึงเรียกวิธีนี้ว่าการแบ่งหน่วยความจำไม่คงที่









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











เมื่อมีโปรแกรมใหม่ถูกส่งเข้ามาในระบบเพื่อทำการประมวมผล ก็จะมีการวางโปรแกรมใหม่เหล่านี้ไว้บนโฮลไหนดี เพราะมีโฮลกระจายอยู่ไปทั่วในพื้นที่หน่วยความจำ ระบบปฎิบัติการจะต้องตัดสินใจในการเลือกโฮลเหล่านี้อย่างไร โดยมียุทธวิธีการวาง (Placement Strategy) อยู่ 3 วิธีด้วยกัน คือ
-                   เลือกโฮลที่พบก่อน(First-Fit)
                           -ระบบปฏิบัติการจะทำการตรวจค้นโฮลต่างๆ  ในหน่วยความจำ  และเพพื่อพบโฮลที่มีขนาดใหญ่เพียงพอกับโปรแกรมที่วางลงไป  ก็จะเลือกโฮลนั้นเพื่อว่างโปรแกรม
                         -เลือกโฮลที่เหมาะสมที่สุด (Best-fit)
วิธีนี้ระบบปฏิบัติการจะตรวจสอบโฮลทั้งหมดที่มีอยู่ในหน่วยความจำ  จากนั้นจะทำ
การเลือกโฮลที่เมื่อวางโปรแกรมใหม่ลงไปแล้ว  จะเกิดโฮลใหม่ที่เกขึ่นขนาดเล็กที่สุด
-                    เลือกโฮลที่ใหญ่ที่สุด (Woret-fit)
วิธีนี้จะตรงกันข้ามกับวิธี Best-Fit  กล่าวคือ ระบบปฏิบัติตรวจสอบโฮลที่ขนาด
ใหญ่ที่สุด  และทำการวางโปรแกรมใหม่ลงไป  โดยมีเหตุผลว่าการทำเช่นนี้นั้นจะลดการเกิดโฮล
ขนาดเล็ก  ๆ   ในหน่วยความจำได้เพราะโฮลเล็ก  ๆ  หรือส่วนย่อย  ๆ  เหล่านั้นส่วนใหญ่มักไม่
สามารถใช้งานได้  เนื่องจากมีขนาดเล็กเกิน  ดังนั้นวิธีการนี้สามารถลดปัญหาเหล่านี้ได้คือ จะ

     เกิดโฮลใหม่ที่มีขนาดใหญ่เพียงพอและมีโอกาสที่จะวางโปรแกรมใหม่ลงไปได้







จากรูป 3.8  ถ้าเป็น
- วิธี First-Fit
   จะเลือก Hole 1 เพราะว่าพบก่อน
-วิธี Best-Fit
  จะเลือก Hole 2 เพราะว่ามีขนาดที่เล็กที่สุด
-วิธี Worst-Fit
จะเลือก  Hole 3 เพราะว่าจะได้โฮลใหม่ที่มีพื้นที่ขนาดใหญ่


·       การรวมช่องโหว่หรือรวมโฮล  (Coalescing Hole)
         โฮลต่างๆ ที่อยู่ในหน่วยความจำอาจเป็นโฮลที่มีขนาดเล็กเรียงถัดกันไป  ดังนั้นระบบ
ปฏิบัติการที่ดีควรจะทำการรวมโฮลที่อยู่ติดกันได้  กล่าวคือระบบปฏิบัติกีควรมีความสามารถ
ในการรวมโฮลที่อยู่ติดกันมารวมกันเป็นเพียงโลเดียว  ซึ่งเรยกกระบวนการนี้ว่า การรวมโฮล
(Coalescing Hole)โดยจะทำให้โฮลมีขนาดใหญ่ขึ้น  จากรูป 3.8 หากมีโปรแกรมขนาด 21K
ซึ่งในหน่วยความจำจะไม่มีพื้นที่พียงพอต่อโปรแกรมนี้ ดังนั้นจึงไม่สามารถรันโปรแกรมนี้ได้
แต่ถ้าระบบปฏิบัติการสามารถทำการรวมโฮล และ2เข่ากันเป็นโฮลเดียว ก็ทำให้สามารถรัน
โปรแกรมนี้ได้พอดี












·       การอัดหน่วยความจำ
การรวมโฮลสามารถนำโฮลที่เรียกต่อกันมารวมกันเพื่อให้สามารถรันโปรแกรมขนาดใหญ่ได้
ก็จริงอยู่  และก็มีโฮลหลาย ๆโฮลด้วยกระจัดกระจ่ายโดยไม่ได้เรียงต่อกันดังนั้นหากมีวิธีการทีสามมารถทำการรวมโฮลเล็ก ๆ ที่อยู่กระจัดกระจายเหล่านั้นมารวมกันก็สามารถโฮลขนาดใหญ่ที่รันโปรแกรมเพิ่มอีกหนึ่งโปรแกรมก็เป็นได้
วิธีการอัดหน่วยความจำนี้ จะทำโดยการโยกย้ายหน่วยความจำที่ใช้อยู่ไปอยู่ชิดติดกันที่ด้านใดด้านหนึ่งของหน่วยความจำ ดังนั้นจึงทำให้เกิดโฮลขนาดใหญ่เพียงโฮลเดียว แต่อย่างไรก็ตามการอันหน่วยความจำนี้ก็มีผลเสียเช่นกัน คือจะต้องหยุดการทำงามของโปรแกรมทุกโปรแกรมไว้ชั่วขณะหนึ่ง  เพื่อทำการอัดหน่วยความจำใหม่ อาจจำเป็นต้องใช้เวลามากซึ่งก็จัดเป็นค่าใช้จ่ายของระบบ(Overhead) และไม่เหมาะสมอย่างยิ่งกับระบบโต้ตอบฉับลัน(Real Time System)









หน่วยความจำเสมือน






หน่วยความจำเสมือน (Virtual Memory)
 พัฒนาการของการจัดการหน่วยความจำได้มีการพัฒนาเทคนิคหรือวิธีการต่าง ๆ เพื่อตอบสนองการทำงานที่มีประสิทธิภาพยิ่งขึ้น เช่นการรันโปรแกรมหลาย ๆ โปรแกรมที่มีความ  รวดเร็ว และสามารถรันงานขนาดใหญ่กว่าหน่วยความจำที่มีอยู่จำกัดได้อย่างไร
ในส่วนของหน่วยความจำเสมือนนี้ มีแนวคิดที่ว่า จะไม่สนใจว่าระบบคอมพิวเตอร์ที่มีอยู่นั้นมีหน่วยความจำขนาดเท่าใด แต่อย่างก็ตามจะต้องสามารถรันงานที่มีขนาดใหญ่โตหรืองานที่ต้องใช้หน่วยความจำมหาศาลได้ ซึ่งระบบปฎิบัติการจะต้องจัดสรรหน่วยความจำเพื่อ   บริการเหล่านี้ได้ และเป็นที่ทราบกันดีว่า หน่วยความจำนั้นมีราคาแพง การขยายหน่วยความจำให้ขนาดเพิ่มขึ้นนั้นคือไม่ใช้ทางออกที่ดีที่สุด กล่าวคือถึงแม้ว่าจะมีการเพิ่มขยายหน่วยความจำมากเท่าใด ก็มิอาจจะเพียงพอต่อความต้องการของผู้ใช้งานอยู่ดีเนื่องจากว่าในปัจจุบันโปรแกรมต่าง ๆ หรือข้อมูลต่าง ๆ นั้นเป็นลักษณะของภาพฐานข้อมูล , มัลติมีเดีย ที่มีขนาดใหญ่โต และการใช้งานคอมพิวเตอร์ก็มักจะโหลดงานต่าง ๆ มากกว่าหนึ่งงาน ทำให้จำเป็นต้องใช้หน่วยความจำที่เพิ่มขึ่น ดังนั้นจึงมีวิธีการหนึ่งรียกว่า หน่วยความจำเสมือน โดยการนำหน่วยความจำสำรอง เช่น ฮาร์ดดิสก์มาจำลองเป็นหน่วยความจำหลัก และที่สำคัญฮาร์ดดิสก์นั้นมีความจุที่สูงกว่าหน่วยความจำหลักมาก และราคาถูกหน่วยความจำเสมือนนี้ใช้แนวคิดใน                                                                             การทำงานแบบโวเวอร์เลย์ด้วยการโหลดแกรมที่จำเป็นต้องใช้งานไว้ในหน่วยความจำ กล่าวคืโปรแกรมทั่ว ๆ ไป จากเริ่มทำงานจากส่วนต้นโปรแกรมไปเรื่อย ๆ ซึ่งในขณะนั้นโปรแกรมส่วนท้าย ๆ ก็ยังไม่ใดถูกใช้ ดังนั้นไม่จำเป็นต้องนำโปรแกรมทั้งที่มีอยู่มาลงไว้ในหน่วยความจำ หลักการของหน่วยความจำเสมือมนี้เป็นหน้าที่ของระบบปฎิบัติการที่จัดการดูแลเองโดยผู้ใช้งานไม่จำเป็นต้องรับรู้ในการทำงานส่วนนี้ ซึ่งต่างกับโฮลเวอร์เลย์ที่ผู้เขียนโรแกรมต้องเขียนขึ้นเอง
  









·       ระบบเพจ (Paging)
ระบบเพจ หรือระบบการแบ่งหน้า เป็นการจัดการหน่วยความจำวิธีหนึ่ง ซึ่งสามารถทำให้ซีพียูทำการโปรเซสข้อมูลได้ แม้ว่ามีบ่างส่วนของโปรแกรมและข้อมูลอยู่ในหน่วยความจำหลัก ระบบเพจนี้จะแก่ไข้ปัญหาว่าด้วยโปรแกรมที่โหลดเข้ามาในหน่วยความจำมีขนาดใหญ่กว่าหน่วยความจำหลัก แต่ด้วยหลักการของระบบเพจ ก็จะจัดการแบ่งหน่วยความจำออกเป็นเฟรม (Frame) หรือที่เรียกว่าเพจเฟรม (Page Frame) และหน่วยความจำสำรอง เช่น  ฮาร์ดิสก์ที่มีขนาดความจุสูงกว่า และสามารถนำหน่วยความจำทั้งสองรวมเข้าด้วยกันเปรียบเสมือนกับหน่วยความจำหลักขนาดใหญ่ที่สามารถจำหลักขนาดใหญ่ที่สามารถจัดการโปรแกรมขนาดใหญ่ ๆ ได้ระบบแบ่งหน้าหรือระบบเพจทำให้ทำให้สามารถเขียนโปรแกรมที่มีขนาดใหญ่กว่าหน่วยความจำหลักได้ เพราะโปรแกรมไม่ต้องอยู่ในหน่วยความจำทั้งหมดในขณะที่ได้โปรเซสงานนั้นอยู่ ซึ่งระบบเพจนี้ให้เกิดหน่วยความจำ (Vitrual memory) ที่มีขนาดใหญ่กว่าหน่วยความจำจริง ในการแบ่งโปรแกรมและข้อมูลออกเป็นหน้านี้ สามารถมองเห็นได้เฉพาะจากระบบปฎิบัติการและในระบบฮาร์ดแวร์เท่านั้น โดยการแบ่งปันหน้าหรือเพจนั้น ตัวโปรแกรมและตัวแปลโปรแกรม และรวมถึงผู้เขียนหรือผู้ใช้งานโปรแกรมจะไม่สามารถมองเห็น ซึ่งตัวระบบปฎิบัติการจะเป็นตัวอำนวยความสะดวกและจัดการให้ทั้งสิ้น











อ้างอิง https://sites.google.com/site/operatingsytemsyvc/hnwy-khwam-ca-semuxn

http://www.chantra.sru.ac.th/OS.html




ความคิดเห็น