Linux课程介绍-第五章-实例程序_第1页
Linux课程介绍-第五章-实例程序_第2页
Linux课程介绍-第五章-实例程序_第3页
Linux课程介绍-第五章-实例程序_第4页
Linux课程介绍-第五章-实例程序_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京理工大学珠海学院Zhuhai Campus of Beijing Institute of Zhuhai Campus of Beijing Institute of TechnologyTechnologyLinux系统管理与应用系统管理与应用计算机科学与技术教研室主讲:王震本章教学安排一、教学目的、要求:一、教学目的、要求:本章要求了解本章要求了解LinuxLinux内核中的基本概念。主要介绍内核中的基本概念。主要介绍LinuxLinux内核的进程管理、内存管理以及设备管理。重内核的进程管理、内存管理以及设备管理。重点掌握点掌握LinuxLinux内核的配置、裁剪与移植。内核的配置、裁

2、剪与移植。二、教学内容二、教学内容 第第1 1节节 概述概述 第第2 2节节 进程管理进程管理 第第3 3节节 内存管理内存管理 第第4 4节节 别名别名 第第5 5节节 设备管理设备管理 第第6 6节节 LinuxLinux内核配置、裁剪与移植内核配置、裁剪与移植 三、重点内容三、重点内容 进程的结构 内存的分配 设备的创建 内核的裁剪 主要内容主要内容vLinux核心的一般结构核心的一般结构v进程的概念、进程的调度和进程通信进程的概念、进程的调度和进程通信v文件系统的构成和管理文件系统的构成和管理v内存管理内存管理v设备驱动及中断处理设备驱动及中断处理 5.1 概 述v Linux系统大致

3、可分为三层:系统大致可分为三层:v 靠近硬件的底层是内核,即靠近硬件的底层是内核,即Linux操作系统常驻内存部分。操作系统常驻内存部分。v 中间层是内核之外的中间层是内核之外的shell层,即操作系统的系统程序部分。层,即操作系统的系统程序部分。v 最高层是应用层,即用户程序部分最高层是应用层,即用户程序部分 Linux内核概述vLinux有两种不同的含义有两种不同的含义 严格技术角度:指的时开放源代码的Unix类操作系统的内核 一般意义:指以Linux内核为基础的操作系统,包括内核、系统工具、完整的开发环境和应用Linux内核概述vkernel时操作系统的核心程序,由几个不时操作系统的核心

4、程序,由几个不同逻辑功能部分组成:同逻辑功能部分组成: 向外部提供对计算机设备的核心管理及调用,负责对计算机资源的抽象、分配和共享 代码分为两部分: 内核所在的地址空间称作内核空间 其他应用程序称为外部管理程序,大部分是对外围设备进行管理和界面操作,外部管理程序和用户进程所占据的地址空间成为外部空间Linux内核概述vUnix内核用内核用C语言写成语言写成v单一内核:所有的操作系统功能均被封装单一内核:所有的操作系统功能均被封装在内核中,与外部程序处于不同的地址空在内核中,与外部程序处于不同的地址空间。外部程序智能通过功能调用来访问内间。外部程序智能通过功能调用来访问内核核v微内核:内核只提供

5、最基本、最核心的一微内核:内核只提供最基本、最核心的一部分操作,如创建和删除任务、中断管理、部分操作,如创建和删除任务、中断管理、进程管理、存储器管理、进程间通信等,进程管理、存储器管理、进程间通信等,而其他功能如文件系统、网络协议栈则在而其他功能如文件系统、网络协议栈则在内核外操作。内核外操作。Linux内核的概述v微内核特点:微内核特点: 使操作系统具有良好的灵活性 操作系统内部结构简单清晰 程序代码维护十分方便 体现了面向对象式软件的结构特征Linux内核的概述v但是:但是:Linux内核采用单一内核内核采用单一内核v原因:原因: 注重效率 Linux将代码执行效率作为操作系统第一要务

6、Linux内核的程序员都是世界各地的黑客,比起结构的清晰,更注重功能的强大和高效率的代码v特点:特点: 每个功能部件不能轻易拆除Linux内核的概述硬件驱动程序逻辑文件系统虚拟文件系统硬件相关硬件无关内存管理硬件驱动程序网络协议网络接口子系统层子系统依赖关系图示符号进程间通信进程调度v从结构上看,从结构上看,Linux操作系统是采用单块操作系统是采用单块结构的操作系统。结构的操作系统。v一般说来,可以将操作系统划分为内核和一般说来,可以将操作系统划分为内核和系统程序两部分。系统程序两部分。进程控制系统用于进程管理、进程同步、进程通信、进程调度和内存管理等。内存管理控制内存分配与回收。文件系统管

