คำถามติดแท็ก memory

ในการคำนวณหน่วยความจำหมายถึงข้อมูลสถานะของระบบคอมพิวเตอร์เนื่องจากมันถูกเก็บไว้ในโครงสร้างทางกายภาพบางอย่าง


3
ขนาดหน่วยความจำสำหรับการดำเนินการเคอร์เนล mmap
ฉันสนใจในวิธีที่ไฟล์ Linux mmaps ในหน่วยความจำหลัก (ในบริบทของฉันมันสำหรับการดำเนินการ แต่ฉันคิดว่ากระบวนการ mmap นั้นเหมือนกันสำหรับการเขียนและการอ่านเช่นกัน) และขนาดที่ใช้ ดังนั้นฉันรู้ว่าลินุกซ์ใช้เพจจิ้งโดยปกติ 4kB Pagesize (ที่เคอร์เนลฉันสามารถหาขนาดนี้ได้ที่ไหน) แต่สิ่งนี้มีความหมายอย่างไรสำหรับหน่วยความจำที่จัดสรรไว้: สมมติว่าคุณมีขนาดไบนารี่ขนาดไม่กี่ไบต์นับได้ว่าเพียง 5812B และคุณรันมัน จะเกิดอะไรขึ้นในเคอร์เนล: มันจัดสรร 2 * 4kB แล้วคัดลอก 5812B ลงในพื้นที่นี้เสียเปล่า> 3KB ของหน่วยความจำหลักในหน้า 2 หรือไม่? มันจะดีถ้าใครรู้ว่าไฟล์ในเคอร์เนลแหล่งที่มีการกำหนดขนาดหน้า คำถามที่สองของฉันก็ง่ายมากฉันเดาว่าฉันถือว่า 5812B เป็นขนาดไฟล์ ถูกต้องขนาดนี้ถูกนำมาจากไอโหนดหรือไม่?
9 kernel  memory  inode  mmap 

2
.dtors ดูเขียนได้ แต่พยายามเขียน segfault
นี่คือ Ubuntu 9.04, 2.6.28-11-server, 32bit x86 $ cat test.c main() { int *dt = (int *)0x08049f18; *dt = 1; } $ readelf -S ./test ... [18] .dtors PROGBITS 08049f14 000f14 000008 00 WA 0 0 4 ... $ ./test Segmentation fault $ สำหรับมือใหม่: gcc สร้างเซ็กเมนต์ destructor .dtors, ใน elf executable, …

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

1
“ swap cache” ของ vmstat กับ“ SwapCached” ของ / proc / meminfo
ใน Fedora 24 ของฉันฉันรันคำสั่งสองคำสั่งเพื่อตรวจสอบข้อมูลหน่วยความจำอย่างไรก็ตามฉันได้ผลลัพธ์ที่แตกต่างกันสองขนาดเกี่ยวกับขนาดของแคชการแลกเปลี่ยน คำสั่งแรกมีดังนี้: [root@localhost ~]# vmstat -s 4029004 K total memory 1043700 K used memory 742144 K active memory 321916 K inactive memory 2372500 K free memory 63628 K buffer memory 549176 K swap cache 4063228 K total swap 0 K used swap 4063228 K free swap ...... …
2 linux  memory 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.