จัดตารางของดิกส์(Disk Scheduling)

HW สำหรับเครื่องขับดิสก์ หมายถึง มีเวลาในการเข้าถึงอย่างรวดเร็ว(Fast access time)และ Disk bandwidth

ในเรื่องเวลาในการเข้าถึงมี2องค์ประกอบหลักคือ

  1. เวลาในการค้นหา Seek time แขนดิกส์เคลื่อนหัวอ่านไปสู่ไซลินเดอร์ที่มีเซกเตอร์ที่ต้องการ
  2. เวลาในการหมุนหัวอ่าน rotational latency เวลาในการรรอคอยที่เพิ่มขึ้นสำหรับดิสก์ในการหมุนเซกเตอร์ที่ต้องการมาสู่หัวอ่าน
Disk bandwidthคือจำนวนไบต์ทั้งหมดที่ถูกโอนย้ายมากจากเวลาทั้งหมด ตั้งแต่การร้องขอครั้งแรกจนถึงการโอนย้ายครั้งสุดท้ายที่เสร็จสิ้น เราสามารถปรับปรุงทั้งเวลาในการเข้าถึงและแบนด์วิดธ์จัดตารางการขอรับ-ส่งขอมูลดิสก์ในลำดับที่ดี

การจัดตารางแบบมาก่อนได้ก่อน(FCFS)

ถ้าแถวคอยของดิสก์มีการร้องขอการรับส่งข้อมูลของบล็อคบนไซลินเดอร์ 
98,183,37,122,14,124,65,67
ถ้าหัวอ่านเริ่มต้นที่53จะเคลื่อนในครั้งแรกจาก53ไป98ไป183,,37,122,14,124,65,67 เคลื่อนย้ายหัวอ่านทั้งหมด640ไซลินเดอร์
ปัญหาคือ การเคลื่อนย้ายหัวอ่านทั้งหมดน่าจะลดลงอย่างมาก สมรรถนะควรจะได้รับการปรับปรุง

ค้นหาเวลาที่สั้นที่สุดได้ก่อน(SSTF)

จะบริการร้องขอทั้งหมดใกล้หัวอ่านก่อนย้ายหัวอ่านไปอ่านไกลเพื่อบริการการร้องขออื่น ค้นหาเวลาน้อยที่สุดเลือกใกล้ที่สุดกับตำแหน่งปัจจุบันด้วย
98,37,122,14,124,65,67
ถ้าตำแหน่งเริ่มต้นอยู่ที่53ที่ไซลินเดอร์65 เมื่อเคลื่อนที่มาไซลินเดอร์65การร้องขอที่ใกล้ที่สุดละยะถัดไปคือ67,37
ถ้าเราบริการร้องขอที่14จะได้98,122,124,183 เคลื่อนย้ายหัวอ่าน236ซลินเดอร์
น้อยกว่า1ใน3ของFCFS
ปัญหา คืออาจเกิดstarvation ปรับปรุงวิธีจากFCFSแต่ยังไม่ดี เพราะเป็นแค่การลดการเคลื่อนย้ายหัวอ่านเท่านั้น

แบบกวาดscan sheduling

แขนของดิสก์เริ่งจากจุดสิ้นสุดAไปยังจุดสิ้นสุดBการบริการร้องขอจะทำได้เมื่อมันมาถึง ต้องรู้ทิศทางการเคลื่อนหัวอ่านก่อน
ถ้าหัวอ่านอยู่ที่ตำแหน่ง53แขนดิส์เคลื่อนไปทาง0หัวอ่านบริการ37
ถ้าอยู่ตำแหน่งที่14แขนจะย้อนกลับและเคลื่อนผ่านจุดสิ้นสุดของดิสก์ ที่ไม่ใช่0 บริการร้องขอจาก65,67,68,122,124,183

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

ถ้าการกกะจายของการร้องขอไซลินเดอร์แบบเดียวกัน ความหนาอน่นของการร้องข้อเมื่อหัวอ่านจากจุดสิ้นสุดหนึ่งแล้วย้อนกลับ มีการร้องขอเล็กน้อยสัมพันธ์อยู่หน้าหัวอ่าน  ถ้ามีความแน่นหนามากสุดการร้องขอจะรอนานมาก ดังนั้นเราทำไม่ไม่ไปทางนั้นก่อนนั้นคือวิธีของC-SCAN

ตารางกวาดเป็นวง(C-SCAN)

 กวาดเป็นวงเคลื่อนจากหัวอ่านหนึ่งA ของดิสก์Bกลีบสู่การเริ่มต้นดิสก์ทันที โดยไม่บริการร้องขอใดๆในขากลับนี้  การกวาดเป็นวงเป็นสิ่งจำเป็นกับการจัดการไซลินเดิร์วงกลม ซึ่งล้อมรอบจากไซลินเดอร์สุดท้ายไปสู่ไซลินเดอร์แรก

ตารางแบบlook

แบบSCANและC-SCANใช้ไม่ได้จริง ในความจริงอขนของดิสก์จะไปไกลจากการร้องขอสุดท้ายเท่านั้นในแต่ละทิศทาง จากนั้นมันจะย้อนกลับอีกทิศทางทันที โดยไม่ต้องไปจุดสิ้นสุดของดิสก์ ทำlook,c-look มิงการร้องขอเคลื่อนไปยังทิศทางที่ได้

การเลือกวิธีจัดตาราง

วิธีsstfจะดูธรรมดาเป็นไปได้ scan,c-scanใช้ได้ดีสำหรับระบบที่มีภาระหนักบนดิสก์ เพราะมันจะเกิดstarvationได้ยาก สำหรับรายการที่มีการร้องขอโดยเฉพาะ มันกำหนดลำดับที่ดีที่สุด ในแง่ของการคำนวณจำเป็นต้องหาตารางที่ดีที่สุด ซึ่งอาจไม่ประหยัดเท่าsstfหรือscan
ดิสก์ยุคใหม่ เวลาในการหมุนหัวอ่านrotational latency มีขนาดใกล้เคียงในการค้นหาเฉลี่ยAverage seek time แต่ยากสำหรับosที่จัดตารางเวลาในการหมุนหัวอ่าน เพราะดิสก์ยุคใหม่ไม่เผยตำแหน่งlogical block ผู้ผลิตแก้ปัญหาโดยการจัดตารางดิส์ในHWควบคุม(controller  hardware)ที่สร้างไว้ในเครื่องขับดิสก์ ถ้าOSส่งการร้องขอเป็นดลุ่มมาที่ตัวควบคุม ตัวควบคุมสามารถจัดแถวคอยพวกมัน และจากนนั้นก็ทำการจัดตารางเพื่อปรับปรุงทั้งเวลาในการค้นหาและเวลาในการหมุนหัวอ่าน ถ้าสมรรถนะรับส่งข้อมูลดี OSจะโอนความรับผิดชอบของการจัดตารางของดิสก์ไปให้HWดิสก์ทำงาน