发布时间:2014-03-26 08:55:59
内核中为防止用户对敏感数据(比如一些关键指针)的直接引用,通常会采用“掩饰”的方法,即在分配相关数据的时候,就对其进行掩饰,
然后在引用时,又对其进行还原,这样的话,用户就不能直接引用相应数据(会导致非法访问),而必须使用内核提供的标准接口来引用。......【阅读全文】
发布时间:2014-03-06 14:53:09
问题现象:在redhat 64位系统中,用户态进程申请malloc 8M的内存,free后,查看进程的RSS并未减少,释放的内存未还给系统。
而在redhat 32未系统中,释放后的内存会立刻还给系统。
原因:redhat是采用的glibc作为c库,glibc采用ptmalloc作为内存管理机制。malloc有一个mmap门限默认是128k,当第一次分配内存大于128k时,ptmalloc会直接调用mmap申请内存,而不是去堆中分配。那么释放的时候也就直接调用munmap直接释放了。
......【阅读全文】
发布时间:2014-03-06 11:53:51
request_mem_region(start,len,name)请求IO内存空间
start是给定的其实地址,是物理地址,通常是从PCI配置空间中读出来的,
而PCI配置空间的bar地址,通常是BIOS根据硬件情况分配的,防止冲突
如果申请成功,则返回非NULL指针,否则返回NULL
映射后的地址是物理地址,需要使用ioremap将其映射到内核的虚拟地址空间中,将其转换为虚拟地址,才能访问和使用。......【阅读全文】
发布时间:2014-03-05 09:48:24
TCP: time wait bucket table overflow原因......【阅读全文】