บริบท: ฉันกำลังอ่าน "การทำความเข้าใจกับเคอร์เนล Linux, 3d ed" ซึ่งใช้เคอร์เนล 2.6.11
คำถาม: ตามที่ฉันเข้าใจที่อยู่ทางกายภาพนั้นได้มาจากการแปลที่อยู่เชิงเส้นซึ่งได้มาจากการแปลที่อยู่เชิงตรรกะ โลจิคัลแอดเดรสประกอบด้วยตัวเลือกเซกเมนต์ซึ่งระบุเซกเมนต์ในตารางรายละเอียด
ตารางคำอธิบายส่วนกลางของ Linux ประกอบด้วยส่วนของรหัสผู้ใช้และส่วนข้อมูล แต่ที่อยู่พื้นฐานของทั้งสองเซ็กเมนต์คือ0x0
และขนาดก็เหมือนกัน ดังนั้นพวกเขาจึงทับซ้อนกันอย่างสมบูรณ์ ดังนั้นอย่างที่ฉันเข้าใจที่อยู่ทางลอจิคัลcs + offset
เหมือนกับที่อยู่แบบลอจิคัลds + offset
ที่ไหนcs
และds
มีการลงทะเบียน CPU ที่เก็บตัวเลือกเซ็กเมนต์รหัสและตัวเลือกเซ็กเมนต์ข้อมูลตามลำดับ ฉันคิดว่าเป็นกรณีนี้เพราะทั้งสองเซ็กเมนต์มีที่อยู่ฐานเดียวกันซึ่งเพิ่มขึ้นด้วยออฟเซ็ตเพื่อรับที่อยู่เชิงเส้น
หากเป็นกรณีนี้และพวกเขาทั้งคู่แมปไปยังที่อยู่เชิงเส้นเดียวกันพวกเขาจะแมปไปยังที่อยู่ทางกายภาพเดียวกันหรือไม่ ถ้าเป็นเช่นนั้นการใช้การแยกcs
และการds
ลงทะเบียนคืออะไร?