7、理文件、分配文件空间、管理空闲空间、控制对文件的访问并为用户检索数据。Linux系统支持三种类型的硬件设备:字符设备、块设备和网络设备。核心底层的硬件控制负责处理中断以及与机器通信。5.2 进 程 管 理- 进程和线程的概念1进程及其状态进程及其状态v 简单说来,简单说来,进程就是程序的一次执行过程。v 进程至少要有三种基本状态。这三种基本状态是:运行态、进程至少要有三种基本状态。这三种基本状态是:运行态、就绪态和封锁态(或等待态)。就绪态和封锁态(或等待态)。v 进程的状态可依据一定的条件和原因而变化进程的状态可依据一定的条件和原因而变化 v 运行状态:指当前进程已分配运行状态:指当前进程已

8、分配CPOU,它是程序正在处理,它是程序正在处理器上执行的状态。在一般单一器上执行的状态。在一般单一CPU机制中,机制中,任何时刻处于任何时刻处于运行状态的进程至多只有一个。运行状态的进程至多只有一个。v 就绪状态:指进程已具备运行条件,但因为其他进程正占就绪状态:指进程已具备运行条件,但因为其他进程正占用用CPU,所以暂时不能运行而等待分配,所以暂时不能运行而等待分配CPU资源的状态。资源的状态。处于该状态的进程可以有多个。处于该状态的进程可以有多个。v 封锁状态:只进程因等待某种事件发生(如等待某一输入、封锁状态:只进程因等待某种事件发生(如等待某一输入、输出操作完成,等待其他进程发来的信

9、号等)而暂时不能输出操作完成,等待其他进程发来的信号等)而暂时不能运行的状体。处于封锁状态的进程尚不具备运行条件。也运行的状体。处于封锁状态的进程尚不具备运行条件。也成为不可运行状态或挂起状态。可以有多个。成为不可运行状态或挂起状态。可以有多个。2Linux进程状态进程状态 3进程的模式和类型进程的模式和类型v 在在Linux系统中,进程的执行模式划分为系统中,进程的执行模式划分为用户模式和和内核模式v 按照进程的功能和运行的程序来分,进程划分为两大类:一类是系统进程,另一类是用户进程 4Linux线程线程vLinux把线程定义为进程的把线程定义为进程的“执行上下文执行上下文” v具有一段可执

10、行的程序、专用的系统堆栈具有一段可执行的程序、专用的系统堆栈空间、私有的空间、私有的“线程控制块线程控制块”(即(即thread_struct数据结构)数据结构) v缺少自己的存储空间缺少自己的存储空间 5.2.2 进程的结构1task_struct结构结构vtask_struct结构包含下列几方面的信息:结构包含下列几方面的信息:v 进程状态进程状态v 调度信息调度信息 v 标志符(标志符(PID)v 内部进程通讯内部进程通讯(信号、管道、信号量等信号、管道、信号量等)v 链接信息(指向父进程、兄弟进程、子进程的指针)链接信息(指向父进程、兄弟进程、子进程的指针)v 时间和计时器(记录进程的

11、创建时间和运行所占用的时间和计时器(记录进程的创建时间和运行所占用的 CPU时间)时间)v 文件系统文件系统v 虚拟内存虚拟内存v 处理器信息处理器信息 2进程系统堆栈进程系统堆栈v 每个进程都有一个系统堆栈,用来保存中断现场信息和进每个进程都有一个系统堆栈,用来保存中断现场信息和进程进入内核模式后执行子程序(函数)嵌套调用的返回现程进入内核模式后执行子程序(函数)嵌套调用的返回现场信息。场信息。 v 每个进程的系统堆栈和每个进程的系统堆栈和task_struct数据结构之间存在数据结构之间存在紧密联系,因而二者物理存储空间也连在一起紧密联系,因而二者物理存储空间也连在一起 v 系统堆栈的大小

12、静态确定,用户堆栈可在运行时动态扩展系统堆栈的大小静态确定,用户堆栈可在运行时动态扩展 5.2.3 对进程的操作1进程的创建进程的创建v各个进程构成了树形的进程族系各个进程构成了树形的进程族系 v内核在引导并完成了基本的初始化以后,就有内核在引导并完成了基本的初始化以后,就有了系统的第一个进程(即初始化进程,实际上了系统的第一个进程(即初始化进程,实际上是内核线程)。除此之外,所有其他的进程和是内核线程)。除此之外,所有其他的进程和内核线程都由这个原始进程或其子孙进程所创内核线程都由这个原始进程或其子孙进程所创建。建。 v除初始化进程外,其他进程都是用系统调用除初始化进程外,其他进程都是用系统

13、调用fork( )和和clone( )创建的。创建的。 vfork( )是全部复制是全部复制 ,而,而clone( ) 有选择地有选择地复制复制 2进程的等待进程的等待v父进程可用系统调用父进程可用系统调用wait3( )等待它的任一个子进等待它的任一个子进程终止,也可以用系统调用程终止,也可以用系统调用wait4( )等待某个特定等待某个特定的子进程终止。的子进程终止。vwait3( )算法如下:算法如下:(1)如果父进程没有子进程,则出错返回。)如果父进程没有子进程,则出错返回。(2)如果发现有一个终止的子进程,则取出子进程的)如果发现有一个终止的子进程,则取出子进程的进程号,把子进程的进

