memory fault control
I'm writing kernel module for searching main memory faults. These control is realized by checking Crc32 checksums of code segments. So I use such algorithm:
- go through the list of active tasks - for each task go through list of vm_area_struct structures - check if these VMA is code segment - check if area is fully loaded in main memory - translate address from user virtual address space to kernel - find checksum of these area - compare with checksum computed at previous circle After long working period my module got result that everything has changed)) So, generally, there is small problem: all these memory areas turned out to be mutable!) As I think, code segments shouldn't change because of there is no overlays in kernel or program realization. Can somebody explain me the reason of these fact? |
What's the change of memory areas or code segment, virtual or physical address?
|
Quote:
I use MemTest86 which I have burned to a CD-ROM (what a waste! The CD is 99.9% empty!) and let it run for a night. It runs based on its own small DOSsy OS. |
Quote:
In Real Mode, ASM is fun. In Protected Mode it is less fun. Linux runs in PM so, AFAIK, there are no Code Segments anymore. Just descriptors and lookup tables. The value you load into the CS register is used as an index in the memory management controller register (of which I forgot the name and am too lazy to look it up in my AMD K6 programming manual). |
All times are GMT -5. The time now is 05:58 AM. |