กระทู้แบ่งปันทุกอย่าง [1] มีพื้นที่ที่อยู่หนึ่งรายการสำหรับกระบวนการทั้งหมด
แต่ละเธรดมีสแต็กและการลงทะเบียนของตัวเอง แต่สแต็กทั้งหมดของเธรดจะปรากฏในพื้นที่ที่อยู่ที่ใช้ร่วมกัน
หากเธรดหนึ่งจัดสรรวัตถุบางอย่างบนสแต็กและส่งที่อยู่ไปยังเธรดอื่นพวกเขาทั้งสองจะมีสิทธิ์เข้าถึงวัตถุนั้นอย่างเท่าเทียมกัน
อันที่จริงผมเพิ่งสังเกตเห็นปัญหาที่กว้างขึ้น: ฉันคิดว่าคุณกำลังสับสนสองใช้คำว่าส่วน
รูปแบบไฟล์สำหรับไฟล์เรียกทำงาน (เช่น ELF) มีส่วนที่แตกต่างกันซึ่งอาจเรียกว่าเซ็กเมนต์ประกอบด้วยรหัสที่รวบรวม (ข้อความ) ข้อมูลเริ่มต้นสัญลักษณ์เชื่อมโยงข้อมูลการแก้ปัญหา ฯลฯ ไม่มีกองหรือสแต็กกลุ่ม ที่นี่เนื่องจากเป็นโครงสร้างแบบรันไทม์เท่านั้น
เซกเมนต์ไฟล์ไบนารีเหล่านี้อาจถูกแมปไปยังพื้นที่ที่อยู่ของกระบวนการแยกกันโดยมีการอนุญาตที่แตกต่างกัน (เช่นการปฏิบัติการแบบอ่านอย่างเดียวสำหรับรหัส / ข้อความและการคัดลอกเมื่อเขียนไม่สามารถเรียกใช้งานได้สำหรับข้อมูลเริ่มต้น)
พื้นที่ของพื้นที่ที่อยู่นี้ใช้สำหรับวัตถุประสงค์ที่แตกต่างกันเช่นการจัดสรรฮีปและสแต็กสแต็กตามแบบแผน (บังคับใช้โดยไลบรารีรันไทม์ภาษาของคุณ) มันเป็นเพียงแค่หน่วยความจำและอาจไม่แบ่งกลุ่มเว้นแต่ว่าคุณกำลังทำงานในโหมด 8086 เสมือน สแต็กของแต่ละเธรดเป็นหน่วยความจำที่จัดสรรในเวลาที่สร้างเธรดโดยที่อยู่สแต็กปัจจุบันที่เก็บอยู่ในรีจิสเตอร์สแต็กตัวชี้และแต่ละเธรดจะเก็บสแต็คพอยน์เตอร์ของตัวเองพร้อมกับรีจิสเตอร์อื่น ๆ
[1] ตกลงฉันรู้ว่า: มาสก์สัญญาณ, TSS / TSD เป็นต้นพื้นที่ที่อยู่รวมถึงเซ็กเมนต์โปรแกรมที่แมปทั้งหมดยังคงแชร์อยู่