Make your own free website on Tripod.com

 

 

 

 

 

 

      การจัดการอุปกรณ์

ในบรรดาหน่วยความจำรอง เราถือจานแม่เหล็กหรือจานบันทึก (magnetic-disk) เป็นอุปกรณ์หลักที่ต้องคำนึงถึง เพราะเป็นหน่วยความจำรองที่ต่อตรงกับเครื่อง (on-line storage) และมีความเร็วและความจุเป็นอันดับรองจากหน่วยความจำหลักในลำดับชั้นของหน่วยความจำ แม้ว่าจะมีหน่วยความจำรองประเภทกระบอกแม่เหล็ก (magnetic drum) ซึ่งเร็วกว่าจานบันทึก แต่กระบอกแม่เหล็กนั้นไม่เป็นที่นิยมแล้วในปัจจุบัน เพราะมีราคาสูงมากและการใช้งาน ไม่สะดวกเท่าจานบันทึก

     โครงสร้างของจานบันทึก

จานบันทึกมีลักษณะเป็นจานกลมแบน ซึ่งมีสารแม่เหล็กฉาบไว้ที่ผิว ปกติจัดซ้อนหลายๆ แผ่นเป็นตั้ง (pack) โดยใช้แกนหมุน (spindle) ร่วมกัน เนื้อที่ในการเก็บข้อมูลบนแต่ละจานแบ่งเป็นร่อง (track) ซึ่งเป็นแนววงแหวนซ้อนกันอยู่ ข้อมูลจะเก็บไว้ในร่องนี้เรียงต่อเนื่องกันบิตต่อบิตและแต่ละร่องจะถูกแบ่ง ออกเป็นเสี้ยว (sector) โดยปกติแต่ละเสี้ยวจะเก็บข้อมูลได้หนึ่งระเบียนพอดี สำหรับกรณีที่มีหลายแผ่นซ้อนกันอยู่ ร่องที่อยู่ตรงกันในแนวตั้งจะรวมกันเป็นกระบอก (cylinder) ในการใช้บริเวณเก็บข้อมูลบนจาน ทำโดยผ่านหัวอ่าน/บันทึก (read-write head) ซึ่งต่ออยู่กับแขน (boom) ที่ยื่นเข้าไปจากนอกจานเพื่อให้หัวอ่านตรงกับตำแหน่งของร่องที่ต้องการ จากนั้นก็รอ ให้จานหมุนไปจนเสี้ยว (ที่บรรจุข้อมูล) ที่ต้องการบนร่องมาตรงกับหัวอ่าน/บันทึก จึงทำการอ่าน/บันทึก ข้อมูลที่ต้องการ
การเลื่อนหัวให้ไปอยู่เหนือร่องที่ต้องการเรียกว่า การค้นหาร่อง (seek) และเวลาที่ใช้เรียกว่า เวลาในการค้นหาร่อง (seek time) ส่วนการที่จานหมุนให้เสี้ยวที่ต้องการมาอยู่ใต้หัว เรียกว่า การค้นในร่อง (latency) และเรียกเวลาที่เสียไปสำหรับการนี้ว่า เวลาในการค้นในร่อง (latency time) สำหรับเวลาในการส่งข้อมูลภายใต้หัวนั้นเรียกว่า เวลาในการส่ง (transmission time)

     เหตุผลในการจัดการ

ในระบบมัลติโปรแกรมมิ่ง มีกระบวนการหลายๆ กระบวนการซึ่งเรียกขอให้ทำการอ่านหรือบันทึกกับจานบันทึก เนื่องจากกระบวนการเหล่านี้ ในบางขณะจะเรียกใช้จานเร็วกว่าที่ระบบจานบันทึกจะบริการได้ทัน ดังนั้นจึงมักเกิดการรอเป็นแถวขึ้น ในบางระบบอาจทำการบริการในลักษณะของใครมาก่อนได้ก่อน (first-come-first-served หรือ FCFS) แม้ว่าวิธีการนี้จะยุติธรรมที่สุดสำหรับผู้ขอ แต่ถ้ามีอัตราการเข้าใช้สูงมากแล้ว วิธีนี้จะทำให้เกิดการรอคอยนาน เพราะเป็นการวิ่งไปมาในจานบันทึกเพื่อบริการในลักษณะสุ่ม ไม่มีแบบแผนแน่นอน ขึ้นกับกระบวนการใดจะขอใช้ระเบียนใดในจาน อาจทำให้การขอที่ติดกันเกิดเสียเวลาในการค้นหาร่องจากในสุดไปยังร่องนอกสุดก็เป็นได้ ด้วยเหตุนี้จึงมีการนำเอาการสับหลีกในจานบันทึก (disk scheduling) มาใช้ เพื่อให้สมรรถนะในการใช้จานดีขึ้น
การสับหลีกในจานบันทึก เป็นการพิจารณาคำร้องขอที่เข้ามา เพื่อจัดให้มีการบริการที่มี ประสิทธิภาพ ในที่นี้คือการลดการเคลื่อนไหวเชิงกลของจานและหัวอ่านให้มากที่สุดเพราะอุปกรณ์กลไกเหล่านี้ทำงานได้ช้ามากเมื่อเทียบกับวงจรอิเล็กทรอนิกส์ การลดการเคลื่อนไหวนี้มีอยู่สองส่วนใหญ่ๆ คือ การลดการค้นหาร่อง (seek optimization) และการลดการค้นในร่อง (latency optimization)

     จุดประสงค์ของการสับหลีกในจานบันทึก

