NEW
Font size
WorksheetsOS-4-Posttest
Total questions: 12
Worksheet time: 12mins
การออกแบบให้โปรแกรมเว็บเบราว์เซอร์ใช้ "เธรด" ในการเปิดแท็บใหม่แทนที่จะใช้ "โปรเซส" มีความเสี่ยงที่สำคัญทางสถาปัตยกรรมอย่างไร
การใช้แรมจะสูงขึ้นอย่างรวดเร็วจนระบบล่ม
การสลับหน้าจอระหว่างแท็บจะทำได้ช้ากว่าเดิม
หากแท็บใดแท็บหนึ่งเกิดข้อผิดพลาดร้ายแรง (Fatal Error) จะส่งผลให้โปรเซสหลักแครชและเบราว์เซอร์ปิดตัวลงทุกแท็บ
ไม่สามารถส่งข้อมูลข้ามแท็บได้เนื่องจากไม่มีการแชร์หน่วยความจำ
องค์ประกอบทางสถาปัตยกรรมภายในใดที่เป็น "เอกสิทธิ์ส่วนตัว (Private Space)" ของเธรดแต่ละตัว และไม่ถูกนำไปแบ่งปันร่วมกับเธรดอื่นในโปรเซสเดียวกันอย่างเด็ดขาด
Text Segment และ Data Segment
Register Set และ Stack Segment
Heap Segment และ Program Counter
ไฟล์ระบบ (Files) และสัญญาณ (Signals)
ปัจจัยทางเทคนิคใดที่ทำให้ต้นทุนเวลาในการสลับบริบทการทำงาน (Context Switching Overhead) ระหว่างเธรดในโปรเซสเดียวกัน มีค่าต่ำกว่าการสลับระหว่างโปรเซสอย่างมีนัยสำคัญ
เพราะไม่ต้องบันทึกค่าของ Program Counter เลย
เพราะระบบปฏิบัติการไม่ต้องล้างค่าในแคช (Cache Flush) และไม่ต้องปรับปรุงตารางหน่วยความจำตรรกะใหม่
เพราะเธรดไม่ต้องคืนทรัพยากรซีพียูให้กับระบบปฏิบัติการเมื่อหมดโควตา
เพราะเธรดระดับผู้ใช้สามารถทำงานติดต่อกับฮาร์ดแวร์ได้โดยไม่ต้องพึ่งเคอร์เนล
สถาปัตยกรรมมัลติเพล็กซ์แบบ "Many-to-Many Model" นำเสนอจุดเด่นทางวิศวกรรมที่ช่วยกลบจุดด้อยของแบบจำลอง One-to-One ได้ในเรื่องใด
ป้องกันไม่ให้แอปพลิเคชันสร้างเธรดผู้ใช้ได้เลยเพื่อประหยัดทรัพยากร
ยอมให้โปรเซสมีเธรดเคอร์เนลเพียงตัวเดียวเสมอเพื่อลดต้นทุน
ลดภาระการโหลด (Overhead) ของเคอร์เนล เพราะไม่ต้องบังคับให้สร้างเธรดเคอร์เนล 1 ตัวต่อ 1 เธรดผู้ใช้เสมอไป
ย้ายภาระการจัดคิวทั้งหมดไปให้ผู้ใช้งานเป็นคนควบคุมเอง
หากซอฟต์แวร์ประยุกต์ทำงานอยู่บนระบบปฏิบัติการรุ่นเก่าที่ใช้ "Many-to-One Model" และนำไปรันบนเครื่องคอมพิวเตอร์ที่มีซีพียู 4 แกน (Quad-core) ข้อจำกัดเชิงโครงสร้างที่จะเกิดขึ้นคืออะไร
ระบบจะประมวลผลได้เร็วขึ้น 4 เท่าตัวทันที
ไม่สามารถรันเธรดของโปรเซสนั้นแบบคู่ขนาน (Parallelism) ได้ เพราะมีเธรดระดับเคอร์เนลเพียง 1 ตัวให้ซีพียูจัดคิว
เธรดระดับเคอร์เนลจะถูกสร้างเพิ่มขึ้นเองโดยอัตโนมัติอีก 3 ตัว
ซีพียูอีก 3 แกนที่เหลือจะถูกปิดการทำงานไปโดยถาวร
ประเด็นท้าทายในเรื่อง "Thread-Local Storage (TLS)" เกิดขึ้นเพื่อตอบสนองความจำเป็นของนักพัฒนาซอฟต์แวร์ในรูปแบบใด
ต้องการบังคับให้เธรดทุกตัวแชร์ตัวแปรส่วนกลางตัวเดียวกัน
ต้องการลบเธรดที่ทำงานช้าทิ้งแบบอัตโนมัติ
ต้องการสร้างพื้นที่เก็บข้อมูลส่วนตัวของตัวแปรที่เธรดอื่นในโปรเซสเดียวกันไม่สามารถมองเห็นได้
ต้องการจำลองฮาร์ดแวร์ฮาร์ดดิสก์ให้กลายเป็นสแต็ก
ระบบซอฟต์แวร์ชุดหนึ่งมีรหัสคำสั่งที่สามารถแบ่งการทำงานแบบคู่ขนานได้ 75% (p = 0.75) หากวิศวกรนำไปรันบนคอมพิวเตอร์แบบ 3 แกนสมอง (N = 3) ตามกฎของแอมดาล อัตราเร่งความเร็วระบบจะเพิ่มขึ้นสูงสุดเท่าใด
1.50 เท่า
2.00 เท่า
2.75 เท่า
3.00 เท่า
หากองค์กรธุรกิจพัฒนาแอปพลิเคชันที่มีรหัสคำสั่งส่วนอนุกรม (Serial Portion) สูงถึง 50% ต่อให้องค์กรลงทุนซื้อระบบคลัสเตอร์ซีพียูระดับ 100 แกนสมอง อัตราความเร็วสูงสุดโดยประมาณตามทฤษฎี (เมื่อ N ลู่เข้าสู่อนันต์) จะไม่สามารถเกินเพดานกี่เท่า
2 เท่า
50 เท่า
100 เท่า
ไร้ขีดจำกัด
ในตัวแบบสมการคณิตศาสตร์ของแอมดาล นิพจน์ย่อย "(p / N)" เป็นตัวแทนเชิงสัญลักษณ์ของสภาวะใด
ระยะเวลาที่ซีพียูต้องว่างงานรอข้อมูล I/O
สัดส่วนเวลาของรหัสคำสั่งคู่ขนานที่ถูกหารแบ่งเบาภาระด้วยจำนวนแกนประมวลผล
จำนวนเธรดระดับผู้ใช้ที่หารด้วยจำนวนเธรดระดับเคอร์เนล
ความน่าจะเป็นที่โปรเซสทั้งหมดจะติดล็อกพร้อมกัน
จากชุดคำสั่งตรวจสอบระบบ "Get-Process" หากผลลัพธ์บนหน้าจอรายงานว่าโปรเซสที่มีชื่อ "chrome" แสดงผลออกมา 10 บรรทัด แต่ละบรรทัดมีหมายเลข PID ต่างกัน และแต่ละบรรทัดมีค่า Threads.Count เท่ากับ 25 ข้อมูลนี้สรุปความเชิงสถาปัตยกรรมได้ว่าอย่างไร
มีเบราว์เซอร์ 10 โปรแกรมรันอยู่ และแชร์ทรัพยากรฮีปตัวเดียวกันหมด
เกิดปัญหาเธรดหยุดชะงัก (Deadlock) จำนวน 25 ตัว
มี 10 โปรเซสทำงานแยกกันอิสระ โดยแต่ละโปรเซสใช้สถาปัตยกรรมมัลติเธรดบรรจุอยู่ภายใน 25 เธรด
ระบบใช้ One-to-One Model ในการรันคอร์ซีพียูจำนวน 25 แกน
เทคโนโลยี Coroutines ในการพัฒนาซอฟต์แวร์สมัยใหม่ มีความได้เปรียบเชิงวิศวกรรมเหนือการใช้เธรดแบบดั้งเดิมอย่างไรเมื่อต้องจัดการกับฟังก์ชันที่ต้องประวิงเวลา (Suspend)
กระบวนการประวิงเวลาจะไม่เป็นการทำลายหรือบล็อก OS Thread โดยแท้จริง ทำให้เธรดอื่นยังสามารถนำ OS Thread นั้นไปใช้งานต่อได้ทันที
เปลี่ยนโครงสร้างจากแบบจำลอง Many-to-Many ให้กลายเป็นแบบ One-to-One เพื่อความเร็วสูงสุด
ลบข้อมูลใน Stack ของเธรดแบบดั้งเดิมทิ้งอัตโนมัติเพื่อคืนพื้นที่ให้ระบบปฏิบัติการ
บังคับให้การคำนวณทั้งหมดเปลี่ยนเป็นแบบอนุกรม (Serial)
หากนักพัฒนาพบว่าโปรแกรมมีการเปิดใช้และยกเลิกเธรด (Thread Cancellation) อย่างไม่เป็นระเบียบ การตั้งค่ายกเลิกเธรดแบบใดมีความปลอดภัยต่อข้อมูลในหน่วยความจำสูงสุด
Asynchronous Cancellation เพราะทำลายเธรดทันที
Synchronous Execution เพราะรันทุกคำสั่งซ้ำสองรอบ
Deferred Cancellation เพราะประวิงเวลาให้เธรดจัดการข้อมูลค้างให้เรียบร้อยก่อนถึงจุดที่ปลอดภัยในการทำลาย
Pool Cancellation เพราะเคลียร์ทุกเธรดในพูลพร้อมกัน
