认识Linux的进程管理.ppt

上传人:小飞机 文档编号:6343238 上传时间:2023-10-18 格式:PPT 页数:31 大小:431KB
返回 下载 相关 举报
认识Linux的进程管理.ppt_第1页
第1页 / 共31页
认识Linux的进程管理.ppt_第2页
第2页 / 共31页
认识Linux的进程管理.ppt_第3页
第3页 / 共31页
认识Linux的进程管理.ppt_第4页
第4页 / 共31页
认识Linux的进程管理.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《认识Linux的进程管理.ppt》由会员分享,可在线阅读,更多相关《认识Linux的进程管理.ppt(31页珍藏版)》请在三一办公上搜索。

1、1,1.5 Linux操作系统概述,1.5.1 Linux的起源的历史,Linux是Internet的产物,Linus利用MINIX开发了两个进程用以写/读数据,并以此为契机添加硬盘驱动程序、小型文件系统以至形成了Linux的雏型 Linus将这个雏型放在校园网上征求大家的意见。Linux从一开始就是一个以编程爱好为主的系统。,最初是由芬兰的赫尔辛基大学的计算机系二年级学生Linus Torvalds编写的,他还在读大二时,因不满学校服务器一次只能接待16人上网,于是自己开始在MINIX的平台上开发程序,MINIX是杰出的计算机科学教育学家安德鲁S坦尼鲍姆(Andrews Tanenbaum)

2、自行设计的微型UNIX,是专门用于教学、科研的操作系统,其出发点在于:1.核心程序的开发;2.对用户系统支持。,这就为那些对操作系统怀有强烈认识、了解欲望的人们提供了一个学习的机会。,2,在Linus的主持开发下,一个由广大爱好操作系统的网民们共同扶持的新型操作系统问世了,这就是闻名于世的Linux操作系统。,1.5.2 Linux的特点,几乎所有在其它UNIX操作系统的实现上所能找到的功能。,还包括一些UNIX系统的 其他实现版本上没有的功能。,3,Linux可以支持各种类型的文件系统。,多任务、多用户的32位操作系统。,Linux支持UNIX的全部功能,而价格比UNIX系统更为便宜。,Li

3、nux提供了TCP/IP 网络协议的完备实现,同时也支持完备的TCP/IP客户与服务器功能。,支持广泛的硬件。,丰富的软件支持。,强大的网络通信功能。,独特的内核机制。,比较linux系统与windows系统的特点,26,4,Linux系统的体系结构如图1-4所示,5,1.5.3 Linux的基本结构,1.Linux系统的体系结构,(1)用户应用程序,(2)操作系统服务,(3)系统调用接口,(4)Linux内核,(5)硬件平台,2、当一个用户程序在Linux系统之上运行时,它成为一个用户进程。,1、用户应用程序是运行在Linux系统最高层的一个庞大的软件集合。,3、该层对应不同的应用程序,如字

4、处理程序、网络浏览器等。,6,1、通常被看作操作系统的一个部分,如视窗系统、Shell等。,2、还包括同内核的程序接口,如编译工具和库等。,(1)用户应用程序,(2)操作系统服务,(3)系统调用接口,(4)Linux内核,(5)硬件平台,1.5.3 Linux的基本结构,1.Linux系统的体系结构,7,(1)用户应用程序,(2)操作系统服务,(3)系统调用接口,(4)Linux内核,(5)硬件平台,1.5.3 Linux的基本结构,1.Linux系统的体系结构,在应用程序中,可通过系统调用来调用操作系统内核中特定的过程,以实现特定的服务。,例如,在程序中安排一条创建进程的系统调用,则操作系统

5、内核便会为之创建一个新进程。,8,(1)用户应用程序,(2)操作系统服务,(3)系统调用接口,(4)Linux内核,(5)硬件平台,1.5.3 Linux的基本结构,1.Linux系统的体系结构,内核实际是抽象的资源操作到具体硬件操作细节之间的接口。,这是本课程要介绍的重点。内核是操作系统的灵魂,它负责管理磁盘上的文件、内存,负责启动并运行程序,负责从网络上接收和发送数据包等。,9,(1)用户应用程序,(2)操作系统服务,(3)系统调用接口,(4)Linux内核,(5)硬件平台,1.5.3 Linux的基本结构,1.Linux系统的体系结构,这一层包括了Linux安装时需要的所有可能的物理设备

