最新嵌入式系统第六章嵌入式Linux操作系统PPT课件.ppt
《最新嵌入式系统第六章嵌入式Linux操作系统PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新嵌入式系统第六章嵌入式Linux操作系统PPT课件.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式系统第六章嵌入式嵌入式系统第六章嵌入式LinuxLinux操作系统操作系统5.1 与与Linux相关术语相关术语n nGNUn nGUNGUN项目项目(GNU Project)(GNU Project)开始于开始于19841984年,主要由自由软年,主要由自由软件基金(件基金(Free Software FoundationFree Software FoundationFSFFSF)资助的)资助的一个项目,目标是开发一个自由的、一个项目,目标是开发一个自由的、UNIXUNIX类型的操作类型的操作系统,称为系统,称为GNUGNU系统。系统。n nGNUGNU是是“GNUGNU s Not
2、 UNIXs Not UNIX”的首字母的递归缩写。的首字母的递归缩写。n nGPLn n所有的所有的GNUGNU软件和派生工作均遵循软件和派生工作均遵循GNUGNU通用公通用公共许可证,即共许可证,即GPLGPL。n n5.2.3 进程管理进程管理n n进程的基本概念进程的基本概念 进程就是运行中的程序。一个运行着的程序,可能有多个进程。进程就是运行中的程序。一个运行着的程序,可能有多个进程。对于进程来说,可以看成是一个具有独立功能的程序关于某个数据集对于进程来说,可以看成是一个具有独立功能的程序关于某个数据集合的一次可以并发执行的运行活动,是处于活动状态的计算机程序合的一次可以并发执行的运
3、行活动,是处于活动状态的计算机程序。n n进程的属性进程的属性 进程的定义:一个进程是一个程序的一次执行的过程;程进程的定义:一个进程是一个程序的一次执行的过程;程序是静态的,它是一些保存在磁盘上的可执行的代码和数序是静态的,它是一些保存在磁盘上的可执行的代码和数据集合;进程是一个动态的概念,它是据集合;进程是一个动态的概念,它是LinuxLinux系统的基本的系统的基本的调度单位。一个进程由如下元素组成:调度单位。一个进程由如下元素组成:程序读取的上下文,它表示程序读取执行的状态。程序读取的上下文,它表示程序读取执行的状态。程序当前执行的目录。程序当前执行的目录。程序服务的文件和目录。程序服
4、务的文件和目录。程序访问的权限。程序访问的权限。内存和其他分配给进程的系统资源内存和其他分配给进程的系统资源。n nLinuxLinux进程中最知名的属性就是它的进程号(进程中最知名的属性就是它的进程号(Process Idenity Process Idenity NumberNumber,PIDPID)和它的父进程号()和它的父进程号(Parent Process IDParent Process ID,PPIDPPID)。)。PIDPID、PPIDPPID都是非零正整数。一个都是非零正整数。一个PIDPID唯一地标唯一地标识一个进程。一个进程创建新进程称为创建了子进程识一个进程。一个进程
5、创建新进程称为创建了子进程(Child ProcessChild Process)。相反地,创建子进程的进程称为父进)。相反地,创建子进程的进程称为父进程。所有进程追溯其祖先最终都会落到进程号为程。所有进程追溯其祖先最终都会落到进程号为1 1的进程的进程身上,这个进程叫做身上,这个进程叫做initinit进程,是内核自举后第一个启动的进程,是内核自举后第一个启动的进程。进程。initinit进程扮演终结父进程的角色。因为进程扮演终结父进程的角色。因为initinit进程永远进程永远不会被终止,所以系统总是可以确信它的存在,并在必要不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它为参
6、照。的时候以它为参照。n nLinuxLinux下进程的结构下进程的结构 代码段是存放了程序代码的数据,假如机器中有数个进程运行相同的代码段是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。而数据段则存放程序一个程序,那么它们就可以使用同一个代码段。而数据段则存放程序的全局变量、常数及动态数据分配的数据空间。堆栈段存放的就是子的全局变量、常数及动态数据分配的数据空间。堆栈段存放的就是子程序的返回地址、子程序的参数及程序的局部变量。堆栈段包含在进程序的返回地址、子程序的参数及程序的局部变量。堆栈段包含在进程控制块程控制块PCBPCB(Process
7、Control BlockProcess Control Block)中。)中。PCBPCB处于进程核心堆栈的处于进程核心堆栈的底部,不需要额外分配空间。底部,不需要额外分配空间。n n进程状态进程状态进程在生存周期中的各种状态及状态的转换进程在生存周期中的各种状态及状态的转换 。LinuxLinux系统的进程状态模型的各种状态:系统的进程状态模型的各种状态:用户状态:用户状态:用户状态:用户状态:进程在用户状态下运行的状态。进程在用户状态下运行的状态。内核状态:内核状态:内核状态:内核状态:进程在内核状态下运行的状态。进程在内核状态下运行的状态。内存中就绪:内存中就绪:内存中就绪:内存中就绪
8、:进程没有执行,但处于就绪状态,只要内核调度它,就进程没有执行,但处于就绪状态,只要内核调度它,就可以执行。可以执行。内存中睡眠:内存中睡眠:内存中睡眠:内存中睡眠:进程正在睡眠并且进程存储在内存中,没有被交换到进程正在睡眠并且进程存储在内存中,没有被交换到SWAPSWAP设备。设备。就绪且换出:就绪且换出:就绪且换出:就绪且换出:进程处于就绪状态,但是必须把它换入内存,内核才能进程处于就绪状态,但是必须把它换入内存,内核才能再次调度它运行。再次调度它运行。睡眠且换出:睡眠且换出:睡眠且换出:睡眠且换出:进程正在睡眠,且被换出内存。进程正在睡眠,且被换出内存。被抢先:被抢先:被抢先:被抢先:进
9、程从内核状态返回用户状态时,内核抢先于它做了上下文进程从内核状态返回用户状态时,内核抢先于它做了上下文切换,调度了另一个进程。原先这个进程就处于被抢先状态。切换,调度了另一个进程。原先这个进程就处于被抢先状态。创建状态:创建状态:创建状态:创建状态:进程刚被创建。该进程存在,但既不是就绪状态,也不是进程刚被创建。该进程存在,但既不是就绪状态,也不是睡眠状态。这个状态是除了进程睡眠状态。这个状态是除了进程0 0以外的所有进程的最初状态。以外的所有进程的最初状态。僵死状态(僵死状态(僵死状态(僵死状态(zombiezombie):进程调用:进程调用exitexit结束,进程不再存在,但在进程结束,
10、进程不再存在,但在进程表项中仍有记录,该记录可由父进程收集。表项中仍有记录,该记录可由父进程收集。n n进程的创建与结束进程的创建与结束 在在LinuxLinux系统中,通常使用系统中,通常使用fork()fork()系统调用用来复制一个现有进程,从系统调用用来复制一个现有进程,从而创建一个全新的进程。被复制的进程被称为父进程,新产生的进程而创建一个全新的进程。被复制的进程被称为父进程,新产生的进程被称为子进程。被称为子进程。为了方便用户处理父进程与子进程之间的一些事物,为了方便用户处理父进程与子进程之间的一些事物,LinuxLinux允许父进程允许父进程在创建了进程之后,通过调用在创建了进程
11、之后,通过调用wait()wait()先进入等待状态,以使子进程先先进入等待状态,以使子进程先运行,然后再决定自己的进一步行为,这成为父进程的阻塞方式。运行,然后再决定自己的进一步行为,这成为父进程的阻塞方式。进程的结束可以使用进程的结束可以使用exit()exit()系统调用,无论在执行到什么位置,只要执系统调用,无论在执行到什么位置,只要执行到行到exitexit系统调用,进程会停止所有操作并将其占用的资源释放掉。系统调用,进程会停止所有操作并将其占用的资源释放掉。n n进程的创建与结束进程的创建与结束有一个更简单的执行其他程序的函数有一个更简单的执行其他程序的函数systemsystem
12、,参数,参数stringstring传递给一个命传递给一个命令解释器(一般为令解释器(一般为shsh)执行,即)执行,即stringstring被解释为一条命令,由被解释为一条命令,由shsh执行该执行该命令。命令。除了除了systemsystem之外,系统调用之外,系统调用execexec来执行一个可执行文件,来代替当前进来执行一个可执行文件,来代替当前进程的执行映像。程的执行映像。系统调用系统调用exitexit的功能是终止发出调用的进程。的功能是终止发出调用的进程。父进程和子进程的关系是管理和被管理的关系,当父进程父进程和子进程的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终
13、止。但子进程终止时,父进程终止时,子进程也随之而终止。但子进程终止时,父进程并不一定终止。并不一定终止。n n进程的组成 n n在在LinuxLinux中,进程是以进程号中,进程是以进程号PIDPID(Process IDProcess ID)作为标示。)作为标示。任何对进程进行的操作都要给与其相应的任何对进程进行的操作都要给与其相应的PIDPID号。每个进号。每个进程都属于一个用户,进程要配备其所属的用户编号程都属于一个用户,进程要配备其所属的用户编号UIDUID。此外,每个进程都属于多个用户组,所以进程还要配备其此外,每个进程都属于多个用户组,所以进程还要配备其归属的用户组编号归属的用户组
14、编号GIDGID的数组。的数组。n n进程运行的环境成为进程上下文。进程运行的环境成为进程上下文。LinuxLinux中进程的上下文由中进程的上下文由进程控制块进程控制块PCBPCB(Process Control BlockProcess Control Block)、正文段、数据)、正文段、数据段以及用户堆栈组成。其中,正文段存放该进程的可执行段以及用户堆栈组成。其中,正文段存放该进程的可执行代码,数据段存放进程中静态产生的数据结构,而代码,数据段存放进程中静态产生的数据结构,而PCBPCB包包括进程的编号、状态、优先级以及正文段和数据段中数据括进程的编号、状态、优先级以及正文段和数据段中
15、数据分布的大概情况。分布的大概情况。n n一个称作进程表(一个称作进程表(Process TableProcess Table)的链表结构将系统中所)的链表结构将系统中所有的有的PCBPCB块联系起来块联系起来。n n启动一个进程有两个主要途径:手工启动和调度启动,后者是事先进启动一个进程有两个主要途径:手工启动和调度启动,后者是事先进行设置,根据用户要求自行启动。由用户输入命令,直接启动一个进行设置,根据用户要求自行启动。由用户输入命令,直接启动一个进程便是手工启动进程。但手工启动进程又可以分为很多种,根据启动程便是手工启动进程。但手工启动进程又可以分为很多种,根据启动的进程类型不同、性质不
16、同,实际结果也不一样。的进程类型不同、性质不同,实际结果也不一样。n n(1 1)前台启动)前台启动前台启动是手工启动一个进程的最常用的方式。用户键入一个命令前台启动是手工启动一个进程的最常用的方式。用户键入一个命令“dfdf”,就已经启动了一个进程,而且是一个前台的进程。,就已经启动了一个进程,而且是一个前台的进程。n n(2 2)后台启动)后台启动直接从后台手工启动一个进程用得比较少一些,除非是该进程甚为耗直接从后台手工启动一个进程用得比较少一些,除非是该进程甚为耗时,且用户也不急着需要结果。时,且用户也不急着需要结果。n n进程的状态和调度进程的状态和调度 一般来说,所有进程都要经历三种
17、状态,即运行态、就绪态和阻塞态一般来说,所有进程都要经历三种状态,即运行态、就绪态和阻塞态 在在LinuxLinux系统中将上述三种状态进行重新组织,得到了系统中将上述三种状态进行重新组织,得到了LinuxLinux进程的几进程的几个状态:个状态:n n进程的调度进程的调度 为了让为了让LinuxLinux来管理系统中的进程,每个进程用一个来管理系统中的进程,每个进程用一个task_structtask_struct数据结数据结构来表示(任务与进程在构来表示(任务与进程在LinuxLinux中可以混用)。数组中可以混用)。数组tasktask包含指向系统包含指向系统中所有中所有task_str
18、ucttask_struct结构的指针。这意味着系统中的最大进程数目受结构的指针。这意味着系统中的最大进程数目受tasktask数组大小的限制,缺省值一般为数组大小的限制,缺省值一般为512512。创建新进程时,。创建新进程时,LinuxLinux将从系统将从系统内存中分配一个内存中分配一个task_structtask_struct结构并将其加入结构并将其加入tasktask数组。当前运行进程的数组。当前运行进程的结构用结构用currentcurrent指针来指示。指针来指示。n nLinuxLinux还支持实时进程。这些进程必须对外部时间作出快速反应(这就是还支持实时进程。这些进程必须对外
19、部时间作出快速反应(这就是“实实时时”的意思),系统将区分对待这些进程和其他进程。虽然的意思),系统将区分对待这些进程和其他进程。虽然task_structtask_struct数据结数据结构庞大而复杂,但它可以分成一些功能组成部分:构庞大而复杂,但它可以分成一些功能组成部分:StateState 进程在执行过程中会根据环境来改变进程在执行过程中会根据环境来改变statestate。SchedulingSchedulingInformationInformation 调度器需要这些信息以便判定系统中哪个进程最迫切需要运行。调度器需要这些信息以便判定系统中哪个进程最迫切需要运行。Identifi
20、ersIdentifiers 系统中每个进程都有进程标志。进程标志并不是系统中每个进程都有进程标志。进程标志并不是tasktask数组的索引,它仅仅是个数字。数组的索引,它仅仅是个数字。Inter-ProcessInter-ProcessCommunicationCommunication LinuxLinux支持经典的支持经典的Unix IPCUnix IPC机制。机制。LinksLinks LinuxLinux系统中所有进程都是相互联系的。系统中所有进程都是相互联系的。TimesTimesandandTimersTimers 核心需要记录进程的创建时间以及在其生命期中消耗的核心需要记录进程
21、的创建时间以及在其生命期中消耗的CPUCPU时间。时间。FileFilesystemsystem 进程可以自由地打开或关闭文件,进程的进程可以自由地打开或关闭文件,进程的task_structtask_struct结构中包含一个指向每个打开文件描叙结构中包含一个指向每个打开文件描叙符的指针以及指向两个符的指针以及指向两个VFSVFSinodeinode的指针。的指针。VirtualVirtualmemorymemory 多数进程都有一些虚拟内存(核心线程和后台进程没有),多数进程都有一些虚拟内存(核心线程和后台进程没有),LinuxLinux核心必须跟踪虚拟内存与核心必须跟踪虚拟内存与系统物理
22、内存的映射关系。系统物理内存的映射关系。ProcessorProcessorSpecificSpecificContextContext 进程可以认为是系统当前状态的总和。进程可以认为是系统当前状态的总和。n nLinuxLinux使用用户和组标志符来检查对系统中文件和可执行映使用用户和组标志符来检查对系统中文件和可执行映象的访问权限。象的访问权限。LinuxLinux系统中所有的文件都有所有者和允许系统中所有的文件都有所有者和允许的权限,这些权限描叙了系统使用者对文件或者目录的使的权限,这些权限描叙了系统使用者对文件或者目录的使用权。基本的权限是读、写和可执行,这些权限被分配给用权。基本的权
23、限是读、写和可执行,这些权限被分配给三类用户:文件的所有者,属于相同组的进程以及系统中三类用户:文件的所有者,属于相同组的进程以及系统中所有进程。每类用户具有不同的权限,例如一个文件允许所有进程。每类用户具有不同的权限,例如一个文件允许其拥有者读写,但是同组的只能读而其他进程不允许访问。其拥有者读写,但是同组的只能读而其他进程不允许访问。n ntask_structtask_struct结构中有四对进程和组标志符:结构中有四对进程和组标志符:n nuid,uid,gidgid 表示运行进程的用户标志符和组标志符。表示运行进程的用户标志符和组标志符。n neffectiveeffectiveui
24、duidandandgidgid 有些程序可以在执行过程中将执行进程的有些程序可以在执行过程中将执行进程的uiduid和和gidgid改成其程序自身的改成其程序自身的uiduid和和gidgid(保存在描叙可执行映象的(保存在描叙可执行映象的VFSVFSinodeinode属性中)。这些程序被称为属性中)。这些程序被称为setuidsetuid程程序,常在严格控制对某些服务的访问时使用,特别是那些为别的进程而运行序,常在严格控制对某些服务的访问时使用,特别是那些为别的进程而运行的进程,例如网络后台进程。有效的进程,例如网络后台进程。有效uiduid和和gidgid是那些是那些setuidset
25、uid执行过程在执行时变化执行过程在执行时变化出的出的uiduid和和gidgid。当进程试图访问特权数据或代码时,核心将检查进程的有效。当进程试图访问特权数据或代码时,核心将检查进程的有效gidgid和和uiduid。n nfilefilesystemsystemuiduidandandgidgid 它们和有效它们和有效uiduid和和gidgid相似但用来检验进程的文件系统访问权限。如运行在用户相似但用来检验进程的文件系统访问权限。如运行在用户模式下的模式下的NFSNFS服务器存取文件时,服务器存取文件时,NFSNFS文件系统将使用这些标志符。此例中只文件系统将使用这些标志符。此例中只有文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 嵌入式 系统 第六 Linux 操作系统 PPT 课件
限制150内