页目录表及页表在定义如下:在 http://lxr.linux.no/#linux-bk+v2.6.11.5/include/asm-i386/pgtable.h#L34
extern pgd_t swapper_pg_dir[1024];
extern unsigned long pg0[1024];
其中swapper_pg_dir 为页目录,pg0 为一临时页表。
继续阅读 »
首页
› 分类存档 › UC
内核空间页表的建立
内核空间简单介绍
进程空间总共有4G,其中最高1G的空间(从0xC0000000开始)便是内核空间,剩下是用户空间。虽然内核空间占据了每个虚拟空间中的最高 1G 字节,但映射到物理内存却总是从最低地址(0×00000000)开始,所以内核空间的线性地址与物理地址之间存在一个偏移量0xC0000000,也叫 PAGE_OFFSET。
继续阅读 »
分页机制
段机制实现虚拟地址到线性地址的转换,然而,linux有意的将linux的所有段基址设为0,所以在linux中,线性地址与虚拟地址是相同的,我们以后讨论中,也不对虚拟地址和线性地址进行区分。我们着重学习分页机制,分页机制实现线性地址到物理地址的转换。
继续阅读 »
fork()带来的疑惑
由fork()带来的疑惑促成了我的linux内核之旅
fork()可以创建新进程,新进程是父进程的一个拷贝,这是大家都知道的.
fork()有一些有趣的特点:
继续阅读 »
fork的那些事
在一个gdb中同时调试parent与child进程
(gdb) set follow-fork-mode parent/child //设置当fork时直接进入parent还是child调试, 默认为parent
(gdb) set detach-on-fork on/off //设置当fork后, 没有直接进入的进程是attach还是detach, on时将detach, 即不挂其他起程, 默认值为on
//off: 则fork后的两个进程都要被attach
假入现在进入了child进程
(gdb) info inferiors
Num Description Executable
* 2 process 2550 /home/alex/work/test/test_emacs_gdb_fork
1 process 2546 /home/alex/work/test/test_emacs_gdb_fork
*指定当前正在调试的进程
(gdb)inferior 2 //inferior inferior_num 将调试控制进入2546进程(父进程)
近期评论