Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

p4

Published by rattikan.vi, 2017-10-18 01:28:55

Description: p4

Search

Read the Text Version

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

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

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

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

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

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

การจดั การหน่วยความจา สว่ นของ OS ท่ีทาหน้าท่ีจดั การกบั หน่วยความจาได้แก่ ตัวจัดการหน่วยความจา (Memory Manager) ซง่ึ มีหน้าท่ีตา่ ง ๆ ดงั นี ้  ตรวจสอบวา่ ส่วนใดของหน่วยความจาที่กาลงั ถูกใชง้ าน ส่วนใดวา่ ง  จดั หน่วยความจาใหก้ บั งานท่ีทางาน  ส่งหน่วยความจาคืนสู่ระบบเมื่องานเสร็จ  จดั การสลบั หน่วยความจาหลกั กบั พ้ืนท่ีฮาร์ดดิสก์ เม่ือหน่วยความจา หลกั มีขนาดเลก็ เกินไปที่จะใหง้ านทางานได้

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

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

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

การจดั การหน่วยความจาหลกั แบบต่าง ๆ• การจดั การหน่วยความจานนั้ มีหลายวธิ ี ตงั้ แตก่ ารจดั การแบบพืน้ ฐาน จนถงึ แบบท่ี ซบั ซ้อน การจดั การหน่วยความจาจงึ มีการแบง่ ออกเป็น 2 ระบบดงั นี ้ • ระบบโปรแกรมเด่ียว (Monoprogramming or Single program) • ระบบหลายโปรแกรม (Multiple program)

ระบบโปรแกรมเด่ียว• เป็นวิธีการจัดการหน่วยความจาที่ง่ายท่ีสุด เน่ืองจากจะมีโปรแกรมเพียง 1 โปรแกรมทางานในขณะใดขณะหนง่ึ• ดังนัน้ การใช้งานหน่วยความจาจะมีเพียงโปรแกรมนัน้ ๆ กับระบบปฏิบัติการเทา่ นนั้ ดงั รูป OS โปรแกรมของผู้ใช้ ว่าง

User Program OS in ROM ระบบโปรแกรมเด่ียว OS in RAM User Program Device in ROM User Program OS in RAM

ระบบโปรแกรมเด่ียว เมื่อหน่วยความจาหลกั ถกู แบง่ ออกเป็น 2 สว่ นแล้ว ตวั OS จงึ จาเป็นต้องมี วธิ ีการปอ้ งกนั ไมใ่ ห้โปรแกรมของผ้ใู ช้รุกลา้ เข้ามาในสว่ นของ OS ถ้า OS ปลอ่ ยให้ผ้ใู ช้เข้ามาใช้หนว่ ยความจาที่ OS ใช้อยู่ โปรแกรมของผ้ใู ช้อาจ ทาลายตวั โปรแกรมของ OS เสียหายจนระบบทางานไม่ได้ วิธีที่นิยมในการปอ้ งกนั การรุกลา้ ได้แก่การสร้างรีจีสเตอร์ขนึ ้ มาในซีพยี ู เรียกวา่ รีจีสเตอร์ขอบเขต (boundary register) รีจีสเตอร์จะทาหน้าท่ีเก็บคา่ แอสเดรสที่เป็นรอยตอ่ ระหวา่ งส่วนของ os และ สว่ นของผ้ใู ช้

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

ระบบหลายโปรแกรม• การแบง่ หน่วยความจาสาหรับระบบหลายโปรแกรมมี 2 แบบ • การแบง่ หน่วยความจาขนาดคงที่ (Fixed partition multi-programming) • การแบง่ หนว่ ยความจาขนาดไมค่ งที่ (Variable partition multi- programming)

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

• การแบง่ หน่วยความจาขนาดคงท่ี แบง่ ได้เป็น 2 แบบ • การแปลงและโหลดด้วยคา่ สมั บรู ณ์ (Absolute translation and loading) • การแปลงและโหลดด้วยคา่ สมั พทั ธ์ (Relocatable translation and loading)

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

การแปลงและโหลดดว้ ยคา่ สมั บูรณ์งานที่เหมาะกบั สว่ นท่ี 1 ควิ ของสว่ นท่ี 1 OS 65000งานที่เหมาะกบั สว่ นที่ 2 ควิ ของสว่ นที่ 2 สว่ นที่ 1 60000 ควิ ของสว่ นที่ 3งานทเ่ี หมาะกบั สว่ นที่ 3 สว่ นที่ 2 50000 สว่ นท่ี 3 0

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

การแปลงและโหลดดว้ ยค่าสมั พทั ธ์• เพื่อแก้ปัญหาท่ีเกดิ ขนึ ้ ในการแปลงและโหลดด้วยคา่ สมั บรู ณ์ จงึ ทาให้เกิดวธิ ีการที่ เรียกวา่ การแปลงและโหลดด้วยคา่ สมั พทั ธ์• งานจะถกู แปลงให้ได้แอดเดรสเป็นคา่ สมั พทั ธ์กบั จดุ เริ่มต้นของงาน จดุ เร่ิมต้นของ งานกค็ ือแอดเดรส 0 นน่ั เอง• ถ้างานมีขนาด 100 byte เมื่องานถกู โหลดลงในหน่วยความจาหลกั จะไมร่ อให้ แอดเดรส 0 ถงึ 100 วา่ ง แตจ่ ะโหลดลงสว่ นที่มีขนาดมากกวา่ หรือเทา่ กบั ขนาด ของงาน• ดงั นนั้ ควิ งานจงึ ไมจ่ าเป็นต้องเป็น Multiple Queues ใช้เป็น Single Queues

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

การแปลงและโหลดดว้ ยคา่ สมั พทั ธ์ OS 65000ควิ สว่ นท่ี 1 60000 สว่ นที่ 2 50000งาน สว่ นท่ี 3 0

การแปลงและโหลดดว้ ยคา่ สมั พทั ธ์• การปอ้ งกนั OS ในระบบหลายโปรแกรมประเภทแบง่ หนว่ ยความจานิยมใช้ รีจีสเตอร์ขอบเขตหลาย ๆ ตวั สว่ นยอ่ ยแตล่ ะสว่ นจะใช้รีจีสเตอร์ขอบเขต 2 ตวั ใน การแยกแยะสว่ นแตล่ ะสว่ น เรียกวา่ รีจีสเตอร์ขอบเขตบน (high boundary register) และรีจีสเตอร์ขอบเขตลา่ ง (Low boundary register)• โปรแกรมของผ้ใู ช้สามารถข้ามเข้าไปในขอบเขตของ OS ได้โดยผา่ นทางคาสงั่ เรียกระบบ

ขอ้ เสียของการแบ่งหน่วยความจาขนาดคงที่การแบง่ หน่วยความจาขนาดคงทเ่ี ป็นวิธีการที่ง่ายและไมซ่ บั ซ้อนตอ่ การสร้าง OS อยา่ งไรก็ตามมขี ้อเสียดงั นี ้• พนื ้ ทที่ ่กี าหนดให้มีขนาดและจานวนทค่ี งที่เม่ือระบบเร่ิมทางานนนั้ จะเป็นตวั จากดั จานวนของงานท่ีสามารถเข้ามาใช้ระบบได้• เนื่องจากระบบมีการกาหนดพนื ้ ทแี่ บบคงที่ ดงั นนั้ งานทีม่ ขี นาดเลก็ จะไมส่ ามารถใช้พนื ้ ที่ ของหนว่ ยความจาได้อยา่ งเตม็ ประสทิ ธิภาพ• การจดั แบง่ พนื ้ ทีแ่ บบคงท่ีจะทาให้เกิดสว่ นทไี่ มถ่ กู ใช้งาน ซงึ่ เราเรียกวา่ เกิดการแตก กระจาย (Fragmentation) ซงึ่ มีอยู่ 2 รูปแบบ • การแตกกระจายภายนอก (External fragmentation) • การแตกกระจายภายใน (Internal fragmentation)

