บทท่ี 7 หนว่ ยความจํา(Memory)การบริหารหนว่ ยความจาํ • หนว่ ยความจาํ เปน็ ทรพั ยากรสาํ คญั ของระบบคอมพวิ เตอร์ ทาํ หน้าทเ่ี กบ็ ข้อมูลต่าง ๆ รวมทั้งคาํ ส่ัง และผลลัพธท์ ี่ได้จากการ ทํางาน โดยลําดบั ชนั้ ของหน่วยความจาํ แบ่งเป็น 3 กล่มุ คือ 1 2การจดั การหนว่ ยความจาํ หลกั• ในการทาํ งานแตล่ ะคาํ ส่ังของโปรแกรมตามรอบคาํ สง่ั เคร่อื ง ซพี ยี ทู าํ หน้าท่ี • Logical address • Virtual Addressดงั น้ี Fetch • ที่อยูเ่ สมอื น แอด็ เดรสเสมอื น แอด็ เดรสตรรกะ– อา่ นคาํ สงั่ (Fetch) จากหนว่ ยความจาํ หลกั • Physical Address • Real address– ถอดรหสั คาํ สง่ั (Decoding) Excute Decode • ท่อี ยกู่ ายภาพ แอ็ดเดรสกายภาพ แอด็ เดรสจริง– แปลความหมาย(Compile)– สร้างสญั ญาณควบคมุ (Control signal) เพื่อสง่ั ให้ซพี ียทู ําการประมวลผล (Execute)• หลังจากประมวลผลเสรจ็ แล้วอาจมีผลลพั ธ์ทจ่ี าํ เป็นต้องเก็บไว้ใน 4 หน่วยความจําหลกั โดยที่ในการเข้าถึงหนว่ ยความจาํ หลกั จาํ เป็นต้องมี การระบตุ าํ แหนง่ ของหน่วยความจาํ หลกั ดว้ ย 3
การท่ีระบบคอมพวิ เตอรม์ ีสามารถประมวลผลโปรแกรมได้ หนา้ ทข่ี องระบบปฏบิ ัติการในการจัดการหนว่ ยความจาํ หลาย ๆ โปรแกรม(Multiprogramming) โดยแต่ละโปรแกรม จะแยง่ กันใช้หน่วยความจาํ ปญั หาทีต่ ามมาก็คอื ไม่มี – จัดหาทีว่ ่างให้โปรแกรมเข้าไปใช้หน่วยความจําได้ หนว่ ยความจํามากเพียงพอสําหรบั ทุกโปรแกรม นกั คอมพวิ เตอร์ – กําหนดระยะเวลาการทาํ งานของแตล่ ะโปรแกรมในหน่วยความจํา จึงหาวิธีทีจ่ ะแก้ปัญญาหนว่ ยความจาํ ไม่เพียงพอ วิธที ่ีนยิ มใช้ก็ – การแปลงชือ่ และตาํ แหน่งแอดเดรสของหนว่ ยความจํา คอื การทําหน่วยความจาํ เสมอื น (Virtual Memory) ซึ่ง – เรยี งลาํ ดับก่อนหลังของโปรแกรมในการขอเขา้ ไปใช้หน่วยความจาํ ระบบปฏิบตั กิ ารมหี นา้ ทีร่ ับผดิ ชอบในการแบ่งหน่วยความจาํ – ใช้มาตรการที่เหมาะสมในการจดั การหน่วยความจาํ และมอบใหแ้ ก่โปรเซสตา่ ง ๆ ซงึ่ ก็คอื หนว่ ยบริหารจดั การ หนว่ ยความจาํ (Memory management) 6 5 • ระบบปฏิบตั ิการจะมกี ารสรา้ งแถวคอยหรอื ควิ เพือ่ ใหโ้ ปรเซสทร่ี อคอยการทาํ งานหรอื รอคอยทรัพยากรอยู่ แบง่ เปน็ ควิ ระยะยาว (Long-term Queue) สาํ หรบั เกบ็ งานที่• โปรเซส หมายถงึ โปรแกรมท่ีอยรู่ ะหวา่ งการทํางาน(execute) ตอ้ งการเขา้ มาใชร้ ะบบ คิวระยะสน้ั (Short-term Queue) สาํ หรับเก็บโปรเซสทมี่ ี ซงึ่ ในการทํางานจาํ เปน็ ตอ้ งใชท้ รัพยากกรตา่ งๆ ของระบบ เชน่ สถานะพรอ้ ม(ready) ทรี่ อคอยการใชโ้ ปรเซสเซอร์ และควิ สาํ หรับอปุ กรณไ์ อโอตา่ ง ๆ หนว่ ยประมวลผลกลาง อปุ กรณร์ ับ/ส่งขอ้ มลู หน่วยความจาํ สําหรบั เก็บโปรเซสท่ียงั ไมพ่ ร้อมทาํ งาน หลัก Admit Long-term Short-term End 7 queue queue Processor I/O 1 occurs I/O 1 Queue I/O 2 occurs I/O 2 Queue I/O n occurs . . . 8 I/O n Queue
กระบวนการจดั การหนว่ ยความจํา 10• การสับเปลี่ยน(Swapping)• การทําพาร์ติชน่ั (Partitioning) 9 • Long-term queue สาํ หรบั โปรเซสท่รี อ้ งขอการเข้าใชโ้ ปรเซสเซอร์ ซึ่งจะเก็บไวท้ ี่ ดสิ ก์ และโปรเซสเหลา่ นจ้ี ะถกู นาํ เข้าสูห่ นว่ ยความจาํ กต็ อ่ เมอื่ มพี นื้ ทที่ ส่ี ามารถใช้ งานได้เทา่ นน้ั แต่เพยี งครั้งละ 1 Process เมอ่ื โปรเซสตา่ ง ๆ ทํางานเสรจ็ ส้ินก็จะ ยา้ ยโปรเซสเหลา่ นนั้ ออกจากหนว่ ยความจาํ หลกั11 12
• Long-term queue สําหรับ การทาํ พาร์ติชนั (Partitioning) • การทําพาร์ติชัน (Partition) หมายถงึ การแบง่ หนว่ ยความจํา ออกเป็นส่วน ๆ วิธีทีง่ ่ายที่สุดคอื การทาํ พาร์ติชันแบบขนาดคงท่ี (Fixed-size Partition) ไม่ได้หมายความว่าจะต้องมขี นาดที่ เทา่ กัน เม่อื โปรเซสถูกนําเข้าสู่หนว่ ยความจาํ จะถูกนําไปใส่ใน พืน้ ทีเ่ ล็กทสี่ ุดที่จะสามารถใส่โปรเซสนนั้ ได้ 13 14 15 16
17 18 ถา ระบบคอมพวิ เตอรทํางานในลักษณะอนุญาตใหมเี พยี ง 1 โปรเซสทํางาน ณ เวลาใด ๆ ตัวอยาง เชน เมื่อผูใชพิมพคาํ สัง่ ใน MS-DOS ระบบปฏบิ ัติการก็จะทาํ การกอบปโปรเซสท่ี เรียกใชจากดสิ กไปยังหนวยความจาํ หลักและทาํ งาน เมื่อโปรเซสนั้นทาํ งานเสร็จ ระบบปฏบิ ัตกิ ารก็จะแสดงคอมมานดพ รอมต(Command Prompt) และรอใหผใู ชเ รียกคาํ สัง่19 ตอไป เมื่อผใู ชพ มิ พคาํ สัง่ ใหม ระบบปฏิบัตกิ ารก็จะกอบปโ ปรแกรมใหมท ับของเกาไป20
21 2223 24
Process1 = 1K 8KProcess2 = 9K 32KProcess3 = 9K 32K 120KProcess4 = 83K 520KProcess4 = 121K25 26 วาง(32K) วาง(128K) วา ง(256K)27 28
29 3031 32
33 หน่วยความจาํ เสมอื น ตัวอย่างเชน่ • จากการท่ี primary memory มีจาํ กัด ขณะที่บางขณะมีความ ต้องการใช้งานมากกว่า memory ท่ีมี การท่ีจะปฏเิ สธการขอใช้งาน• โปรแกรมท่ีต้องการใช้หน่วยความจํา 100 MB สามารถทํางานบนเครื่องที่ หรอื การให้รอจนกว่าจะมี memory ว่าง นอกจากจะไม่ตอบสนอง มหี นว่ ยความจาํ 64 MB ได้ โดยการเลอื กเอาบางส่วนของโปรแกรมขนาด ตอ่ ความตอ้ งการใชง้ านแลว้ อาจทาํ ใหร้ ะบบโดยรวมชา้ หรือมีผล 64 MB เข้ามาทํางานในหนว่ ยความจาํ หลกั และบางสว่ นเก็บไว้ใน เสยี หายกับงานบางประเภททีต่ ้องการการตอบสนองโดยทันที ฮาร์ดดิสก์และทําการสลับเปลี่ยนไปมาเม่ือมีบางส่วนของโปรแกรมต้องการ ทํางาน • การไปใชพ้ น้ื ทีบ่ างสว่ นของ hard disk เสมอื นเปน็ สว่ นหนึง่ ของ memory เพอ่ื ใหโ้ ปรแกรมทัง้ หมดทํางานตอ่ ไปได้ตามต้องการ 35 นอกจากจะเปน็ การตอบสนองต่อผู้ใช้แล้ว ยงั เป็นการใช้ทรัพยากร อยา่ งคมุ้ ค่าอกี ดว้ ย • Virtual memory คือ เทคนคิ การใช้ hard disk เสมือนเปน็ memory เพื่อที่จะสามารถรนั โปรแกรม(และอืน่ ๆ)รวมกันแล้วมี ขนาดมากกว่า primary memory ท่ีมอี ยจู่ รงิ ได้ 34 • ขอ้ ดีของหนว่ ยความจําเสมือน คือ โปรแกรมมีขนาดใหญ่กวา่ หนว่ ยความจําจริงได้ เพราะจะมกี ารสรา้ งหนว่ ยความจาํ ทาง ตรรกะ ใหด้ เู สมอื นว่ามีหน่วยความจําขนาดใหญ่ โดยแยกภาพ ท่ีผูใ้ ช้มองเห็นหนว่ ยความจําออกจากลกั ษณะจริงของฮาร์ดแวร์ ทาํ ใหผ้ ูเ้ ขยี นโปรแกรมไม่ตอ้ งกังวลถึงขนาดของหนว่ ยความจาํ แต่การสร้างหนว่ ยความจาํ เสมือนอาจทาํ ใหป้ ระสิทธิภาพของ ระบบทํางานช้าลง ถา้ มีการออกแบบท่ีไม่รอบคอบ 36
• จากภาพ เปน็ การแบ่ง โปรเซสออกเป็นเพจ และนําไปใสใ่ น หนว่ ยความจาํ ท่ีแบ่ง ออกเป็นเฟรม จะเหน็ วา่ โปรเซส A แบ่ง ออกเป็น 4 เพจ และ พ้ืนท่ใี นหนว่ ยความจํา วา่ งเฟรมที่ 13 14 15 18 และ 20 เม่อื จะทํา การประมวลผลโปรเซส A จงึ นาํ โปรเซส A ท่ี แบ่งออกเปน็ เพจ เข้าสู่ หน่วยความจําตาม เฟรมท่ีวา่ ง37 38 ตารางหนา้ (Page Table) • เปน็ การเช่ือมโยงคา่ ของตาํ แหนง่ ทางตรรกะ(Virtual Address) ไปหาค่า เลขที่เฟรมท่ีอยใู่ นหน่วยความจาํ • กระบวนการพ้ืนฐานในการอา่ นขอ้ มลู ขนาดหนึ่งคาํ (Word) จาก หน่วยความจาํ เกย่ี วขอ้ งกับการแปลงท่อี ยู่เสมือน(Virtual Address) หรอื ที่ อยู่ตรรกะ(Logical Address) ซงึ่ ประกอบดว้ ย – หมายเลขหน้า(Page Number) และ – ออฟเซต็ (Offset) – ใหก้ ลายเป็นที่อยู่ทางกายภาพ (Physical Address) ซงึ่ ประกอบด้วยหมายเลข เฟรม(Frame Number) และคา่ ออฟเซต็ โดยการใชต้ ารางเพจ(Page Table) • เนอ่ื งจากตารางเพจมขี นาดทไ่ี มแ่ นน่ อน ขนึ้ อยกู่ บั ขนาดของโปรเซสจงึ ไม่ สามารถนาํ ไปเก็บไว้ในเรจสิ เตอรไ์ ด้ ดังนน้ั ตารางเพจเองจงึ ถูกเกบ็ ไว้ใน หน่วยความจาํ เชน่ เดยี วกบั โปรเซส39 40
41 • เม่อื มีโปรเซสหน่งึ เร่ิมทํางาน ระบบปฏิบัติการจะทาํ การโหลดเรจิสเตอร์ ดว้ ยตารางหน้าของโปรเซสนัน้ ๆ โดยทําการสําเนาจากหน่วยความจาํ• โดยปกติกระบวนการแต่ละกระบวนการต้องมีตารางเลขหน้าของ หลัก ก็จะทําใหเ้ ราไม่ต้องอา้ งถึงหนว่ ยความจําอีกในขณะที่โปรเซสกําลงั ตัวเอง ซง่ึ ตารางเลขหน้าดงั กล่าวใชจ้ ับคู่ระหว่างตําแหน่งทางตรรกะ ทาํ งาน และข้อดขี องวธิ นี ี้ก็คือ เปน็ วิธที ง่ี า่ ยและไมต่ อ้ งทาํ การอา้ งถงึ กบั ตาํ แหนง่ ทางกายภาพ ซึง่ ตารางดังกลา่ วจะใช้หน่วยความจําทาง หนว่ ยความจาํ อีกเมื่อทาํ การเชอ่ื มโยงตําแหน่ง(Address) แต่ข้อเสยี กค็ ือ กายภาพจํานวนมาก เพือ่ แกป้ ญั หาน้ีเราควรใช้ ตารางเลขหนา้ แบบ ถ้าตารางของหน้ามีขนาดใหญ่ก็จะทาํ ให้ระบบมปี ระสทิ ธิภาพในการทาํ งาน ผกผนั ตํ่าลง เพราะการโหลดตารางหน้าท้ังหมดน้ันจะช้าเวลานาน• ตารางหนา้ แบบผกผนั จะมีอยู่ช่องหนง่ึ สาํ หรบั เกบ็ หน้าที่แทจ้ รงิ 42 (frame) ของหน่วยความจาํ (แต่ละชอ่ งประกอบไปดว้ ยตําแหนง่ เสมอื นของหนา้ ทบ่ี รรจใุ นตาํ แหนง่ จรงิ ของหนว่ ยความจําซึง่ • Page number(p) สารสนเทศเกีย่ วกับกระบวนการจะเกบ็ ไว้เองในหนา้ นัน้ ๆ) ดงั นน้ั จะ • Page offset(d) มีตารางเลขหนา้ เพยี งตารางเดยี วในระบบ และมีเพยี ง 1 ช่องสําหรับ • Frame number(f) แตล่ ะหน้าของหนว่ ยความจาํ ทางกายภาพ ดงั รูปถดั ไป 44 43
การทาํ งานของตารางหนา้ 45 บัพเฟอรค์ ้นหาทอ่ี ยู่ (Translation Lookaside Buffer:TLB ) 47 • ทกุ ครงั้ ทีม่ กี ารอ้างองิ ทีอ่ ย่เู สมือนจะมีการอ่านข้อมูลจาก หน่วยความจาํ หลักถึง 2 ครงั้ – ครงั้ ที่ 1 อ้างองิ หมายเลขเพจท่ีตอ้ งการ และ – คร้งั ท่ี 2 อ่านข้อมลู ที่ต้องการนาํ ไปใช้จรงิ การทาํ งานของหนว่ ยความจาํ เสมือนใช้เวลาในการเข้าถึง หนว่ ยความจาํ เปน็ 2 เท่า วิธกี ารปอ้ งกนั ปญั หาดงั กล่าวสามารถทาํ ได้โดยใช้แคชหรือ หนว่ ยความจําพิเศษในการเกบ็ แถวของตารางหน้า ท่ีเราเรียกกันวา่ บพั เฟอรค์ น้ หาทอี่ ยู่ (TLB) โดยแคชนีจ้ ะทําหน้าทีเ่ กบ็ แถวของ ตารางหนา้ ท่ีพึง่ ใช้เรยี กใช้งานเสร็จ 46 บัพเฟอรคน หาที่อยู (Translation Lookaside Buffer) เมือ่ มีการใหค า แอด็ เดรสเสมือนกบั ระบบ โปรเซสเซอรจ ะทาํ การสืบคน ในตาราง TLB กอน ถา พบแถวที่ตองการในตารางหนา (TLB hit) เราก็สามารถเกบ็ เลขที่เฟรมและแปลงเปน แอด็ เดรสจรงิ ไดเลย แตถา ไมพบแถวที่ตอ งการ (TLB miss) โปรเซสเซอรห รือซีพียูก็ จะตอ งใชเ ลขที่หนา ไปเปรียบเทียบกับอนิ เดก็ ซของตารางหนา เพื่อ หาแถวทีต่ อ งการ และซีพียูกจ็ ะทําหนา ทีเ่ พม่ิ TLB ใหมีแถวของ ตารางหนา ใหมนีด้ วย 48
49 การแบง่ เปน็ เซก็ เมนต์(Segmentation)• Logical address การแบง่ แบบนมี้ ีลกั ษณะการทาํ งานคลา้ ยกบั การแบง่ เปน็ หน้าของ 16 บิต แบง่ เป็น โปรเซส – Segment 4 บิต แตก่ ารแบง่ แบบเซ็กเมนต์ หรือ segmentation นั้น จะแบ่งโปรเซส แรก คอื 0001 หรอื โปรแกรมออกเปน็ สว่ น ๆ โดยแตล่ ะสว่ นนัน้ ไมจ่ าํ เปน็ ตอ้ งมคี วาม ยาวเท่ากนั (แต่ก็อาจจะมกี ารกาํ หนดให้อย่ภู ายใตข้ นาดทีใ่ หญ่ทส่ี ุดท่ี – Offset 12 บิต หลัง ระบบกําหนดได้) คือ 001011110000 การแปลงแอด็ เดรสทางตรรกะเป็นแอ็ดเดรสจริงในหนว่ ยความจํา จะต้องใช้ข้อมลู 2 ส่วน คอื เลขที่ของเซก็ เมนต์(Segment 51 number) และ ระยะเริ่มต้นจากเซ็กเมนตน์ น้ั (offset) 50 โครงสร้างทอ่ี ยใู่ นรูปแบบเซก็ เมนต์นี้มขี ้อไดเ้ ปรียบอยหู่ ลายประการ คอื • ช่วยใหก้ ารบรหิ ารโครงสร้างของขอ้ มลู ทม่ี กี ารเติบโตข้นึ นั้นทาํ ไดง้ ่าย ในกรณีที่ นักพัฒนาโปรแกรมไมท่ ราบขนาดของขอ้ มลู เปน็ การลว่ งหนา้ กไ็ มม่ คี วามจาํ เป็น จะตอ้ งเดาหรอื สามารถคาดเดาใหเ้ ปน็ ขนาดเทา่ ใดกไ็ ด้ เนอ่ื งจากขอ้ มลู จะถกู กาํ หนดใหเ้ กบ็ ไวเ้ ปน็ เซ็กเมนต์หนงึ่ ซงึ่ ระบบปฏบิ ตั กิ ารจะเขา้ มาจดั การขยายขนาดให้ ใหญข่ ้นึ หรอื ลดขนาดให้เลก็ ลงตามความต้องการท่เี กดิ ขึ้นจรงิ • ชว่ ยใหแ้ ต่ละสว่ นของโปรแกรมเป็นอสิ ระตอ่ กัน คอื สามารถแกไ้ ขใหมไ่ ดโ้ ดยจะไมเ่ ขา้ ไปเกย่ี วข้องกับโปรแกรมสว่ นอนื่ ที่อยคู่ นละเซ็กเมนต์ • สามารถทําใหเ้ กดิ การใช้เซ็กเมนต์ร่วมกนั ระหว่างโปรเซสต่างกันได้ นักพฒั นา โปรแกรมสามารถสรา้ งเซก็ เมนต์อิสระทีบ่ รรจโุ ปรแกรมหรอื ขอ้ มูลท่เี ปน็ ประโยชน์ ที่ โปรเซสต่าง ๆ สามารถนาํ ไปใช้งานได้ • สามารถกําหนดวธิ กี ารป้องกนั ไดโ้ ดยอิสระ เน่ืองจากแตล่ ะเซก็ เมนต์ถูกสร้างขึ้นมา ใหม้ โี ครงสรา้ งเฉพาะสาํ หรบั โปรแกรมหรอื ขอ้ มลู แตล่ ะสว่ น ทาํ ใหน้ กั พัฒนาโปรแกรม หรอื ผ้บู รหิ ารศนู ย์คอมพวิ เตอรส์ ามารถกาํ หนดสทิ ธกิ ารใชง้ านให้แกเ่ ซก็ เมนต์นนั้ ๆ ไดโ้ ดยอสิ ระ 52
• ขอ้ ได้เปรียบเหล่านี้ไมม่ ีอยใู่ นเทคนคิ การใช้หนว่ ยความจาํ แบบ เพจจงิ ดั้งนน้ั จงึ มบี างระบบทไี่ ดร้ วมเทคนคิ ทงั้ สองแบบนีเ้ ข้า ดว้ ยกันเรียกว่า การสลับหน้าแบบแบง่ สว่ น(Paging Segmentation) ซง่ึ เปน็ วธิ ีการที่ซบั ซอ้ นมาก และจําเป็นต้อง อาศยั การสนบั สนุนจากทง้ั ฮาร์ดแวร์และระบบปฏบิ ตั ิการ 53
Search
Read the Text Version
- 1 - 14
Pages: