一、内核导论
文件子系统:负责管理文件包括:分配文件空间、管理空闲空间,控制对文件的存取,为用户检索数据。
进程控制子系统: 进程同步;进程间通信;存储管理;进程调度。
硬件控制:负责处理中断及与机器通信,中断不是由特殊的进程服务的,而是由内核中特殊的函数服务的,这些特殊函数是在当前运行的进程的上下文被调用的
二、文件的内部表示:
1、索引节点表(inode table)
每个文件都有一个索引节点(inode)(包含文件所有者、存取权限、及其存取时间等信息)。但是,每个文件可以有多个名字,每个名字被称为一个link(链接)。一个进程使用名字检索一个文件时,内核每次分析文件名中的一个分量,检查该进程是否有检索路径中的目录,并且最终检索到该文件所对应的索引节点。如:open(“/fs2/mjb/rje/sourcefile”,1);当一个进程建立一个新文件时,内核分配给它一个尚未使用的索引节点。索引节点被存储在文件系统中(即磁盘索引节点表),但是当操作文件时,内核将它们读到内存索引节点表中,即:对系统中的每个活动的文件(被某个进程打开了),内存中索引节点表都包含一个条目。几个系统文件表条目可能对应于同一个内存索引节点表(不同进程打开同一个文件)以Linux为例,每个文件在内核中用inode结构体表示。
所有者 | mjb |
用户组 | root |
类型 | 整个文件 |
许可权 | rwxr-xr-x |
最近一次读文件时间 | 1984.10.23下午1:45 |
最近一次写文件时间 | 1984.10.22上午10:30 |
最近一次改变索引节点时间 | 1984.10.23下午1:30 |
大小 | 6030字节 |
2、文件表(file table)
是一个全局表,为系统中所有的进程共享。对每个活动的open, 它都包含一个条目。每个系统文件表的条目都包含文件偏移量、访问模式(读、写、or 读-写)以及指向它的文件描述符表的条目计数。以Linux为例,已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体
3、用户文件描述符表(user filedescriptor table)
是每个进程分配一个。标识着一个进程的所有打开了的文件。用户区的一部分,除非通过使用文件描述符的函数,否则程序无法对其进行访问。对进程中每个打开的文件,文件描述符表都包含一个条目。以Linux为例,每个进程用一个files_struct 结构体来记录文件描述符的使用情况,files_struct结构称为用户打开文件表,它是进程的私有数据。此外,每个进程用一个fs_struct结构体来描述进程的当前工作目录及其所在文件系统根目录下的索引节点。
父进程创建子进程,资源共享。每个进程都有唯一的标识,不同用户启动程序,产生不同的进程。
三、进程结构
一个进程是一个程序的执行,它是由一系列有格式的字节组成的,这些字节被解释成:机器指令、数据和栈区。当内核调度各个进程使之执行时,这些进程看似是同时执行的。而且,可以有多个进程是一个程序的实例。一个进程循着一个严格的指令序列执行,这个指令序列是自包含的,不会跳转到别的进程的指令序列上。进程通过系统调用与其他进程及外界进行通信。
进程包括以下八个:
1.标识号2.状态信息3.调度信息4.有关进程间通信信息5.进程链接信息6.时间定时器7.文件系统信息8.虚地址和物理内存之间的关系
其他:
1. 进程的标识:系统通过进程标识号(PID)唯一标识一个进程(是线性增长的)
2. 进程树及进程之间关系:0进程是一个特殊进程,它是在系统引导时被“手工”创建的,当它创建一个子进程(1进程-init进程,是系统中其他每个进程的祖先)之后,0进程就变成对换进程。
If(euid==0)判断是否为根用户。
除了0进程以外,每个进程都是被另外一个进程执行fork创建的。
3. 进程的上下文:
用户级上下文:由进程的正文、数据、用户栈和共享存储区组成
寄存器级上下文:程序计数器、处理机状态寄存器、栈指针、通用寄存器
系统级上下文:进程表表项、进程u区、本进程区表项、区表及页表、核心栈
4. 进程的控制
四、I/O子系统
1.UNIX/Linux系统包含两类设备:块设备、字符设备。每个设备有一个特殊文件名,可按文件方式存取。设备特殊文件有一个索引节点,在文件系统目录树中占据一个节点。设备特殊文件以存储在它的索引节点中的文件类型与其他文件相区别,其类型为:字符特殊文件或者 块特殊文件。当一个设备既有块接口又有字符接口时,由两个设备特殊文件所代表。
2.由块设备开关表(block deviceswitch table)和字符设备开关表(character device switch table)描述。每一种设备类型在表中有若干表项,这些表项在系统调用时引导内核转向适当的设备驱动程序接口设备文件的系统调用根据文件的类型通过这两个设备开关表汇集。对块设备,系统调用mount和umount也调用设备打开和关闭的过程块设备以及安装在文件系统上的文件的系统调用read和write调用高速缓冲算法,该算法又调用相应设备的策略过程。字符设备特殊文件的系统调用read,write,ioctl转向字符设备开关表中相应的过程。
3.是由机器相关的控制寄存器或操作设备的I/O指令,以及中断向量组成的:当一个设备中断出现时,系统识别发出中断的设备,并调用适当的中断处理程序。