6、。,1、CPU2、内存3、硬盘4、网络硬件,10,2.4 Linux的用户接口,Linux 与 windows的区别,shell既是命令行解释程序,也是强大的编程语言,为用户提供编程工具,X-Window是建立在客户-服务器模型基础上的,基于网络协议的一个窗口管理系统,11,2.4.1 Linux的外壳shell,shell的中文含义是“壳”在Linux的任意版本中都沿用了UNIX的Shell“外壳”而不同版本的Linux或UNIX都有不同的shell也即shell有多种:sh,bash,tesh,cshs Sh-Bourne shell-在众多的shell中,最早出现,也是最早UNIX sh

7、ellLinux事实上是采用了Bourne shell的一个变种,也叫Bash shell作为默认的shell。以“%”做提示符C shell-是美国加利福尼亚大学的Bill Joy开发的,他考虑到用户界面的友好性。以“$”做提示符,12,C shell的编程接口不如Bourne shell,但却支持Bourne shell 不支持的许多命令 Linux提供的Tesh是C shell的一个扩展版本。shell从功能上-是一个命令语言解释器,拥有自己内建的shell命令集。shell-还能被Linux系统中其它有效的实用程序和应用程序所调用。shell-在成功的登录进入系统并启动后,将始终作为与

8、系统内核的交互手段一直到退出系统,系统上的每位用户都拥有一个缺省的shell,路径为/etc/passwd的文件被指定,13,shell执行命令解释程序的过程是这样的:,14,除了shell界面以外,Linux还配有图形窗口界面,这就是Xwindow系统。X window系统本身就是一个客户机服务系统,服务器显示运行在客户机的程序中。服务程序与客户程序之间借助X通信协议进行通信。X window系统最基本的部分(也称为 SEVER)只提供最基本的窗口功能如建立窗口、在窗口中写入文字或画图形、控制键盘和鼠标的输入和取消窗口等即它不提供用户界面,而只提供建立界面的基本结构 其余的大部分关于窗口的操

9、作由窗口管理器来处理窗口管理器是和核心相分离的一个特殊的客户程序可以改变包括缩放、移动、关闭窗口的方法以及启动程序的方法,2.4.2 X windowLinux的图形窗口界面,15,X Window和MS Windows不同之处鼠标操作不同界面和窗口形状不同而最大 区别在于:X Window 具有灵活的界面各个界面之间是完全不同的这主要归功于它的窗口管理器这可是MS Windows中所没有的。X Window可以通过窗口管理器:生成多个界面MS Windows中只有一套界面操作方式X Window的各个界面之间是完全不同的MS Windows通过定制工具改变界面,界面差异很细微,16,X Wi

10、ndow 和 MS Windows相似的地方:两者都使用图形界面;都主要通过鼠标操作来配合键盘完成任务;都可以处理多个窗口;都可以建立窗体、菜单和对话框等。,17,Linux是一个多任务的开放系统,进程就是许多分离的任务(Task)。每一个进程都有一定功能和权限,运行自己的虚拟地址空间的程序。它们彼此独立,并通过进程间的通信机制实现进程之间的同步与互斥。Linux通过进程调度程序在多个进程之间实现合理的调度。在Linux系统中,进程与任务是相同的概念。Linux中,进程被定义为进程映象(Process Image)的执行。这里的进程映象即为进程的实体部分,它由正文段(Text)、用户数据段(U

11、ser Segment)以及系统数据段(System Segment)组成,从而形成了进程的一个执行环境。,3.9 Linux的进程管理,1.Linux的进程和进程组成,3.9.1 Linux的进程,18,在Intel386体系结构中,Linux利用其保护模式、特权级等特征,把每个进程分为内核态(特权级0)和用户态(特权级3)两种级别。中断和系统调用是内核态向用户态提供服务的重要途径。,图3.33 Linux进程的组成,程序是由一组指令和数据组成的静态的概念,而进程则是由正文段、用户数据段和系统数据段组织在一起的动态实体。Linux的进程组成如图3.33所示。,19,2.Linux的进程调度,

