ส่วนคือขอบเขตต่อเนื่องที่เล็กที่สุดของไฟล์ ดังนั้นไฟล์ ELF จึงถูกแบ่งออกเป็นส่วนต่างๆ ส่วนต่างๆ ไม่สามารถทับซ้อนกันได้ กล่าวคือ ไม่มีไบต์ใดที่สามารถเป็นส่วนหนึ่งของมากกว่าหนึ่งส่วนได้ แต่อาจมีไบต์ที่ไม่อยู่ในส่วนใดๆ ("ขยะ")
โดยทั่วไปส่วนต่างๆ ใช้เพื่อวัตถุประสงค์ในการเชื่อมโยง ประกอบด้วยส่วนต่างๆ ของไฟล์ที่สามารถจัดเรียงใหม่ รวม ฯลฯ โดยตัวเชื่อมโยง
แต่ไฟล์ปฏิบัติการสามารถมีส่วนต่างๆ ได้เช่นกัน เพื่ออธิบายเนื้อหาของไฟล์ และจุดเริ่มต้นของโค้ดหรือข้อมูลแต่ละชิ้น วัตถุที่ใช้ร่วมกันก็ใช้ส่วนต่างๆ เช่นกัน สิ่งเหล่านี้มีตารางสัญลักษณ์สำหรับการเชื่อมโยงแบบไดนามิกและอะไรทำนองนั้น
ทุกส่วนที่อยู่ในไฟล์ ELF มีการอธิบายไว้ในตารางส่วนหัวของส่วน โดยแต่ละส่วนจะมีรายการอยู่ในนั้น
แต่ในการที่จะทำให้ปฏิบัติการได้ คุณต้องมีสิ่งอื่น: กลุ่ม สิ่งเหล่านี้จะบอกตัวโหลดว่าควรโหลดส่วนใดของไฟล์ลงในหน่วยความจำและที่อยู่ใด ดังนั้นการแบ่งส่วนจะแมปลงในพื้นที่หน่วยความจำของกระบวนการที่ปฏิบัติการได้ พวกเขาสามารถประกอบด้วยรหัสและข้อมูล ดังนั้น กลุ่มสามารถแบ่งย่อยออกเป็นส่วนๆ เพื่อให้บรรลุเป้าหมายนั้น และฉันเดาว่านั่นคือคำตอบสำหรับคำถามของคุณ
ส่วนที่สามารถโหลดได้อธิบายไว้ในตารางส่วนหัวของโปรแกรม
เรื่องสั้นแบบยาว:
ในไฟล์ปฏิบัติการ คุณมีส่วนต่างๆ ที่สามารถแบ่งย่อยออกเป็นส่วนต่างๆ เพิ่มเติมได้ เซ็กเมนต์ถูกโหลดลงในหน่วยความจำของกระบวนการ ส่วนต่างๆ เป็นทางเลือก แต่สามารถช่วยแบ่งย่อยส่วนต่างๆ เพิ่มเติมหรืออธิบายเนื้อหาได้ ในโมดูลที่ย้ายตำแหน่งได้ (เอาต์พุตของคอมไพเลอร์, ไฟล์ .o) เป็นอีกวิธีหนึ่ง: ส่วน จำเป็น เนื่องจากโมดูลเหล่านี้จะอธิบายสิ่งที่อยู่ในไฟล์และอนุญาตให้มีการเชื่อมโยง
สำหรับที่อยู่และสิ่งของหน่วยความจำ:
ในระบบสมัยใหม่ เฉพาะที่อยู่เสมือนเท่านั้นที่สำคัญ กระบวนการถูกหลอกลวงโดยระบบปฏิบัติการที่ทำงานโดยลำพังในหน่วยความจำ โดยมีพื้นที่ที่อยู่ทั้งหมดที่มีอยู่ (แม้ว่าจะไม่ใช่
ทั้งหมด พื้นที่ที่อยู่อาจสามารถใช้งานได้ในเวลาเดียวกันเนื่องจากข้อจำกัดของหน่วยความจำกายภาพ ). ระบบจะแมปที่อยู่เสมือนกับที่อยู่ทางกายภาพได้ทันที โดยโปร่งใสต่อกระบวนการ
ที่อยู่ทางกายภาพไม่ได้ใช้ ดังนั้นจึงสามารถปล่อยให้เป็นศูนย์ได้ แต่สามารถตั้งค่าเป็นที่อยู่เดียวกันได้ในกรณีนี้
person
BarbaraKwarc
schedule
04.07.2018