OS ขอ้ เสียของการแบ่งหน่วยความจาขนาดคงท่ี การแตกกระจายภายนอก สว่ นที่ 1 การแตกกระจายภายใน วา่ ง สว่ นที่ 2(งานของผ้ใู ช้) สว่ นท่ี 3(งานของผ้ใู ช้)

การแบ่งหน่วยความจาขนาดไม่คงที่ จากปัญหาท่พี บของการทางานของการแบง่ หน่วยความจาขนาดคงที่ ผ้อู อกแบบ OS จงึ ได้ทาการปรับปรุงการแบง่ หนว่ ยความจาให้ดีขนึ ้ โดยระบบจะกาหนดให้มีการแบง่ หน่วยความจาตามความต้องการของงาน และไม่ มีการจากดั ขอบเขตของหนว่ ยความจาหลกั การแบง่ หนว่ ยความจาแบบนีเ้รียกวา่ การแบ่งหน่วยความจาขนาดไม่คงท่ี

การแบ่งหน่วยความจาขนาดไม่คงที่ตวั อยา่ ง ถ้าเรามีหนว่ ยความจาหลกั ทงั้ หมด 1 MB ดงั รูป OS OS 128 K 320 Kว่าง 896 K โปรเซส A 320 K (ต้องการ 320 K) ว่าง 576 K

การแบ่งหน่วยความจาขนาดไม่คงที่ตวั อยา่ ง ถ้าเรามีหนว่ ยความจาหลกั ทงั้ หมด 1 MB ดงั รูปOS OS A 320 KA 320 K B 224 K ว่าง 352 K โปรเซส B (ต้องการ 224 K)ว่าง 576 K

การแบ่งหน่วยความจาขนาดไม่คงที่ตวั อยา่ ง ถ้าเรามีหนว่ ยความจาหลกั ทงั้ หมด 1 MB ดงั รูปOS OSA 320 K A 320 KB 224 K โปรเซส C B 224 K (ต้องการ 288 K) C 288 K ว่าง 64 Kว่าง 352 K

การแบ่งหน่วยความจาขนาดไม่คงท่ีตวั อยา่ ง ถ้าเรามีหน่วยความจาหลกั ทงั้ หมด 1 MB ดงั รูปOS OSA 320 K A 320 KB 224 K โปรเซส D B 224 K (ต้องการ 128 K) C 288 K ว่าง 64 KC 288 Kว่าง 64 K

การแบ่งหน่วยความจาขนาดไม่คงที่ตวั อยา่ ง ถ้าเรามีหนว่ ยความจาหลกั ทงั้ หมด 1 MB ดงั รูปOS OSA 320 K A 320 KB 224 K โปรเซส B ว่าง 224 K (ทางานเสร็จ) C 288 K ว่าง 64 KC 288 Kว่าง 64 K

การแบ่งหน่วยความจาขนาดไม่คงที่ตวั อยา่ ง ถ้าเรามีหน่วยความจาหลกั ทงั้ หมด 1 MB ดงั รูปOS OSA 320 K A 320 KB 224 K โปรเซส D D 128 K (ต้องการ 128 K) ว่าง 96 KC 288 K C 288 Kว่าง 64 K ว่าง 64 K

การแบ่งหน่วยความจาขนาดไม่คงท่ี จากรูปจะเหน็ วา่ เมือ่ ระบบทางานไปได้สกั ระยะหนงึ่ เราจะพบช่องวา่ งเกิดขนึ ้ อยา่ ง มากมายในหน่วยความจาหลกั ซงึ่ จะทาให้การใช้งานหน่วยความจาหลกั มี ประสทิ ธิภาพลดลง เราเรียกช่องวา่ งเลก็ ๆ เหลา่ นีว้ า่ การแตกกระจายภายนอก (External fragmentation) ดงั น้นั การที่จะวางโปรเซสลงในหน่วยความจาหลกั น้นั จะตอ้ งมีการตดั สินใจท่ีดี ซ่ึง OS เรียกว่า การจัดยุทธวธิ ีการวาง

