kernel:关于linux内核重要文件的基本描述-续

0.1 math-emulation.c 程序

该目录里应该包含数学仿真代码。目前仅产生一个信号。

0.2 bitmap.c 程序

该程序主要用于处理 i 节点和逻辑块(磁盘块或区段)的位图 i节点即inode

0.3 inode.c 程序

该程序含有处理 i 节点的函数。

0.4 buffer.c 文件

该文件中的函数主要用于对设备高速缓冲的操作和处理。 空闲缓冲区链表中的缓冲区,并不是都是空闲的。 ! !只有当被写盘刷新、解锁且没有其它进程引用
时(引用计数=0) ,才能挪作它用。 'buffer.c'用于实现缓冲区高速缓存功能。通过不让中断过程改变缓冲区,而是让调用者来执行,避免了竞争条件(当然除改变数据以外)。注意!由于中断可以唤醒一个调用者,因此就需要开关中断指令(cli-sti)序列来检测等待调用返回。但需要非常地快(希望是这样)。

0.5 block_dev.c 文件

该文件包括 block_read()和 block_write()两个函数。 这两个函数是供系统调用函数 read()和 write()调用的

块设备读写操作所使用的函数之间的层次关系为:
• read(),write()
• block_read(),block_write(),file_read(),file_write(),read_pipe(),write()
• bread()或 breada()
• getblk()
• ll_rw_block()

0.6 file_dev.c 文件

该文件包括 file_read()和 file_write()两个函数。这两个函数是供系统调用函数 read()和 write()调用的

0.7  stat.c 文件

该程序实现取文件状态信息系统调用函数 stat()和 fstat(),并将信息存放在用户的文件状态结构缓冲区中。stat()是利用文件名取信息,而 fstat()是使用文件句柄(描述符)来取信息。

0.8 pipe.c 文件

本程序执行管道文件的读写操作,并实现了管道系统调用 pipe()

0.9exec.c 程序

本源程序实现对二进制可执行文件和 shell 脚本文件的加载与执行。其中主要的函数是函数do_execve(),它是系统中断调用(int 0x80)功能号__NR_execve()调用的 C 处理函数,是 exec()函数簇的主要实现函数。其主要功能为:
• 执行对参数和环境参数空间页面的初始化操作 -- 设置初始空间起始指针;初始化空间页面指针
数组为(NULl);根据执行文件名取执行对象的 I 节点;计算参数个数和环境变量个数;检查文件
类型,执行权限;
• 根据执行文件开始部分的头数据结构,对其中信息进行处理 -- 根据被执行文件I节点读取文件
头部信息;若是 Shell 脚本程序(第一行以#!开始) ,则分析 Shell 程序名及其参数,并以被执行
文件作为参数执行该执行的 Shell 程序;执行根据文件的幻数以及段长度等信息判断是否可执行; 
• 对当前调用进程进行运行新文件前初始化操作 -- 指向新执行文件的 I 节点;复位信号处理句柄;
根据头结构信息设置局部描述符基址和段长;设置参数和环境参数页面指针;修改进行各执行字
段内容;
• 替换堆栈上原调用 execve()程序的返回地址为新执行程序运行地址,运行新加载的程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值