การเป็นตัวแทนทางกายภาพของกองและกองคืออะไร?


9

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

คำตอบ:


6

หมายเหตุ: ฉันอ้างถึง x86 เป็นส่วนใหญ่เนื่องจากฉันคุ้นเคยกับมันมากที่สุดและมีการบันทึกไว้อย่างกว้างขวาง:

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

กองเป็นนามธรรมซอฟแวร์ เหมือนกับชื่อที่สื่อถึงมันเป็นแค่ก้อน RAM ที่ตัวจัดสรรจัดสรรและแจกแจงพอยน์เตอร์ให้ ในแง่กายภาพฮีปไม่ได้ดูแตกต่างจากส่วนอื่น ๆ ของ RAM

อย่างไรก็ตามการเพจและการแบ่งส่วนนั้นสัมพันธ์กับฮีป โดยส่วนใหญ่แล้วจะเกี่ยวข้องกับการทำงานหลายอย่างโดยที่กระบวนการไม่สามารถแก้ไข RAM ได้ซึ่งไม่ได้เป็นเจ้าของอย่างชัดเจน


3
การเพจเป็นเรื่องเกี่ยวกับการจัดการหน่วยความจำโดยทั่วไป - หน่วยที่หน่วยความจำฟิสิคัลถูกแม็พกับโลจิคัลแอดเดรส - ไม่ใช่แค่การ จำกัด การเข้าถึงแม้ว่าในภายหลังมีแนวโน้มที่จะใช้เป็นคุณสมบัติเพิ่มเติมของหน่วยการจัดการหน่วยความจำ
Chris Stratton

4

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

การออกแบบซอฟต์แวร์ระดับต่ำและตัวสร้างโค้ดคอมไพเลอร์หวังว่าจะคำนึงถึงการเข้าถึงข้อมูลขององค์กรซึ่งน่าจะส่งผลให้มีการใช้งานแคชได้ดี

โปรเซสเซอร์บางตัวมีรีจิสเตอร์ที่อยู่ผู้ส่งคืนซึ่งทำหน้าที่คล้ายกับสแต็กแคชแบบชัดลึกหนึ่งตัว (อาจมีตัวประมวลผลที่มีสแต็กฮาร์ดแวร์ลึกหลายตัวเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.