14、程号,把子进程的CPU使用时间等加到父进程上,使用时间等加到父进程上,释放子进程占用的释放子进程占用的task_struct和系统空间堆栈,和系统空间堆栈,以供新进程使用。以供新进程使用。(3)如果发现有子进程,但都不处于终止态,则父进)如果发现有子进程,但都不处于终止态,则父进程睡眠,等待由相应的信号唤醒。程睡眠,等待由相应的信号唤醒。 等待进程-wait函数族v当用当用fork或者或者exac创建了新进程,为了收创建了新进程,为了收集新进程退出状态并防止出现僵尸进程,附集新进程退出状态并防止出现僵尸进程,附近承应该等待新进程的终止。近承应该等待新进程的终止。v僵尸进程即该进程已经完成并终止

15、,但是并僵尸进程即该进程已经完成并终止,但是并没有释放资源,仍然在进程表里面存在。没有释放资源,仍然在进程表里面存在。v孤儿进程是指进程创建完新进程还没有等新孤儿进程是指进程创建完新进程还没有等新进程结束,父进程就已经结束。这种进程的进程结束,父进程就已经结束。这种进程的父进程均改为父进程均改为init进程。进程。v父进程使用父进程使用wait或者或者waitpid收集子进程收集子进程的退出状态。的退出状态。v原型:原型:#include #include pid_t wait(int *status)pid_t waitpid(pid_t pid,int *status, int optio

16、ns);/其中其中status保存子进程的退出状态。保存子进程的退出状态。Pid等待进程的等待进程的pid。可能取值。可能取值如下:如下:值值描述描述-1等待任何PGID等于pid的绝对值的子进程1等待任何子进程0等待任何PGID等于调用进程的子进程1等待PID等于pid的子进程杀死程序v一个程序由于以下原因而终止一个程序由于以下原因而终止 它的main函数调用了return 它调用了exit 它调用了_exit 它调用了abort 它被一个信号终止进程的终止进程的终止v进程可使用系统调用进程可使用系统调用exit( )终止自己终止自己v其实现算法如下:其实现算法如下:(1)撤消所有的信号量。

17、)撤消所有的信号量。(2)释放其所有的资源,包括存储空间、已打开)释放其所有的资源,包括存储空间、已打开的文件、工作目录、信号处理表等。的文件、工作目录、信号处理表等。(3)置进程状态为)置进程状态为“终止态终止态”(TASK_ZOMBIE)。)。(4)向它的父进程发送子进程终止的信号。)向它的父进程发送子进程终止的信号。(5)执行进程调度。)执行进程调度。使用aort函数vAbort用于调试分析程序崩溃。但是仍然比用于调试分析程序崩溃。但是仍然比较粗暴,应该作为最后的手段使用,比如碰较粗暴,应该作为最后的手段使用,比如碰到类似严重内存不足的错误,无法使用程序到类似严重内存不足的错误,无法使用

18、程序的方法处理时再使用。的方法处理时再使用。v函数原型:函数原型:#include void abort (void)使用kill函数vKill用于一个进程终止另外一个进程用于一个进程终止另外一个进程v原型:原型:#include #include int kill(pid_t pid, int sig)Pid指定要终止的进程,而指定要终止的进程,而sig是要发送的信是要发送的信号(本节只关注号(本节只关注SIGKILL一种信号)一种信号) 4进程映像的更换进程映像的更换v 改换进程映像的工作很复杂,是由系统调用改换进程映像的工作很复杂,是由系统调用execve( )实现实现的,它用一个可执行