การจดั ยทุ ธวิธีการวาง• เมื่อมีโปรเซสถกู สง่ เข้ามาในหน่วยความจาหลกั ซง่ึ ขณะนนั้ หนว่ ยความจาหลกั อาจมีชอ่ งวา่ งเกิดขนึ ้ กระจายไปทวั่• การจะจดั วา่ โปรเซสใดควรจะวางไว้ในช่องวา่ งใด มีวธิ ีการอยู่ 3 แบบดงั นี ้• เลือกช่องวา่ งทพี่ บกอ่ น (First-Fit)• เลือกช่องวา่ งท่ีเหมาะสม (Best-Fit)• เลือกช่องวา่ งท่ีใหญ่ท่ีสดุ (Worst-Fit)

เลือกช่องวา่ งท่ีพบก่อน (First-Fit)• วิธีการนี ้OS จะตรวจหาช่องวา่ งในหน่วยความจา เม่ือใดท่ีพบช่องวา่ งที่ มีขนาดใหญ่พอที่จะวางโปรเซสใหมล่ งไปได้ OS จะเลอื กชอ่ งวา่ งนนั้ ทนั ที ทาให้การเลือกช่องวา่ งทาได้รวดเร็ว

เลือกช่องวา่ งที่เหมาะสม (Best-Fit)• วธิ ีการนี ้OS จะตรวจหาช่องวา่ งท่ีมีอยใู่ นหน่วยความจาทงั้ หมด แล้วเลอื กเอา ช่องวา่ งทเ่ี มอ่ื วางโปรเซสลงไปแล้วจะเกิดช่องวา่ งขนาดเลก็ ที่สดุ

เลือกช่องวา่ งที่ใหญ่ที่สุด (Worst-Fit)• เลอื กช่องวา่ งทีใ่ หญ่ท่ีสดุ (Worst-Fit)• การเลือกชอ่ งวา่ งแบบนีจ้ ะตรงกนั ข้ามกบั แบบท่ี 2 OS จะเลอื กช่องวา่ งท่ีเม่ือวาง โปรเซสลงไปแล้วจะเกิดชอ่ งวา่ งขนาดใหญ่ที่สดุ

OS16 Kใช้งาน14 K โปรเซสใหม่ ขนาด 13Kใช้งาน 5Kใช้งาน คาถาม จงใช้ยทุ ธวิธีทงั ้ 3 แบบวางโปรเซสใหมน่ ี ้30 K

การรวมโฮล (Coalescing Holes)• เม่ือมีชอ่ งวา่ ง 2 ช่องติดกนั ในหน่วยความจา OS สามารถที่จะรวมช่องวา่ งทงั้ 2 นีเ้ป็นช่องวา่ ง ขนาดใหญ่ช่องเดียว ซงึ่ เราเรียกวา่ การรวมโฮล (Coalescing Holes) OS โปรแกรม OS OSโปรแกรมอ่ืน ๆ A จบ โปรแกรมอื่น ๆ โปรแกรมอ่ืน ๆ 2K 2K 7Kโปรแกรม A 5 K 5K โปรแกรมอื่น ๆโปรแกรมอ่ืน ๆ โปรแกรมอ่ืน ๆ

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

การบีบอดั หน่วยความจา (Storage Compaction) OS OS16 K ใช้งาน 1 ใช้งาน 2ใช้งาน 1 ใช้งาน 314 Kใช้งาน 2 ว่าง 5Kใช้งาน 330 K

