โปรเซสเซอร์มีสแต็กจำนวนเท่าใด [ปิด]


-2

ฉันกำลังเรียนรู้เกี่ยวกับ CPU และการโต้ตอบหน่วยความจำในชั้นเรียนระบบปฏิบัติการของฉันและสับสนว่าหน่วยความจำทำงานอย่างไร ฉันเข้าใจว่าสแต็คลดลงทีละหนึ่งบรรทัดและเก็บข้อมูลไว้ใน Accumulator หรือส่งคำสั่งไปยัง IR

คำถามของฉันคือ: ทุกขั้นตอนมีสแต็คหน่วยความจำของตัวเองหรือแต่ละโพรเซสเซอร์มีสแต็คหน่วยความจำขนาดมหึมาที่สลับระหว่างกระบวนการต่าง ๆ อย่างต่อเนื่อง (และบางครั้งจะถูกขัดจังหวะโดยการโทร I / O) หากมีสแต็คขนาดมหึมาเพียงตัวเดียวจะมีเพียงสแต็กเดียวเนื่องจากตัวประมวลผลที่ทันสมัยส่วนใหญ่สามารถประมวลผลคำสั่งจำนวนมากต่อวินาทีที่ดูเหมือนว่ากระบวนการทำงานพร้อมกันกับสมองมนุษย์ที่ช้าของเราหรือไม่

คำตอบ:


2

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

ในการตอบคำถามครึ่งหลังของคุณค่อนข้างตรงไปตรงมาการใช้มัลติทาสก์เป็นภาพลวงตามันขึ้นอยู่กับขนาด แต่ละคอร์ซีพียูแต่ละตัวสามารถเรียกใช้หนึ่งกระบวนการในแต่ละครั้งและ (โดยปกติ) จะสลับระหว่างกระบวนการทั้งหมดในระบบที่ไม่ได้รออะไรบางอย่างที่มีความถี่สูงพอที่จะทำงานได้พร้อมกันจากมุมมองของมนุษย์ ระบบที่มีกระบวนการในอัตรา 100 ถึง 1,000 ครั้งต่อวินาทีซึ่งยังคงมีเวลามากพอสำหรับคำสั่ง CPU หลายร้อยล้านที่จะดำเนินการในแต่ละกระบวนการ) เมื่อมองดูสิ่งนี้แตกต่างเล็กน้อยซีพียูแกนเดียวก็เหมือนคนมันต้องเปลี่ยนโฟกัสเป็น 'มัลติทาสก์' เป็นประจำและซีพียูแบบมัลติคอร์เป็นเหมือนทีมของคนแต่ละคนสามารถทำสิ่งเดียวได้ ในเวลาที่เชื่อถือได้ แต่ถ่ายโดยรวม

อย่างไรก็ตามสำหรับวัตถุประสงค์ของการเรียนของคุณทั้งหมดนี้ไม่เกี่ยวข้อง (ถ้าคลาสสอนโดยใช้ระบบปฏิบัติการที่เรียบง่ายเช่น CP / M หรือ DOS ซึ่งไม่ได้ทำงานหลายอย่างดังนั้นจึงมีสแต็กเดียวรอบระยะเวลา) หรือจะ จะครอบคลุมในเวลาที่กำหนด (ถ้ามันสอนโดยใช้ระบบปฏิบัติการจริงเช่น UNIX, MINIX หรือแม้กระทั่งหนึ่งในข้อเสนอเชิงพาณิชย์ที่ทันสมัยต่างๆซึ่งทั้งหมดทำหลายภารกิจซึ่งมักจะครอบคลุมในตอนท้ายของชั้นเรียนเพราะความเข้าใจมันต้องเข้าใจ ข้อมูลเบื้องต้น (เช่นการทำงานของสแต็ก))


ฉันต้องไม่ใช้ถ้อยคำที่ดี แต่สิ่งที่ฉันพยายามถามคือเนื่องจาก CPU สามารถเรียกใช้เพียงหนึ่งกระบวนการในแต่ละครั้งนั่นหมายความว่าแต่ละกระบวนการเหล่านี้จะถูกวางไว้ในกองซ้อนเดียวกันหรือไม่
Darien Springer

1
@DarienSpringer อาขอโทษฉันเข้าใจผิดว่า คำตอบสั้น ๆ คือไม่แต่ละกระบวนการมีสแต็กของตัวเอง แต่ตัวชี้สแต็กเป็นส่วนหนึ่งของบริบทตัวประมวลผลที่ได้รับการบันทึกและกู้คืนระหว่างการสลับบริบท
Austin Hemmelgarn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.