12、Linux内核的进程调度程序按照一定的策略来选择最应该在CPU上运行的进程,并通过不断地保存和恢复进程的运行环境,使得进程能得以占有CPU,运行完毕。通常,由于系统中只有一个CPU,当然也可以有多个CPU(Linux支持SMP对称多处理机),而系统中进程的数量远远多于CPU的数量,为了提高CPU的利用率,Linux采用了一系列的调度策略来保证公平和高效。,Linux的进程调度分为实时进程调度和普通进程调度两种。Linux的进程调度操作由schedule()函数完成。这是一个只在内核态运行的函数,函数代码为所有进程共享。任何进程,当它从系统调用返回时,都会转入schedule(),重新进行调度,

13、或者,当中断产生时,大多数的中断服务程序在完成各自的中断处理后,也会转入schedule()。,20,3.Linux进程的生命周期,Linux中,当用户打入shell命令,要求执行一个命令文件,要求执行一个命令文件或运行各种应用程序时,操作系统就为每个程序建立一个运行环境,从而形成进程的动态实体,此即创建了进程。当进程调度程序选中了该进程后,为其恢复现场,进程就在CPU上开始了运行。,随着程序中指令的执行,进程实体也在动态地变化,例如寄存器的值、用以保存各种临时数据(传递给函数的参数、函数调用的返回地址、函数中的变量等)的堆栈、打开文件的数量等等。进程在运行中也可以放弃原有的正文段,而连入新的

14、正文段,也可以扩大或缩小自己用户数据段的长度。进程执行环境的动态变化充分表明进程是动态的执行活动。,21,*3-9-2 Linux的进程控制块,进程运行完自己的正文段后,就进入消亡状态。此时,进程将释放所占用的系统资源,唤醒其父进程为其善后处理,从而结束了进程的生命周期。,进程在运行中,还需申请其他的系统资源。为了运行它的指令,要得到CPU、要申请物理内存来存放进程的实体、通过文件系统来打开、读写和关闭文件、还要申请使用各种系统的外部设备。进程的资源请求均由Linux的各种资源管理子系统来实现。这些资源管理子系统通过各种资源的管理策略,满足进程对资源的共享,提高资源的使用效率。,进程控制块(P

15、CB)是进程抽象化的数据表示。操作系统根据PCB而感知一个进程的存在并对进程进行控制和管理。Linux中,每一个进程都由一个task_struct数据结构来描述,此即为进程的PCB,其中记录了进程的所有的控制和管理信息。,22,1.进程的标识信息(Process Identifiers)2.进程的调度状态信息(state)3.进程的调度信息(scheduling)4.进程的家族信息及链接信息5.时间和定时器信息(Times and Timers)6.进程通信信息(IPC,Inter-Process Communication)7.文件系统信息(File System)8.虚拟内存信息(Virt

16、ual Memory)9.页面管理信息(Page Management)10.对称多处理器(SMP)信息11.其他信息,进程控制块的信息包括:,task_struct结构是Linux系统对进程进行控制的唯一最有效的手段。,23,在进程的生命周期内,进程所处的状态经常在变化着。通过这些状态的变化刻划了进程从创建,活动到消亡的过程。,3.9.3 Linux的进程状态,Linux的进程状态转换如图3.34所示。,1.Linux的进程状态,在每个进程的task_struct结构中,Linux定义了state域来描述进程的调度状态。Linux的进程共有五种调度状态。,2.Linux进程状态的转换,Lin

17、ux的进程调度,Linux是一种典型的分时操作系统,主要采用了基于优先权的时间片轮转法为进程分配CPU。按照这种调度方法,系统给每个运行进程分配一个时间片,而优先权的大小又决定了哪个进程被调度运行。因此,时间片和优先权这两个参数对Linux的进程调度起着非常重要的作用。,24,进程的优先权是进程调度的重要依据,Linux通过进程的权重weight,由函数goodness()来完成这一工作。该函数中,首先根据进程task_struct结构中的policy来区分是实时进程还是普通进程。对这两类进程,分别采用不同的标准来确定其权重。,2.进程优先权的确定,1.进程调度的有关参数,但是,Linux的进