19、文件的副本来覆盖该进程的内存空间。的,它用一个可执行文件的副本来覆盖该进程的内存空间。v ELF可执行文件格式示意图可执行文件格式示意图 v execve( )系统调用的基本算法如下:系统调用的基本算法如下:(1)验证文件的可执行性,即用户)验证文件的可执行性,即用户 有权执行它。有权执行它。(2)读文件头,检查它是一个可装入模块。)读文件头,检查它是一个可装入模块。(3)释放原有的内存空间。)释放原有的内存空间。(4)按照可执行文件的要求分配新的内存空间,并装入内存。)按照可执行文件的要求分配新的内存空间,并装入内存。5.2.4 进程调度v 进程调度机制主要涉及到调度方式、调度时机和调度策略

20、进程调度机制主要涉及到调度方式、调度时机和调度策略1调度方式调度方式v 基本上采用基本上采用“抢占式优先级抢占式优先级”方式方式 2调度策略调度策略三种不同的调度策略三种不同的调度策略 v SCHED_FIFO短实时进程,对时间性要求比较强短实时进程,对时间性要求比较强 v SCHED_RR较长时间的实时进程,对应较长时间的实时进程,对应“时间片轮转时间片轮转法法” v SCHED_OTHER交互式的分时进程,这类进程的优先交互式的分时进程,这类进程的优先权取决于两个因素:一个因素是进程剩余时间配额;另一个权取决于两个因素:一个因素是进程剩余时间配额;另一个是进程的优先数是进程的优先数nice

21、 优先数越小,其优先级越高优先数越小,其优先级越高 v 后台进程的优先级低于任何交互(前台)进程的优先级后台进程的优先级低于任何交互(前台)进程的优先级 3调度时机调度时机(1)当前进程调用系统调用)当前进程调用系统调用nanosleep( )或者或者pause( ),使自己进入睡眠状态,主动让出一段时间的,使自己进入睡眠状态,主动让出一段时间的CPU使用权。使用权。(2)进程终止,永久地放弃对)进程终止,永久地放弃对CPU的使用。的使用。(3)在时钟中断处理程序执行过程中,发现当前进程连续)在时钟中断处理程序执行过程中,发现当前进程连续运行的时间过长。运行的时间过长。(4)当唤醒一个睡眠进程

22、时,发现被唤醒的进程比当前进)当唤醒一个睡眠进程时,发现被唤醒的进程比当前进程更有资格运行。程更有资格运行。(5)一个进程通过执行系统调用来改变调度策略或者降低)一个进程通过执行系统调用来改变调度策略或者降低自身的优先权(如自身的优先权(如nice命令),从而引起立即调度。命令),从而引起立即调度。4调度算法调度算法5.2.5 shell基本工作原理 v 它不属于内核部分,它不属于内核部分,而是在核心之外,而是在核心之外,以用户态方式运行。以用户态方式运行。其基本功能是解释并其基本功能是解释并执行用户打入的各种执行用户打入的各种命令,实现用户与命令,实现用户与Linux核心的接口。核心的接口。

23、v后面是本章节的实例部分。请各位同学自己后面是本章节的实例部分。请各位同学自己把代码敲到计算机里面,并进行编译、运行。把代码敲到计算机里面,并进行编译、运行。v编译的工具为计算机自带的编译的工具为计算机自带的gcc工具工具进程属性v进程的组成元素进程的组成元素 程序的当前上下文(context),它是程序当前执行的状态 程序的当前执行目录 程序访问的文件和目录 程序的信任状态,或者叫做访问权限 内存和其他分配给进程的资源进程标识号v进程的两个知名属性:进程号(进程的两个知名属性:进程号(Process ID, PID)和父进程号()和父进程号(Parent Process ID,PPID)vP

24、ID/PPID都为整数,唯一标识一个进程都为整数,唯一标识一个进程v所有的进程有个共同的祖先:所有的进程有个共同的祖先:pid=1的进的进程,即程,即init进程进程Real和effective标识号v进程的属性进程的属性属性属性类型类型函数函数进程IDpid_tgetpid(void)父进程IDpid_tgetppid(void)真实用户IDuid_tgetuid(void)有效用户IDuid_tgeteuid(void)真实用户组IDuid_tgetgid(void)有效用户组IDuid_tgetegid(void)用户和用户组的信息vgetlogin()函数返回用户的登录名()函数返回用户的登录名vgetpwname()函数以上面的函数返回值函数以上面的函数返回值为参数,从为参数,从/etc/passw

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论