การบีบอดั หน่วยความจา (Storage Compaction)ข้อเสยี ของการบีบอดั หน่วยความจา• ระบบจะต้องหยดุ การทางานของโปรเซสทกุ โปรเซสไว้ชว่ั ขณะหนงึ่ เพื่อท่ีจะทาการ บีบอดั• ซงึ่ อาจจะต้องใช้เวลามากทาให้การทางานของระบบช้าลง โดยเฉพาะกบั การ ทางานในระบบโต้ตอบ (Interactive)

ระบบหลายโปรแกรมแบบสลบั หน่วยความจาระบบหลายโปรแกรมแบบสลบั หนว่ ยความจา (multiprogramming with storageswapping)• เป็นการสลบั โปรแกรมไปสหู่ นว่ ยความจาสารองเมือ่ โปรแกรมไมต่ ้องการหนว่ ยความจา หลกั เรียกวา่ การสลบั ออก (swapped out) และนาโปรแกรมเข้ามาใช้หนว่ ยความจาใหม่ เมื่อต้องการใช้หนว่ ยความจาเรียกวา่ การสลบั เข้า (swapped in)• โปรแกรมจะอย่ใู นหน่วยความจาและถกู สลบั ออกเมื่อเกิดเหตกุ ารณ์ 3 กรณี คือ • โปรแกรมจบ • โปรแกรมต้องการใช้งานอนิ พตุ -เอาต์พตุ • หมดเวลาควอนตมั

ระบบหลายโปรแกรมแบบสลบั หน่วยความจา OS สลับเข้า Dโปรแกรมของผ้ใู ช้ swapped In B ACวา่ ง สลับออก โปรแกรมของผู้ใช้ swapped out

การทาโอเวอร์เลย์• เน่ืองจากโปรแกรมของผ้ใู ช้มีขนาดใหญ่กวา่ หน่วยความจาหลกั จงึ ต้องแก้ปัญหานี ้ ถ้าเป็นกรณีโปรแกรมเดี่ยวจะแก้ปัญหาด้วยการทาโอเวอร์เลย์• การทาโอเวอร์เลย์ (overlay) เป็นหน้าท่ีของผ้เู ขียนโปรแกรมเอง OS ไมไ่ ด้ จดั การ ให้• ผ้เู ขียนโปรแกรมแบง่ โปรแกรมออกเป็นสว่ นยอ่ ยหลาย ๆ สว่ น แตล่ ะสว่ นต้องมี ขนาดเลก็ กวา่ หน่วยความจา อาศัยหลักการสลับโปรแกรม โดยท่สี ว่ นแรกจะอยู่ ในหนว่ ยความจาตลอดเวลาแล้วโหลดสว่ นอื่นเข้ามาทบั

OS โปรแกรมหลัก โปรแกรมย่อย สว่ นท่ี 1 สว่ นท่ี 2 โปรแกรมของผู้ใช้แบ่งเป็ นส่วนย่อยต่าง ๆหน่วยความจา

หน่วยความจาเสมือน (Virtual Memory)• การใช้หนว่ ยความจาของโปรแกรมผ้ใู ช้ที่กลา่ วมานนั้ จะเหน็ วา่ ขนาดของโปรแกรม ต้องมีขนาดเลก็ กวา่ ขนาดของหนว่ ยความจาท่ีเหลอื อยู่• แตถ่ ้าโปรแกรมของผ้ใู ช้มีขนาดใหญ่กวา่ ไมว่ า่ เราจะใช้วธิ ีการจดั การ หน่วยความจาทีก่ ลา่ วมาแล้วชนดิ ใดก็ตามไมส่ ามารถจะทางานได้• ดงั นนั้ ถ้าโปรแกรมของผ้ใู ช้มีขนาดใหญ่กวา่ หน่วยความจาที่เหลือ เราแก้ปัญหา โดยใช้หนว่ ยความจาเสมือน (Virtual Memory)• ใช้ในกรณีแบบหลายโปรแกรม


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook