การออกแบบหลักสูตรระบบปฏิบัติการโดยใช้ C# Winform: การจำลองเทคโนโลยีอินพุตและเอาท์พุท
จำเป็นต้องออกแบบกระบวนการเอาต์พุตแบบสพูลและกระบวนการของผู้ใช้สองกระบวนการที่ร้องขอเอาต์พุตรวมถึงโปรแกรมบริการเอาต์พุตสพูล เมื่อกระบวนการของผู้ใช้ร้องขอผลลัพธ์ที่ต้องการส่งออกชุดข้อมูลโปรแกรมบริการเอาต์พุตจะถูกเรียกและโปรแกรมบริการเอาต์พุตจะส่งข้อมูลไปยังเอาต์พุตได้ดี เมื่อพบการตั้งค่าสถานะของเอาต์พุตจะระบุว่าเอาต์พุตไฟล์เอาต์พุตของกระบวนการเสร็จสิ้น หลังจากนั้นจะมีการใช้บล็อกคำขอเอาต์พุต (ใช้เพื่อบันทึกชื่อของกระบวนการผู้ใช้ที่ร้องขอเอาต์พุตตำแหน่งของข้อมูลในเอาต์พุตได้ดีความยาวของข้อมูลที่จะส่งออก ฯลฯ ) และรอกระบวนการสปอร์
เมื่อกระบวนการเอาต์พุตของสปูลลิ่งใช้งานได้จริงจะส่งออกไปยังเครื่องพิมพ์หรือตรวจสอบตามข้อมูลที่จะส่งออกโดยแต่ละกระบวนการที่บันทึกไว้ในบล็อกคำขอ ที่นี่กระบวนการเอาต์พุต SP00Ling และกระบวนการผู้ใช้ที่ขอเอาต์พุตสามารถเรียกใช้พร้อมกันได้
การกำหนดเวลากระบวนการใช้อัลกอริทึมแบบสุ่มซึ่งสอดคล้องกับการสุ่มของข้อมูลเอาต์พุตของกระบวนการ ความน่าจะเป็นในการตั้งเวลาของกระบวนการของผู้ใช้ทั้งสองที่ร้องขอเอาต์พุตคือ 45% ต่อครั้งและกระบวนการเอาต์พุต spooling คือ 10% ซึ่งถูกกำหนดโดยการจำลองจำนวนสุ่มที่สร้างขึ้นโดยเครื่องกำเนิดตัวเลขสุ่ม
มีสามสถานะพื้นฐานของกระบวนการคือปฏิบัติการรอและสิ้นสุด สถานะการดำเนินการคือสถานะที่กระบวนการทำงานหรือรอการกำหนดเวลา รัฐรอแบ่งออกเป็นสถานะรอ 1 รอรัฐ 2 และรอรัฐ 3
เงื่อนไขสำหรับการเปลี่ยนแปลงของรัฐคือ:
①เมื่อดำเนินการกระบวนการจะถูกตั้งค่าเป็นสถานะ "สิ้นสุด"
②เมื่อโปรแกรมบริการส่งข้อมูลเอาต์พุตไปยังเอาต์พุตได้ดีหากพบว่าเอาต์พุตได้ดีกระบวนการโทรจะถูกตั้งค่าเป็น "รอสถานะ 1"
③เมื่อกระบวนการสปูลเป็นเอาต์พุตหากเอาต์พุตว่างเปล่ามันจะเข้าสู่ "สถานะรอ 2"
④หลังจากกระบวนการสปูลลิ่งส่งออกบล็อกข้อมูลมันควรปล่อยพื้นที่เอาต์พุตที่ถูกครอบครองโดยบล็อกข้อมูลทันทีและตั้งกระบวนการรอเอาต์พุตไปยัง "สถานะการดำเนินการ"
⑤หลังจากโปรแกรมบริการส่งออกข้อมูลไปยังเอาต์พุตได้ดีและสร้างบล็อกข้อมูลคำขอเอาท์พุทหากกระบวนการสปูลอยู่ในสถานะรอมันจะถูกตั้งค่าเป็น "สถานะการดำเนินการ"
⑥เมื่อกระบวนการของผู้ใช้ร้องขอบล็อกเอาต์พุตหากไม่มีบล็อกคำขอพร้อมใช้งานกระบวนการโทรเข้าสู่ "สถานะรอ 3"
มีกระบวนการของผู้ใช้สองกระบวนการที่ขอเอาต์พุตในระบบและทั้งสองกระบวนการมีชื่อว่ากระบวนการผู้ใช้ A และกระบวนการของผู้ใช้ B ตามลำดับ ผู้ใช้อาจจำเป็นต้องส่งออกมากกว่าหนึ่งไฟล์และไฟล์จะถูกคั่นด้วยธงท้ายเอาต์พุต ธงท้ายเอาต์พุตไฟล์ที่ใช้ในการทดลองนี้คือ #
ผู้ใช้จำเป็นต้องป้อนเนื้อหาไฟล์ทั้งหมดที่จะส่งออกในระหว่างขั้นตอนการเริ่มต้นจากนั้นบันทึกลงในอาร์เรย์ เมื่อกระบวนการของผู้ใช้ถูกกำหนดเวลาหากเป็นไปตามเงื่อนไขทั้งสามต่อไปนี้: ยังมีไฟล์ที่ไม่ได้ส่งออกพื้นที่ที่เหลือในเอาต์พุตดีสามารถวางไฟล์ลงและมีบล็อกคำขอเอาต์พุตที่มีอยู่ไฟล์จะถูกส่งไปยังเอาต์พุตดี
เมื่อเป็นกระบวนการเอาต์พุตของสพูลที่จะครอบครอง CPU กระบวนการเอาต์พุต spooling ก่อนตรวจสอบว่ามีบล็อกเอาท์พุทในคิวการรอคอยการรอคิวไปยังเอาต์พุตและหากไม่มีจะเข้าสู่สถานะการรอคอย มิฉะนั้นเอาต์พุตจะดำเนินการจากนั้นช่องว่างที่ดีและบล็อกเอาต์พุตที่ร้องขอที่สอดคล้องกันจะถูกปล่อยออกมาและกระบวนการของผู้ใช้ที่นอนหลับเพราะไม่มีบล็อกเอาต์พุตที่มีอยู่
กระบวนการเอาต์พุต spooling และกระบวนการผู้ใช้สามารถดำเนินการพร้อมกันได้ บทความนี้สรุปกระบวนการของกระบวนการดำเนินการหนึ่ง (กระบวนการไม่จำเป็นต้องสิ้นสุดหลังจากการดำเนินการ) ลงในฟังก์ชันแต่ละครั้งที่สร้างหมายเลขสุ่มและดำเนินการกระบวนการบางอย่างตามจำนวนสุ่ม หากกระบวนการถูกบล็อกเนื่องจากสถานการณ์บางอย่างจะมีการสร้างหมายเลขสุ่มถัดไปและจะกำหนดกระบวนการอื่น กระบวนการของผู้ใช้และกระบวนการเอาต์พุต spooling จะถูกกำหนดไว้ด้วยเหตุผลต่าง ๆ นั่นคือการดำเนินการพร้อมกัน
ฟังก์ชั่นของระบบทั้งหมดจะถูกแบ่งออกเป็นส่วนต่อไปนี้: ฟังก์ชั่นการเริ่มต้น, ฟังก์ชั่นกำหนดเวลา, ฟังก์ชั่นกระบวนการกระบวนการผู้ใช้และฟังก์ชั่นเอาต์พุตสพูล ฟังก์ชั่นการเริ่มต้นใช้เพื่อใช้อินพุตเริ่มต้นและการจัดเก็บไฟล์ผู้ใช้ ฟังก์ชั่นการจัดส่งใช้การสลับระหว่างกระบวนการของผู้ใช้และกระบวนการเอาต์พุตสปอร์ ฟังก์ชั่นกระบวนการของผู้ใช้ใช้ชุดของการกระทำที่เสร็จสมบูรณ์หลังจากกำหนดกระบวนการ ฟังก์ชั่นเอาต์พุต spooling แสดงถึงการทำงานของเอาต์พุต
ผังงานโดยรวมของการทำงานของระบบแสดงในรูปที่ 1:
ระบบแรกใช้ฟังก์ชั่นการเริ่มต้นเพื่อเริ่มต้นการป้อนข้อมูลเนื้อหาโดยผู้ใช้จากนั้นสร้างหมายเลขสุ่ม R ระหว่าง 0 และ 1 และตัดสินว่ากระบวนการของผู้ใช้ควรดำเนินการหรือกระบวนการเอาต์พุตควรดำเนินการตามขนาดของ R หลังจากกระบวนการของผู้ใช้และกระบวนการส่งออกจะดำเนินการ
ผู้ใช้จำเป็นต้องป้อนเนื้อหาที่เขาต้องการ "พิมพ์" ฟังก์ชั่นการเริ่มต้นยอมรับการป้อนข้อมูลเนื้อหาโดยผู้ใช้และตัดตามอักขระสิ้นสุดไฟล์และวางไฟล์ตัดลงในอาร์เรย์และส่งไปยังเอาต์พุตได้ดีเมื่อกระบวนการของผู้ใช้ถูกกำหนดเวลา
การกำหนดเวลากระบวนการใช้อัลกอริทึมแบบสุ่มและความน่าจะเป็นในการตั้งเวลาของกระบวนการผู้ใช้ทั้งสองที่ร้องขอเอาต์พุตคือ 45%และกระบวนการเอาท์พุทสปูลคือ 10% บทความนี้ใช้ตัวเลขสุ่มเพื่อให้บรรลุข้อกำหนดนี้ เมื่อดำเนินการกำหนดเวลากระบวนการทศนิยมระหว่าง 0 ถึง 1 จะถูกสร้างขึ้นแบบสุ่ม หากจำนวนน้อยกว่าหรือเท่ากับ 0.45 กระบวนการของผู้ใช้จะถูกนำไปใช้งาน หากจำนวนอยู่ระหว่าง 0.45 ถึง 0.9 กระบวนการของผู้ใช้ B จะถูกนำไปใช้งาน หากจำนวนมากกว่า 0.9 กระบวนการเอาท์พุทสปูลจะถูกนำไปใช้งาน
ฟังก์ชั่นกระบวนการของผู้ใช้ต้องตรวจสอบว่ากระบวนการปัจจุบันเป็นไปตามเงื่อนไขสามประการหรือไม่: ไฟล์ไม่ใช่เอาต์พุตพื้นที่ที่เหลือในเอาต์พุตดีสามารถวางไฟล์ลงได้หรือไม่และมีบล็อกคำขอเอาต์พุตที่มีอยู่ หากเป็นไปตามเงื่อนไขทั้งสามไฟล์จะถูกส่งไปยังเอาต์พุตได้ดีและมีการใช้บล็อกคำขอที่สอดคล้องกัน
แผนการทำงานของฟังก์ชั่นกระบวนการผู้ใช้แสดงในรูปที่ 2:
เมื่อกระบวนการของผู้ใช้ดำเนินการหากพบว่าไฟล์ได้รับการส่งออกกระบวนการจะสิ้นสุดลง มิฉะนั้นจะมีการพิจารณาว่ามีพื้นที่เหลืออยู่ในเอาต์พุตได้ดีและไม่มีสถานะรอรอ หากมีห้องเหลืออยู่ในเอาท์พุทได้ดีให้ตัดสินต่อไปว่ามีบล็อกเอาท์พุทหรือไม่ หากมีหนึ่งรายการให้ส่งไฟล์ไปยังเอาต์พุตได้ดีและขอบล็อกเอาต์พุตและปลุกกระบวนการเอาต์พุตที่ง่วงนอนไม่เช่นนั้นเข้าสู่สถานะรอ 3
ฟังก์ชั่นเอาท์พุท spooling ตรวจสอบว่ามีบล็อกคำขอเอาต์พุตหรือไม่และหากมีเอาท์พุทและปล่อยทรัพยากรที่เกี่ยวข้อง มิฉะนั้นกระบวนการเอาต์พุตสปูลจะรอ
ผังงานของฟังก์ชั่นเอาต์พุต spooling แสดงในรูปที่ 3:
คำจำกัดความของ PCB มีดังนี้:
class PCB {
/*
* 进程描述
*/
public int id ; //序号
public int status ; //状态,0表示可执行,123表示三个等待状态,4表示结束
public string [ ] contents = new string [ MaxFileCount ] ; //要输出的内容
public int [ ] flags = new int [ MaxFileCount ] ; //为1表示该文件已经被输出,初始全部为0
public int fileCount ; //用户真实输入的文件个数
}กระบวนการผู้ใช้รวมถึงรหัสหมายเลขซีเรียลสถานะสถานะกระบวนการเนื้อหาที่จะส่งออกค่าสถานะเอาต์พุตไฟล์และจำนวนไฟล์จริง
ในหมู่พวกเขาสถานะของกระบวนการที่เป็นไปได้ซึ่งกระบวนการของผู้ใช้อาจมีอยู่ ได้แก่ : 0 หมายถึงสถานะการดำเนินการ 1 หมายถึงสถานะการรอ 1, 3 หมายถึงสถานะการรอ 3, 4 หมายถึงการสิ้นสุดของกระบวนการ
OutputReqBlock หมายถึงดังนี้:
class OutputReqBlock {
/*
* 输出请求块
*/
public int id ; //要求进行输出的进程的id
public int start ; //文件在输出井中的起始位置
public int length ; //文件长度
public int fileIndex ; //要输出文件的序号
public OutputReqBlock ( int id , int start , int length , int fileIndex ) {
this . id = id ;
this . start = start ;
this . length = length ;
this . fileIndex = fileIndex ;
}
}บล็อกเอาต์พุตคำขอรวมถึง: รหัสกระบวนการของบล็อกคำขอตำแหน่งเริ่มต้นของไฟล์ในเอาต์พุตดีความยาวของความยาวไฟล์และหมายเลขลำดับของไฟล์ที่จะส่งออกในไฟล์ของผู้ใช้ทั้งหมด
คำจำกัดความของ outputwell มีดังนี้:
class OutputWell {
/*
* 输出井
*/
public char [ ] buffer = new char [ MaxWellLen ] ; //输出缓冲区
public int begin = 0 ; //当前可用位置
public int restSize = MaxWellLen ; //剩余容量
}พารามิเตอร์ของเอาต์พุตดีคือบัฟเฟอร์บัฟเฟอร์ใช้เพื่อจัดเก็บข้อมูลที่ผู้ใช้วางไว้ ตำแหน่งที่มีอยู่ในปัจจุบันเริ่มต้นไฟล์จะถูกเก็บไว้ตามลำดับในเอาต์พุตได้ดีและจุดเริ่มต้นจะชี้ไปที่ตำแหน่งเริ่มต้นของบัฟเฟอร์ที่มีอยู่ในปัจจุบันเสมอ กำลังการผลิตที่เหลืออยู่ส่วนที่เหลืออยู่ในบัฟเฟอร์ในขั้นต้นความยาวบัฟเฟอร์ Maxwelllen
ผู้ใช้ป้อนข้อมูลเพื่อ "พิมพ์" ในกล่องข้อความจากนั้นเลือกว่ากระบวนการใดที่ประมวลผลเนื้อหาเอาต์พุตเป็นของ (A หรือ B) สุดท้ายคลิกปุ่มเริ่มต้นเพื่อเริ่มฟังก์ชั่นการเริ่มต้น ฟังก์ชั่นการเริ่มต้นใช้วัตถุสตริงเพื่อจัดเก็บอินพุตเนื้อหาโดยผู้ใช้ จากนั้นตรวจสอบว่าเนื้อหาที่ป้อนโดยผู้ใช้จะลงท้ายด้วยหมายเลข # และแจ้งให้ผู้ใช้ป้อนอีกครั้งหากไม่ถูกกฎหมาย หลังจากอินพุตถูกกฎหมายเนื้อหาที่ป้อนโดยผู้ใช้จะถูกตัดตามหมายเลข # และสตริงจะถูกตัดเป็นหลายสตริง ในที่สุดวัตถุ PCB จะเริ่มต้นโดยใช้ข้อมูลที่สร้างขึ้นและวางไว้ในคิวรอรอคิว
เนื่องจากผู้ใช้อาจคลิกปุ่มเริ่มต้นหลายครั้งจึงจำเป็นต้องพิจารณาว่ากระบวนการปัจจุบันได้เริ่มต้นก่อนการคลิกแต่ละครั้งหรือไม่ หากผู้ใช้เสร็จสิ้นการเริ่มต้นแล้ว แต่คลิกปุ่มเริ่มต้นอีกครั้งเนื้อหาต้นฉบับจะถูกเขียนทับ
เอาต์พุตดีจะเริ่มต้นโดยอัตโนมัติเมื่อโหลดอินเทอร์เฟซระบบ
รหัสฟังก์ชั่นเริ่มต้นถูกข้ามไป!
เพื่อให้เกิดการสุ่มทุกครั้งที่คุณต้องการกำหนดเวลาสุ่มหมายเลขระหว่าง 0 ถึง 1 จะถูกสร้างขึ้นโดยใช้ฟังก์ชันสุ่มของ C# หากหมายเลขสุ่มน้อยกว่าหรือเท่ากับ 0.45 หมายความว่าผู้ใช้กระบวนการ A จะถูกกำหนดเวลาถัดไป หากหมายเลขสุ่มอยู่ระหว่าง 0.45 ถึง 0.9 หมายความว่ากระบวนการผู้ใช้ B จะถูกกำหนดเวลาถัดไป หากจำนวนสุ่มมากกว่า 0.9 หมายความว่ากระบวนการเอาท์พุทสปูลลิ่งจะถูกกำหนดไว้ถัดไป
การใช้งานฟังก์ชั่น Scheduler มีดังนี้:
private int dispatch ( ) {
/*
* 进程调度
*/
double res = rd . NextDouble ( ) ; //产生一个01之间的小数
if ( res <= 0.45 ) {
return 0 ;
} else if ( res <= 0.9 ) {
return 1 ;
} else {
return 2 ; //012分别表示两个进程和SPOOLing输出进程
}
} ใช้ในการใช้ชุดการดำเนินการที่ดำเนินการเมื่อกระบวนการของผู้ใช้กำลังทำงานอยู่
เมื่อกระบวนการของผู้ใช้ถูกกำหนดไว้ก่อนอื่นให้ตรวจสอบว่ายังมีไฟล์ที่ยังไม่ได้ส่งไปยังเอาต์พุตได้ดีหรือไม่ หากไม่มีกระบวนการของผู้ใช้ปัจจุบันจะถูกตั้งค่าเป็นสถานะสิ้นสุดและฟังก์ชั่นส่งคืน
กระบวนการผู้ใช้ยังไม่สิ้นสุดซึ่งหมายความว่ายังมีไฟล์ที่ยังไม่ได้ส่งไปยังเอาต์พุตได้ดี ลูปเพื่อค้นหาบล็อกไฟล์ที่ไม่ได้รับเอาต์พุต (ธงที่เกี่ยวข้องคือ 1) จากนั้นสอบถามว่าพื้นที่ที่เหลืออยู่ในเอาต์พุตดียังสามารถวางบล็อกไฟล์นี้ได้หรือไม่ ถ้าไม่ตั้งค่าสถานะกระบวนการให้รอสถานะ 1 และฟังก์ชั่นจะส่งคืน หากยังมีพื้นที่เหลืออยู่ให้ตรวจสอบว่ายังมีบล็อกเอาต์พุตคำขอหรือไม่ หากกระบวนการไม่ได้ตั้งค่าให้รอสถานะ 3 ฟังก์ชั่นจะกลับมา มิฉะนั้นบล็อกไฟล์จะถูกส่งไปยังเอาต์พุตได้ดีและพารามิเตอร์ที่เกี่ยวข้องของเอาต์พุตได้รับการแก้ไข จากนั้นบล็อกเอาต์พุตคำขอจะถูกนำไปใช้กับเอาต์พุตคิวพิมพ์และพิมพ์ออกมาเมื่อกำหนดเวลาการส่งออก ในที่สุดหากกระบวนการเอาต์พุตของสปูลอยู่ในสถานะรอกระบวนการของผู้ใช้จะต้องตื่นขึ้นมา
สถานการณ์ต่าง ๆ ในระหว่างการทำงานฟังก์ชั่นกระบวนการของผู้ใช้จะถูกบันทึกผ่านรายการสำหรับการแสดงผลสุดท้าย รายการรวมถึง: หมายเลขลำดับการกำหนดเวลาปัจจุบันหมายเลขกระบวนการสถานะกระบวนการสถานะเอาต์พุตสถานะของบล็อกคำขอที่มีอยู่หมายเลขลำดับไฟล์และความยาวไฟล์
รหัสฟังก์ชั่นกระบวนการของผู้ใช้ถูกข้ามไป!
ฟังก์ชั่นของฟังก์ชันเอาต์พุตคือการเลือกบล็อกเอาต์พุตคำขอจากนั้นส่งออกเนื้อหาในนั้นและในที่สุดก็ปล่อยทรัพยากรที่เกี่ยวข้อง
ก่อนอื่นตรวจสอบว่าเอาต์พุตดีหรือไม่ หากกระบวนการเอาต์พุตว่างเปล่าถูกตั้งค่าให้รอสถานะ 2 ฟังก์ชั่นจะกลับมา มิฉะนั้นตรวจสอบว่ามีการร้องขอบล็อกเอาต์พุตในคิวเอาต์พุตคำขอที่ต้องเป็นเอาต์พุตหรือไม่และไม่มีการส่งคืนฟังก์ชัน มิฉะนั้นบล็อกเอาต์พุตคำขอที่หัวของคิวจะถูกดึงมาจากคิวการร้องขอเอาท์พุทจากนั้นบล็อกคำขอคือเอาต์พุตและพื้นที่เอาต์พุตที่สอดคล้องกันและบล็อกคำขอจะเป็นอิสระ
เมื่อเอาท์พุทฟังก์ชั่นเอาต์พุตเนื้อหาเอาต์พุตจะต้องแสดงไปยังพื้นที่เอาต์พุตไฟล์
รหัสฟังก์ชั่นเอาท์พุทถูกข้ามไป!
ผู้ใช้คลิกปุ่ม "โปรแกรมเรียกใช้" และเริ่มใช้ฟังก์ชันหลัก กระบวนการทำงานจะถูกปรับแบบไดนามิกตามสถานการณ์ปัจจุบัน
ฟังก์ชั่นหลักก่อนกำหนดว่ากระบวนการของผู้ใช้ทั้งสองได้รับการเริ่มต้นและสามารถเรียกใช้ได้หลังจากการเริ่มต้นหรือไม่มิฉะนั้นจะมีการรายงานข้อผิดพลาด
หลังจากเริ่มต้นให้คลิกปุ่ม "โปรแกรมเรียกใช้" อีกครั้ง ตราบใดที่มีกระบวนการที่ไม่ได้อยู่ในสถานะสิ้นสุดหรือบล็อกคำขอไม่ได้รับการส่งออกให้ดำเนินการต่อ เมื่อกำหนดเวลาคุณต้องพิจารณาว่ากระบวนการปัจจุบันสิ้นสุดลงหรือไม่และส่งออกสถานะที่เกี่ยวข้องเมื่อเสร็จสิ้น
รหัสฟังก์ชั่นหลักถูกข้ามไป!
คำอธิบายของพารามิเตอร์ต่าง ๆ ที่ใช้ในการทดลองแสดงในตารางที่ 1:
| ชื่อพารามิเตอร์ | Maxwelllen | MaxFileCount | บล็อก |
|---|---|---|---|
| คำอธิบายพารามิเตอร์ | เอาต์พุตความยาวได้ดี | จำนวนไฟล์สูงสุดที่ผู้ใช้สามารถส่งออกได้ | จำนวนบล็อกที่ร้องขอ |
| ค่าพารามิเตอร์ | 15 | 10 | 3 |
อินเทอร์เฟซระบบแสดงในรูปที่ 4:
อินเทอร์เฟซระบบแบ่งออกเป็นสามส่วน: การเริ่มต้นกระบวนการกำหนดเวลาและพื้นที่เอาต์พุตไฟล์ ส่วนการเริ่มต้นมีกล่องข้อความกล่องเลือกและปุ่ม ผู้ใช้ป้อนไฟล์ที่จะพิมพ์ในกล่องข้อความแล้วเริ่มต้น ส่วนกระบวนการกำหนดเวลาส่วนใหญ่เป็นตารางที่แสดงกระบวนการโดยละเอียดของการกำหนดเวลากระบวนการ ส่วนเอาต์พุตไฟล์ใช้เพื่อแสดงกระบวนการพิมพ์ของไฟล์ทั้งหมด
ผู้ใช้เลือกกระบวนการแรกค่าเริ่มต้นเริ่มต้นคือ A แล้วทำให้ไฟล์เป็นเอาต์พุตลงในกล่องข้อความของส่วนการเริ่มต้นจากนั้นคลิกปุ่มเริ่มต้น การเริ่มต้นสำเร็จดังแสดงในรูปที่ 5:
สำหรับกระบวนการ B ดำเนินการข้างต้นดังแสดงในรูปที่ 6:
หลังจากการเริ่มต้นของกระบวนการผู้ใช้ทั้งสองเสร็จสิ้นให้คลิกปุ่มรันโปรแกรมและผลลัพธ์จะแสดงในรูปที่ 7 และรูปที่ 8:
ต่อไปนี้เป็นการวิเคราะห์สั้น ๆ ของเนื้อหาของรูปที่ 7 ดังแสดงในรูปที่ 9:
กระบวนการส่งออกถูกกำหนดเป็นครั้งแรกเนื่องจากเอาต์พุตว่างเปล่าในเวลานี้ดังนั้นสถานะกระบวนการเอาท์พุทกำลังรอสถานะ 2 และจำนวนบล็อกคำขอที่มีอยู่คือ 3 ตารางเวลาที่สองกระบวนการ A. สถานะของกระบวนการ A สามารถดำเนินการได้ จำนวนบล็อกคำขอที่มีอยู่คือ 3. ไฟล์ส่ง 0 ไปยังเอาต์พุตได้ดี ความยาวของไฟล์ 0 ("ABCD") คือ 4 กระบวนการส่งออกถูกกำหนดเป็นครั้งที่สาม พื้นที่ว่างที่มีอยู่ของหลุมเอาต์พุตคือ 15-4 = 11 จำนวนบล็อกคำขอที่มีอยู่จะกลายเป็น 2 และไฟล์ 0 ของกระบวนการ A คือเอาต์พุตดังแสดงในพื้นที่เอาต์พุตไฟล์และพื้นที่ที่เกี่ยวข้องจะถูกปล่อยออกมา