อ่าน 2 นาที
ชุดการทำงาน
ชุดการทำงาน เป็นแนวคิดใน วิทยาการคอมพิวเตอร์ ซึ่งกำหนดปริมาณหน่วยความจำที่ กระบวนการ ต้องการในช่วงเวลาที่กำหนด [ 1 ]
ชุดการทำงาน
ชุดการทำงานเป็นแนวคิดในวิทยาการคอมพิวเตอร์ซึ่งกำหนดปริมาณหน่วยความจำที่กระบวนการต้องการในช่วงเวลาที่กำหนด[ 1 ]
คำนิยาม
Peter Denning (1968) นิยาม "ชุดข้อมูลการทำงานของกระบวนการณ เวลาหนึ่งคือ การรวบรวมข้อมูลที่กระบวนการอ้างอิงในช่วงเวลาของกระบวนการ" [ 2 ] โดยทั่วไป หน่วยของข้อมูลดังกล่าวถือเป็นหน้าหน่วยความจำซึ่งแนะนำให้เป็นค่าประมาณของชุดหน้าที่กระบวนการจะเข้าถึงในอนาคต (เช่น ในหน่วยเวลาถัดไป) และโดยเฉพาะอย่างยิ่งแนะนำให้เป็นตัวบ่งชี้ว่าควรเก็บหน้าใดไว้ในหน่วยความจำหลักเพื่อให้สามารถดำเนินการกระบวนการนั้นได้อย่างเต็มที่
เหตุผล
ผลกระทบของการเลือกจำนวนหน้าหน่วยความจำที่จะเก็บไว้ในหน่วยความจำหลัก (ซึ่งแตกต่างจากการส่งไปยังหน่วยความจำเสริม) นั้นสำคัญมาก: หากเก็บหน้าหน่วยความจำของกระบวนการหนึ่งไว้ในหน่วยความจำหลักมากเกินไป กระบวนการอื่นๆ ก็จะพร้อมใช้งานได้น้อยลงในเวลาเดียวกัน ในทางกลับกัน หากเก็บหน้าหน่วยความจำของกระบวนการหนึ่งไว้ในหน่วยความจำหลักน้อยเกินไป ความถี่ใน การเกิดข้อผิดพลาดของหน้า หน่วยความจำ ก็จะเพิ่มขึ้นอย่างมาก และจำนวนกระบวนการที่ทำงานอยู่ (ไม่ได้ถูกระงับ) ในระบบก็จะลดลงจนเกือบเป็นศูนย์
แบบจำลองชุดการทำงาน (Working Set Model)ระบุว่า กระบวนการหนึ่งๆ จะอยู่ในหน่วยความจำหลัก (RAM ) ได้ก็ต่อเมื่อหน้าหน่วยความจำทั้งหมดที่กระบวนการนั้นกำลังใช้งานอยู่ (ซึ่งมักประมาณจากหน้าหน่วยความจำที่ใช้งานล่าสุด) สามารถอยู่ในหน่วยความจำหลักได้เท่านั้น แบบจำลองนี้เป็นแบบ "ทั้งหมดหรือไม่มีเลย" หมายความว่า หากจำนวนหน้าหน่วยความจำที่กระบวนการนั้นต้องการใช้เพิ่มขึ้น และไม่มีพื้นที่ว่างในหน่วยความจำหลัก กระบวนการนั้นจะถูกสลับออกจากหน่วยความจำหลักเพื่อปล่อยหน่วยความจำให้กระบวนการอื่นๆ สามารถใช้งานได้
โดยทั่วไปแล้ว คอมพิวเตอร์ ที่มีภาระงานหนักจะมีกระบวนการทำงานที่รอคิวอยู่เป็นจำนวนมาก หากอนุญาตให้กระบวนการทำงานทั้งหมดทำงานในช่วงเวลาการจัดตาราง เวลาเดียวกัน กระบวนการเหล่านั้นจะอ้างอิงถึงหน้าหน่วยความจำมากกว่าจำนวนหน่วยความจำ RAM ที่มีอยู่ ทำให้คอมพิวเตอร์ "ทำงานหนักจนเกินไป " (thrash )
การสลับกระบวนการบางส่วนออกจากหน่วยความจำ ส่งผลให้กระบวนการต่างๆ—แม้แต่กระบวนการที่ถูกลบออกจากหน่วยความจำชั่วคราว—เสร็จสิ้นเร็วกว่าการที่คอมพิวเตอร์พยายามเรียกใช้ทั้งหมดพร้อมกัน นอกจากนี้ กระบวนการต่างๆ ยังเสร็จสิ้นเร็วกว่าการที่คอมพิวเตอร์เรียกใช้ทีละกระบวนการจนเสร็จสมบูรณ์ เนื่องจากช่วยให้กระบวนการอื่นๆ สามารถทำงานและมีความคืบหน้าได้ในช่วงเวลาที่กระบวนการหนึ่งกำลังรอการเข้าถึงฮาร์ดไดรฟ์หรือทรัพยากรส่วนกลางอื่นๆ
กล่าวอีกนัยหนึ่ง กลยุทธ์ชุดการทำงานช่วยป้องกันปัญหาการทำงานหนักเกินไป (thrashing)ในขณะที่ยังคงรักษาความสามารถในการทำงานหลายโปรแกรมพร้อมกันให้สูงที่สุดเท่าที่จะเป็นไปได้ ดังนั้นจึงช่วยเพิ่มประสิทธิภาพการใช้งาน CPU และปริมาณงานให้สูงสุด
การดำเนินการ
อุปสรรคสำคัญในการนำโมเดลชุดการทำงานไปใช้คือการติดตามชุดการทำงาน หน้าต่างชุดการทำงานเป็นหน้าต่างที่เคลื่อนที่ได้ ในแต่ละการอ้างอิงหน่วยความจำ การอ้างอิงใหม่จะปรากฏขึ้นที่ปลายด้านหนึ่ง และการอ้างอิงที่เก่าที่สุดจะหายไปที่ปลายอีกด้านหนึ่ง หน้าหน่วยความจำจะอยู่ในชุดการทำงานหากมีการอ้างอิงถึงในหน้าต่างชุดการทำงาน
เพื่อหลีกเลี่ยงภาระในการจัดเก็บรายการหน้าเว็บที่ถูกอ้างอิงล่าสุดkหน้า จึงมักใช้วิธีการติดตามเวลาtของการอ้างอิงครั้งล่าสุด และถือว่าชุดการทำงานคือหน้าเว็บทั้งหมดที่ถูกอ้างอิงภายในช่วงเวลาที่กำหนด
ชุดการทำงานไม่ใช่ขั้นตอนวิธีแทนที่หน้าแต่ขั้นตอนวิธีแทนที่หน้าสามารถออกแบบมาเพื่อลบเฉพาะหน้าที่ไม่ได้อยู่ในชุดการทำงานสำหรับกระบวนการใดกระบวนการหนึ่งเท่านั้น ตัวอย่างหนึ่งคือเวอร์ชันที่ดัดแปลงของขั้นตอนวิธีนาฬิกาที่เรียกว่า WSClock
ตัวแปร
ชุดการทำงาน (Working set) สามารถแบ่งออกเป็น ชุดการทำงานของ โค้ด (code working set) และชุดการทำงาน ของ ข้อมูล (data working set) การแบ่งแยกนี้มีความสำคัญเมื่อโค้ดและข้อมูลแยกจากกันในระดับที่เกี่ยวข้องของลำดับชั้นหน่วยความจำ เพราะหากชุดการทำงาน ใด ชุดหนึ่งไม่พอดีกับระดับนั้นของลำดับชั้น จะเกิดปัญหา การ ทำงาน หนักเกินไป (thrashing) นอกจากโค้ดและข้อมูลเองแล้ว ในระบบที่มีหน่วยความจำเสมือน (virtual memory) รายการ แผนที่หน่วยความจำ (จากหน่วยความจำเสมือนไปยังหน่วยความจำจริง) ของหน้าต่างๆ ในชุดการทำงานจะต้องถูกแคชไว้ใน บัฟเฟอร์ การค้นหาการแปล (Translation Lookaside Bufferหรือ TLB) เพื่อให้กระบวนการดำเนินไปได้อย่างมีประสิทธิภาพ การแบ่งแยกนี้มีอยู่เนื่องจากโค้ดและข้อมูลถูกแคชไว้ในบล็อกขนาดเล็ก ( แคชไลน์ ) ไม่ใช่ทั้งหน้า แต่การค้นหาที่อยู่จะทำในระดับหน้า ดังนั้นแม้ว่าชุดการทำงานของโค้ดและข้อมูลจะพอดีกับแคช แต่ถ้าชุดการทำงานถูกแบ่งออกเป็นหลายหน้า ชุดการทำงานของที่อยู่เสมือนอาจไม่พอดีกับ TLB ทำให้เกิดการทำงานหนักเกินไปของ TLB (TLB thrashing)
มีแนวคิดที่คล้ายคลึงกับชุดการทำงานสำหรับทรัพยากรที่มีจำกัดอื่นๆ โดยเฉพาะอย่างยิ่งกระบวนการหากชุดกระบวนการต้องการการโต้ตอบบ่อยครั้งระหว่างหลายกระบวนการ ก็แสดงว่าชุดนั้นมีชุดการทำงานของกระบวนการที่ต้องจัดตารางเวลาร่วมกันเพื่อความก้าวหน้า: [ 3 ]
โปรแกรมแบบขนานมีชุดการทำงานของกระบวนการที่ต้องได้รับการจัดตารางเวลา ร่วมกัน (กำหนดให้ดำเนินการพร้อมกัน) เพื่อให้โปรแกรมแบบขนานสามารถดำเนินการต่อไปได้
หากกระบวนการต่างๆ ไม่ได้ถูกจัดตารางเวลาให้ทำงานพร้อมกัน เช่น หากมีสองกระบวนการ แต่มีเพียงคอร์เดียวที่จะใช้ในการประมวลผล กระบวนการเหล่านั้นก็จะสามารถดำเนินการได้ในอัตราเพียงหนึ่งครั้งต่อช่วงเวลาเท่านั้น
ทรัพยากรอื่นๆ ได้แก่ตัวจัดการไฟล์หรือซ็อกเก็ตเครือข่าย – ตัวอย่างเช่น การคัดลอกไฟล์หนึ่งไปยังอีกไฟล์หนึ่งทำได้ง่ายที่สุดโดยใช้ตัวจัดการไฟล์สองตัว: ตัวหนึ่งสำหรับอินพุต ตัวหนึ่งสำหรับเอาต์พุต ดังนั้นจึงมี "ชุดการทำงานของตัวจัดการไฟล์" ขนาดสองตัว หากมีตัวจัดการไฟล์เพียงตัวเดียว การคัดลอกก็ยังสามารถทำได้ แต่ต้องได้รับตัวจัดการไฟล์สำหรับอินพุต อ่านจากไฟล์นั้น (เช่น ลงในบัฟเฟอร์) ปล่อยตัวจัดการไฟล์ จากนั้นได้รับตัวจัดการไฟล์สำหรับเอาต์พุต เขียนลงไป ปล่อยตัวจัดการไฟล์ จากนั้นได้รับตัวจัดการไฟล์อินพุตอีกครั้งและทำซ้ำ ในทำนองเดียวกัน เซิร์ฟเวอร์อาจต้องการซ็อกเก็ตจำนวนมาก และหากมีจำกัดก็จะต้องปล่อยและรับซ็อกเก็ตซ้ำๆ แทนที่จะเกิดการทำงานที่ไร้ประสิทธิภาพ ทรัพยากรเหล่านี้มักจำเป็นสำหรับโปรแกรม และหากไม่สามารถได้รับทรัพยากรเพียงพอ โปรแกรมก็จะล้มเหลว
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ชุดการทำงาน
ชุดการทำงาน เป็นแนวคิดใน วิทยาการคอมพิวเตอร์ ซึ่งกำหนดปริมาณหน่วยความจำที่ กระบวนการ ต้องการในช่วงเวลาที่กำหนด [ 1 ]
คำนิยาม
Peter Denning (1968) นิยาม "ชุดข้อมูลการทำงานของ กระบวนการ ณ เวลาหนึ่งคือ การรวบรวมข้อมูลที่กระบวนการอ้างอิงในช่วงเวลาของกระบวนการ" [ 2 ] โดยทั่วไป หน่วยของข้อมูลดังกล่าวถือเป็น หน้าหน่วยความจำ ซึ่งแนะนำให้เป็นค่าประมาณของชุดหน้าที่กระบวนการจะเข้าถึงในอนาคต...
เหตุผล
ผลกระทบของการเลือกจำนวนหน้าหน่วยความจำที่จะเก็บไว้ในหน่วยความจำหลัก (ซึ่งแตกต่างจากการ ส่งไป ยังหน่วยความจำเสริม) นั้นสำคัญมาก: หากเก็บหน้าหน่วยความจำของกระบวนการหนึ่งไว้ในหน่วยความจำหลักมากเกินไป กระบวนการอื่นๆ ก็จะพร้อมใช้งานได้น้อยลงในเวลาเดียวกัน...
การดำเนินการ
อุปสรรคสำคัญในการนำโมเดลชุดการทำงานไปใช้คือการติดตามชุดการทำงาน หน้าต่างชุดการทำงานเป็นหน้าต่างที่เคลื่อนที่ได้ ในแต่ละการอ้างอิงหน่วยความจำ การอ้างอิงใหม่จะปรากฏขึ้นที่ปลายด้านหนึ่ง และการอ้างอิงที่เก่าที่สุดจะหายไปที่ปลายอีกด้านหนึ่ง...