การสับหลีกภายในจานนบันทึกนี้ ต้องมีนโยบายสามประการดังนี้
1. เพิ่มปริมาณการบริการต่อหน่วยเวลา (throughpur)
2. ลดเวลาตอบสนองเฉลี่ย (response time)
3. ลดความแปรปรวนในเวลาตอบสนอง (variation ใน response time)

     การลดการค้นหาร่อง

การลดการค้นหาร่อง (seek optimization) มีอยู่หลายวิธีดังนี้

1. มาก่อนได้ก่อน

วิธีมาก่อนได้ก่อน (first-come-first-served หรือ FCFS) เป็นวิธีพื้นฐานที่สุดและยุติธรรมที่สุด การสับหลีกแบบนี้ทำให้คำขอที่มีความสำคัญมากไม่ไปแย่งที่คำขอที่มีความสำคัญน้อยกว่า แต่ผลเสียคือทำให้ประสิทธิภาพการทำงานของระบบโดยส่วนรวมลดลง
วิธีนี้ดีสำหรับกรณีที่มีอัตราการขอต่ำ เพราะเป็นวิธีที่ไม่สิ้นเปลือง แต่เมื่ออัตราการขอสูงขึ้น จะท่วมท้นระบบจานบันทึก ซึ่งไม่อาจให้บริการได้ทัน และทำให้อัตราการตอบสนองหรือการบริการเลวตามไปด้วย (คนรอหลังๆ ต้องรอนานมากขึ้น ทั้งที่หัวอ่านอาจอยู่ตรงตำแหน่งที่ต้องการพอดีก็ตาม)

2. ค้นเร็วได้ก่อน

วิธีแบบค้นเร็วได้ก่อน (shortest-seek-time-first หรือ SSTF) จะเลือกคำขอใช้จานที่ทำให้หัวอ่าน/บันทึกเคลื่อนที่จากตำแหน่งปัจจุบันน้อยที่สุด แม้ว่าคำขอใช้นั้นจะไม่ได้อยู่หัวแถวก็ตาม
วิธีการค้นหาร่องแบบนี้ นิยมคำขอสำหรับร่องกลางๆ แผ่น ร่องที่อยู่ด้านในสุดและนอกสุดจะได้รับการบริการน้อย แต่ผลดีคืออัตราการบริการจะสูงมากที่สุด แม้ว่าความแปรปรวนของเวลาตอบสนองจะมากก็ตาม

3. กวาดกลับไปมา

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

4. กวาดเป็นวง

วิธีการกวาดเป็นวง (circular scan หรือ C-scan) ถือว่าร่องที่เรียงกันอยู่บนแผ่นนั้นต่อกันเป็นวงทางตรรก โดยร่องนอกสุดอยู่ติดกับร่องในสุด ส่วนการกวาดจะไปทางเดียวตลอด(ในลักษณะทางตรรก) กล่าวคือหากยึดทิศทางการกวาดออกเป็นหลัก ระบบจะกวาดออกจากแกนไปสู่ขอบ โดยบริการคำขอใดๆ ในขณะนั้นตามทางที่ผ่านไป เมื่อไปสุดขอบหรือจนหมดคำขอในแนวนั้นแล้ว หัวอ่าน/บันทึกจะถูกดึง(หรือกวาด) กลับมายังแกนใหม่ โดยขณะที่กวาดกลับนี้จะไม่บริการคำขอใดๆ เลย เมื่อกลับมาถึงร่องในแล้ว ก็เริ่มกวาดและบริการออกไปอีก
ทฤษฎีพื้นฐานของวิธีการนี้อยู่ตรงที่ว่าในแบบกวาดกลับไปมานั้น ช่วงที่กวาดกลับและบริการไปด้วย จะกระทำกับบรรดาร่องที่เพิ่งให้บริการไปหยกๆ ดังนั้นโอกาสที่จะมีคำขอเข้ามาจึงน้อยกว่าร่องในฝั่งตรงข้ามที่ผ่านการบริการมานานแล้ว ระบบกวาดวงกลมจึงวิ่งกลับไปที่อีกขอบเพื่อบริการร่องตามลำดับเสมอ
จะเห็นว่า วิธีการแบบกวาดกลับไปกลับมานั้น เอนเอียงไปทางริการร่องริมๆ (แถวแกนและขอบ) แต่ในลักษณะของกวาดวงกลมนั้น ไม่มีการลำเอียงแต่อย่างใด ทำให้ความแปรปรวนในอัตราการตอบสนองต่ำมากที่สุด

     การลดการค้นในร่อง

เมื่อระบบมีปริมาณคำร้องขอใช้จานบันทึกสูงมากๆ แต่ละร่องที่หัวอ่าน/บันทึกเคลื่อนที่ผ่าน จะมีโอกาสที่จะมีหลายคำร้องเกิดขึ้นสำหรับร่องนั้นๆ ในสภาวะการณ์เช่นนี้การลดการค้นในร่อง (rotational หรือ latency optimization) จะช่วยเสริมการลดการค้นหาร่องได้ดี โดยเฉพาะวิธีการลดการค้นในร่องนี้ ได้ใช้อย่างได้ผลมาเป็นเวลาหลายปีในระบบจานบันทึกแบบหัวตรึง (หนึ่งหัวต่อหนึ่งร่อง) วิธีการลดการค้นหาในร่อง ใช้หลักการของค้นเร็วได้ก่อน (shortest-latency-time-first) ซึ่งวิธีการนี้เนื่องจากแผ่นจานบันทึกหมุนไปในทางเดียวตลอดเวลา จึงทำให้การค้นเช่นนี้เป็นแบบกวาดเป็นวงไปโดยอัตโนมัติ