笔记 2 :linux 0.11 中的重要的全局变量 (a)

通过对全局变量的了解,也有助于了解整个代码的逻辑。就跟学习类一样,了解类有哪些成员变量,也有助于了解类的成员函数的功能。
以下介绍全局变量的顺序,符合这两本书的讲解顺序:

在这里插入图片描述

(1)内存初始化相关 static u_char mem_map [ PAGING_PAGES ] = { 0 , } .本数组对 1M 以外到 第 15M 的所有内存页进行编码映射,且都置为已占用,只对实际主内存对应的数组元素项清零,表示对应内存页空闲。 PAGING_PAGES = 3840 :

在这里插入图片描述

(2)读写块设备的请求 , struct request request [ NR_REQUEST ] ,实际的读写盘操作,并未执行,而是往此全局数组里填充了待操作的数据结构,待进程切换时,由内核进程进行实际的缓慢的块设备读写操作。

在这里插入图片描述

(3) 系统关于屏幕光标位置的记录:

在这里插入图片描述

( 4 ) 系统的开机时刻:

在这里插入图片描述

(5) 0 号进程启动前,内核代码运行时使用的栈空间(这里记录的意义在于我们也要关注 0 号进程使用的栈空间来自于哪里):

在这里插入图片描述

(6) 0 号进程的进程控制块的创建 ,全局变量,占据一页 4k ,起名叫 init_task ,其足够大,所以足以作为 0 号进程的栈:

在这里插入图片描述

(7) 出现在 c 语言源代码里的全局变量 : 页目录表 pg_dir 、 全局描述符表 gdt 、 全局中断描述符表 idt 的定义 :

在这里插入图片描述

(8) 0 号进程的 TSS 控制块的初始化内容:

在这里插入图片描述

(9) 这里介绍出现的新概念:会话与会话首领:

在这里插入图片描述

(10) 0 号进程的 TCB 块初始化:

在这里插入图片描述

(11) 接着给出 0 号进程的 LDT 的数据含义:

在这里插入图片描述

(12) 接着介绍几个全局变量 : 关于 TCB 任务控制块的 :

在这里插入图片描述

它们的定义如下:

在这里插入图片描述

(13) 因为 TCB 里出现了信号的定义,这里给出 sigaction 的定义 ( signal . h ):

在这里插入图片描述

(14) 解释下出现在 main () 函数里的 sched_init () 函数里的 加载 TSS 和 LDT 的宏定义,还以为是汇编指令呢:

在这里插入图片描述

(15)
谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值