欢迎来到天天文库
浏览记录
ID:44958770
大小:814.00 KB
页数:52页
时间:2019-11-06
《第5章 Linux内核简介》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章Linux内核简介主要内容Linux核心的一般结构进程的概念、进程的调度和进程通信文件系统的构成和管理内存管理设备驱动及中断处理5.1概述Linux系统大致可分为三层:靠近硬件的底层是内核,即Linux操作系统常驻内存部分。中间层是内核之外的shell层,即操作系统的系统程序部分。最高层是应用层,即用户程序部分从结构上看,Linux操作系统是采用单块结构的操作系统。一般说来,可以将操作系统划分为内核和系统程序两部分。●进程控制系统用于进程管理、进程同步、进程通信、进程调度和内存管理等。●内存管理控制内存分配与回收。●文件系统管理文件、分配文件空间、管理空闲空间、控制对文件的访问并为用户检
2、索数据。●Linux系统支持三种类型的硬件设备:字符设备、块设备和网络设备。●核心底层的硬件控制负责处理中断以及与机器通信。5.2进程管理5.2.1进程和线程的概念1.进程及其状态简单说来,进程就是程序的一次执行过程。进程至少要有三种基本状态。这三种基本状态是:运行态、就绪态和封锁态(或等待态)。进程的状态可依据一定的条件和原因而变化2.Linux进程状态3.进程的模式和类型在Linux系统中,进程的执行模式划分为用户模式和内核模式按照进程的功能和运行的程序来分,进程划分为两大类:一类是系统进程,另一类是用户进程4.Linux线程Linux把线程定义为进程的“执行上下文”具有一段可执行的程序、
3、专用的系统堆栈空间、私有的“线程控制块”(即thread_struct数据结构)缺少自己的存储空间5.2.2进程的结构1.task_struct结构task_struct结构包含下列几方面的信息:·进程状态·调度信息·标志符·内部进程通讯·链接信息·时间和计时器·文件系统·虚拟内存·处理器信息2.进程系统堆栈每个进程都有一个系统堆栈,用来保存中断现场信息和进程进入内核模式后执行子程序(函数)嵌套调用的返回现场信息。每个进程的系统堆栈和task_struct数据结构之间存在紧密联系,因而二者物理存储空间也连在一起系统堆栈的大小静态确定,用户堆栈可在运行时动态扩展5.2.3对进程的操作1.进程的创
4、建各个进程构成了树形的进程族系内核在引导并完成了基本的初始化以后,就有了系统的第一个进程(即初始化进程,实际上是内核线程)。除此之外,所有其他的进程和内核线程都由这个原始进程或其子孙进程所创建。除初始化进程外,其他进程都是用系统调用fork()和clone()创建的。fork()是全部复制,而clone()有选择地复制2.进程的等待父进程可用系统调用wait3()等待它的任一个子进程终止,也可以用系统调用wait4()等待某个特定的子进程终止。wait3()算法如下:(1)如果父进程没有子进程,则出错返回。(2)如果发现有一个终止的子进程,则取出子进程的进程号,把子进程的CPU使用时间等加到父
5、进程上,释放子进程占用的task_struct和系统空间堆栈,以供新进程使用。(3)如果发现有子进程,但都不处于终止态,则父进程睡眠,等待由相应的信号唤醒。3.进程的终止进程可使用系统调用exit()终止自己其实现算法如下:(1)撤消所有的信号量。(2)释放其所有的资源,包括存储空间、已打开的文件、工作目录、信号处理表等。(3)置进程状态为“终止态”(TASK_ZOMBIE)。(4)向它的父进程发送子进程终止的信号。(5)执行进程调度。4.进程映像的更换改换进程映像的工作很复杂,是由系统调用execve()实现的,它用一个可执行文件的副本来覆盖该进程的内存空间。ELF可执行文件格式示意图exe
6、cve()系统调用的基本算法如下:(1)验证文件的可执行性,即用户有权执行它。(2)读文件头,检查它是一个可装入模块。(3)释放原有的内存空间。(4)按照可执行文件的要求分配新的内存空间,并装入内存。5.2.4进程调度进程调度机制主要涉及到调度方式、调度时机和调度策略1.调度方式基本上采用“抢占式优先级”方式2.调度策略——三种不同的调度策略SCHED_FIFO——短实时进程,对时间性要求比较强SCHED_RR——较长时间的实时进程,对应“时间片轮转法”SCHED_OTHER——交互式的分时进程,这类进程的优先权取决于两个因素:一个因素是进程剩余时间配额;另一个是进程的优先数nice——优先数
7、越小,其优先级越高后台进程的优先级低于任何交互(前台)进程的优先级3.调度时机(1)当前进程调用系统调用nanosleep()或者pause(),使自己进入睡眠状态,主动让出一段时间的CPU使用权。(2)进程终止,永久地放弃对CPU的使用。(3)在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长。(4)当唤醒一个睡眠进程时,发现被唤醒的进程比当前进程更有资格运行。(5)一个进程通过执行系
此文档下载收益归作者所有