linux内核设计的艺术学习笔记(2)

本文详细记录了Linux内核从设备环境初始化、内存管理结构的设置到进程0的激活等一系列启动步骤。主要内容包括设置根设备和硬盘参数、内存格局规划、虚拟盘初始化、异常处理程序挂接、块设备请求项结构初始化以及人机交互设备的中断服务程序挂接等关键环节。
摘要由CSDN通过智能技术生成

设备环境初始化及激活进程0

现在开始执行main函数,初始化使得用户程序以进程的方式运行
进程管理信息的数据结构:
task_struct:标识进程的各项属性值
task[64]:存储系统中所有进程的task_struct
GDT:针对索引进程的索引结构

一、设置根设备、硬盘

设置根设备为软盘,设置硬盘参数表
在这里插入图片描述

二、规划物理内存格局,设置缓冲区、虚拟盘、主内存

决定所有进程使用内存的数量与方式,运算速度
具体规划:除内核代码和数据所占内存外,其余物理内存主要分为三部分(主内存区、缓冲区和虚拟盘)
主内存:进程代码运行的主要空间
缓冲区:主机与外设进行数据交互的中转站
虚拟盘区:可选区,先将外设数据复制到虚拟盘,然后加以使用,提高系统执行效率

三、设置虚拟盘空间并初始化

makefile文件中虚拟盘使用标志

四、内存管理结构mem_map初始化

主内存区起始区域重新确定之后,系统开始执行mem_init()函数,先设置主内存的管理结构
mem_map[]管理1MB以上的内存分页,记录一个页面的使用次数
mem_init()先将所有内存页面使用技术设为USED(100),然后清零(使用次数为0的页面看作空闲)
内核采用分页管理(线性地址与物理地址一样)
用户进程这两者差异很大,无法通过线性地址推出物理地址,使得用户进程无法访问其他的用户进程

五、异常处理类中断服务程序挂接

系统调用使用中断来实现
trap_init()函数将中断、异常处理程序与IDT挂接,逐步重建中断处理体系
在这里插入图片描述32位中断服务体系位被动响应,替代主动轮询 。

六、初始化块设备请求项结构

linux设备分为两类:块设备与字符设备
块设备:将空间分为同样大小的块,每个块有块号,独立、随机读写,进程通过缓冲区与与块设备交互(请求项管理结构,需要操作的设备记录在请求项上)
字符设备:以字符为单位进行IO

七、与建立人机交互界面相关的外设的中断服务程序挂接

字符设备的初始化:为进程与串行口主备IO环境(与IDT相挂接)
1.对串行口进行设置
2.对显示器进行设置
3.对键盘进行设置

八、开机启动时间设置

time_init()函数

九、初始化进程0

进程0是linux系统中第一个进程,创建父子进程的第一个父进程
(1)系统先初始化进程0
(2)设置时钟中断
(3)要具备处理系统调用的能力,每个进程在运算时可以与内核交互,设置系统调用的入口system_call

十、初始化缓冲区管理结构

缓冲区:对数据进行保存,查找组织之类的间接性辅助运算。
os通过hash_table[NR_HASH]与buffer_head双向链表组成的复杂哈希表管理缓冲区

十一、初始化硬盘

为进程与硬盘IO打下基础

十二、初始化软盘

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值