18、程调度并不局限于某一种调度策略,它融合了基于优先权的轮法调度、基于优先权的先进先出调度以及多级反馈轮转调度的策略,因而具有很高的综合性。,对于普通进程,采用动态的优先权的方法来确定其权重。对于实时进程,counter只是用来表示该进程的剩余时间片,并不代表权重,其权重决定于rt_priority。,25,为了进行调度,Linux将所有的可运行态的进程都排入一个可运行队列中。该队列通过task_struct结构中的两个指针next_task和prev_task来链接。如图3.35所示。,3.Linux进程的可运行队列,4.Linux的进程调度,Linux在一个可运行队列中,对先进先出的实时进程、

19、轮转调度方式的实时进程及普通进程分别实现了不同的调度。进程调度程序在可运行队列中逐个比较各个可运行进程的权重,从中选出一个权重最大的进程来分配CPU。如果进程的权重相同,在可运行队列中位置越靠前者越优先。,26,1.当进程状态转换时。2.当前进程的时间片用完时(cuprentcounter=0),要重新选择一个进程。3.当设备驱动程序执行长而重复的任务时,直接调用schedule()。4.进程从中断、异常及系统调用处理后返回到用户态时。,5.Linux进程调度的时机,Linux系统中,引起进程调度的时机有:,3.9.5 Linux的进程控制,Linux是一个多进程的操作系统,其中绝大多数进程都

20、有一定的生命周期。进程由于创建而“诞生”,由于终止而“消亡”,它是一个动态的过程。,27,系统启动时,运行在内核模式,此时,只有一个进程在系统中运行,即初始化进程。系统初始化结束时,初始化进程启动一个内核线程(即init),然后自己则保持在空循环(idle)状态。当系统中没有可运行的进程时,进程调度程序将运行这一idle进程。Idle进程是唯一非动态分配task_struct结构的进程,它的task_struct结构在内核编译时分配,称为init_task。图3.36,给出了进程从创建到终止的全过程。,1.进程的建立过程,28,Shell进程建立的环境,键入Shell命令,fork()(创建子

21、进程),Execve()(执行新的文件),wait()(等待子进程终止),exit()(自我终止),(父进程继续运行),非0,返回子进程标识,返回0,子进程,父进程,图3.36 进程从创建到终止的全过程,29,Linux提供了三个系统调用来创建进程,即fork()、clone()、vfork(),这三个系统调用都用于进程的创建。而实际上,它都是通过调用do_fork()函数来实现具体创建工作的,但它们传递给do_fork()的参数不同,因此创建出的进程是不同的。这三个系统调用进入内核后对应的处理函数如下:,2.进程的创建,sys_fork()用于全面地复制,创建出的新进程与父进程几乎相同。sy

22、s_clone()用于创建一个线程,这个线程可以是内核线程,也可以是用户线程。sys_vfork()也用于创建线程,但主要只是作为创建进程的中间步骤,目的在于提高创建时的效率,减少系统开销。,30,3.进程的终止,(1)被动方式,强行消灭。例如,用户可以使用kill-9 325命令,给325号进程发出SIGKILL信号,强制终止该进程。(2)主动方式,自我消亡。任何一个用户进程都不可避免的在执行完毕时通过系统调用exit()将自己消灭。这种方式较第一种方式更为普遍。,进程的终止有两种方式:,31,Linux以进程为单位分配和管理资源。由于保护的缘故,一个进程不能直接访问另一个进程的资源,也就是说,进程之间是互相封闭的。但是,在一个复杂的应用系统中通常会使用多个进程来共同完成一项任务,这就要求进程之间能够互相通信,共享资源,交流信息和协调工作。所以,操作系统内核必须提供进程的通信(IPC)机制。Linux支持大量的进程通信机制。除了信号和管道(包括命名管道)外,还支持UNIX系统V中的IPC机制,即消息队列、信号量和共享内存。:,*3.9.6 Linux的进程通信,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号