[原创] 写一个块设备驱动(4)
第4章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmail
[原创] 写一个块设备驱动(3)
第3章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmail
[原创] 写一个块设备驱动(2)
第2章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||email:zhaoleidd@hotmail
[原创] 写一个块设备驱动(1)
第1章+---------------------------------------------------+|写一个块设备驱动|+---------------------------------------------------+|作者:赵磊||网名:OstrichFly、飞翔的鸵鸟||em
关于 atomic 的话题
这里有一个很重要的概念:boundary(边界)常见的boundary:★wordboundary(16位)★doublewordboundary(32位)★quadwordboundary(64位)--------------------------------------------------
在多核系统上网络数据转发实验和一点思考
小弟刚刚鸟枪换小炮。得到一台Intel(R)Core(TM)2CPU6400@2.13GHz+PCI-E4X2.5GB的机器,以前看大家讨论多核,IRQ中断亲和的问题,心里头就发痒,现在终于有机会测试了!!!反复做了些测试,有一些值得思考的地方,将整个测试过程发上来(不包括性能改进方面的内容),与大
一个cache相关的问题
最近写一个屏驱动的时候,需要把一块内核中用kmalloc分配的内存映射到应用层中使用。这是一个很simple的需求,很轻松的就可以通过mmap搞定:驱动部分代码:1698if((mmap_addr=kmalloc(PAGE_SIZE,GFP_KERNEL))==NULL){1699ret=-ENOM
Linux Memory Management or 'Why is there no free
LinuxMemoryManagementor'WhyistherenofreeRAM?'Revision2.3Copyright2004sapphirecat.ThetextofthispostislicensedunderaCreativeCommonsLicense.SectionsOverv
Linux sys_exec中可执行文件映射的建立及读取(7)
关于schedule和cpu_idle的一些问题:1.schedule会从一系列进程中选择最合适的进程来运行,假设某一时刻没有合适的进程(在寻找待切换入进程时next时,先将next设置为init_task,然后在runqueue_head运行队列中找合适的进程,找到,就将其赋给next,注意,in
Linux sys_exec中可执行文件映射的建立及读取(6)
elf文件段属性和vm_area_struct关系:在elf文件段中,有如下属性:1.p_type:该成员指出了这个数组的元素描述了什么类型的段,或怎样解释该数组元素的信息。2.p_offset:该成员给出了该段的驻留位置相对于文件开始处的偏移。3.p_vaddr:该成员给出了该段在内存中的首字节地
Linux sys_exec中可执行文件映射的建立及读取(5)
0号进程的手工构造过程其是利用全局变量构造的,如下图所示:init_task_union---+-------------+^||||||||8K||init_task|||,+------------------------+|||/|||||/|policy:SCHED_OTHER||+----
Linux sys_exec中可执行文件映射的建立及读取(4)
sys_exec("/bin/apache")执行过程当前进程进入sys_exec系统调用;以下为load_elf_binary:打开apache文件,读取其128字节头,依据头找到elf处理模块(假设这里apache为elf文件);确定程序所使用的动态库,一般为/usr/lib/ld_linux.
Linux sys_exec中可执行文件映射的建立及读取(3)
父子页面保护共享的处理------COW技术在do_fork->copy_mm中,如果vm_area_struct的属性中包含了可写属性,但非共享,则将父对应的pte[j](假设pte[j]对应了vm_area_strruct圈定的范围中的某个页面)设置为写保护,随后复制父pte[j]给子pt
Linux sys_exec中可执行文件映射的建立及读取(2)
从上文中可知elf_map时并没有将文件内容读入内存,假设现在程序中有一条指令需要读取上面vm_start---vm_end之间的某内容,例如mov[0x08000011],%eax,那么将会执行如下序列:*CPU依据CR3(current->pgd)找到0x08000011地址对应的pgd[
Linux sys_exec中可执行文件映射的建立及读取(1)
1.创建一个vm_area_struct;2.圈定一个虚用户空间,将其起始结束地址(elf段中已设置好)保存到vm_start和vm_end中;3.将磁盘file句柄保存在vm_file中;4.将对应段在磁盘file中的偏移值(elf段中已设置好)保存在vm_pgoff中;5.将操作该磁盘file的
Linux 内核中Demand paging 与swap机制的源码分析
Linux内核中Demandpaging与swap机制的源码分析文章来源CU社区:Linux内核中Demandpaging与swap机制的源码分析
请问完全内存虚拟化处理缺页异常的流程是什么?
问题:请问在完全内存虚拟化(FullMemoryVirtualization,包括使用影子页表ShadowPageTable)中,处理缺页异常的流程是什么?例如,KVM,VMWare都是使用完全内存虚拟化技术来虚拟化物理内存的。请问它们处理缺页异常的流程是什么样的呢?3x解答:这个问题问了x86虚拟
对Linux堆内存释放的总结
终于弄懂了堆内存释放的奥秘,特总结出来与大家分享!Linux用户进程是如何释放内存的Linux进程使用内存的基本流程:C:\DocumentsandSettings\eric\MyDocuments\Linux用户进程是如何使用内存的.doc从图中我们可以看出,进程的堆,并不是直接建立在Linux的
请问完全内存虚拟化处理缺页异常的流程是什么?
问题:请问在完全内存虚拟化(FullMemoryVirtualization,包括使用影子页表ShadowPageTable)中,处理缺页异常的流程是什么?例如,KVM,VMWare都是使用完全内存虚拟化技术来虚拟化物理内存的。请问它们处理缺页异常的流程是什么样的呢?3x解答:这个问题问了x86虚拟
对Linux堆内存释放的总结
今天上午得到了该版的一些高手指点,终于弄懂了堆内存释放的奥秘,特总结出来与大家分享!Linux用户进程是如何释放内存的Linux进程使用内存的基本流程:C:\DocumentsandSettings\eric\MyDocuments\Linux用户进程是如何使用内存的.doc从图中我们可以看出,进程