《计算机操作系统第九章.ppt》由会员分享,可在线阅读,更多相关《计算机操作系统第九章.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM第第9章章Linux系统概述系统概述Linux系统的发展和特性Linux系统的用户接口Linux系统的进程管理Linux进程的同步与通信Linux存储器管理Linux设备管理Linux文件管理Linux系统安全性操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM9.1Linux系统的发展和特性系统的发展和特性Linux诞生的故事Linux与UNIX之间的渊源什么是GUN,什么是GPL什么
2、是自由软件Linux的发展历程Linux目前的应用情况Linux在我们国内发展和应用的情况操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM到底什么是到底什么是LinuxLinux是类UNIX的操作系统,诞生于1990年。它可运行于多种硬件平台、支持多种系统软件和应用软件,支持所有标准因特网协议,网络功能相当强。Linux继承了UNIX的许多优点,且在许多方面进行了改进,适合应用在中低档服务器领域,是目前因特网服务商(ISP,InternetServiceProvider)所推荐的最流行的网络操作系统。Linux功
3、能强大,且源代码开放,免去了使用者对系统是否存在后门的担心,另外它还属于自由软件,可以从某些网站或者其它途径免费获得。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux的版本的版本Linux系统有内核版和发行版两种版本。内内核核版版本本是指在Linus领导下的开发小组开发出的系统内核的版本号,最近有Linux-2.3.28和Linux-2.4。发发行行版版本本可以理解为以Linux为核心的操作系统软件包。一些组织机构或系统软件开发公司将Linux内核同应用软件和相关文档包装起来,并提供一些安装界面和系统设
4、置管理工具,从而构成了一个Linux发行版本。如:Red Hat Linux、Mandrake Linux、Xteam Linux、中软Linux、红旗Linux等。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux系统的功能特性系统的功能特性(1)开放性(2)多用户多任务(3)良好的用户界面(4)设备独立性(5)提供了丰富的网络功能(6)良好的可移植性(7)可靠的系统安全性 操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM
5、9.2 Linux系统的用户接口系统的用户接口Linux系统给用户提供了方便的使用界面,它的用户接口形式有:(1)命令用户接口(2)图形用户接口(3)系统调用接口操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM9.3 Linux系统的系统的 进程管理进程管理 Linux系统的PCB包括很多参数,每个PCB约占1KB多的内存空间。用于表示PCB的task_struct结构简要描述如下:操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMs
6、truct task_struct unsigned short uid;int pid;int processor;volatile long state;long priority;unsigned long rt_priority;long counter;unsigned long flags;unsigned long policy;struct task_struct *next_task,*prev_task;struct task_struct *next_run,*prev_run;struct task_struct *p_opptr,*p_pptr,*p_cptr,*p_
7、ysptr,*p_ptr;操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux的进程共有六种状态的进程共有六种状态(1)可运行状态(TASK_RUNNING)(2)可中断阻塞状态(TASK_INTERRUPTIBLE)(3)不可中断阻塞状态(TASK_UNINTERRUPTIBLE(4)僵死状态(TASK_ZOMBIE)(5)暂停状态(TASK_STOPPED)(6)交换状态(TASK_SWAPPING)操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPER
8、ATING SYSTERMLinux进程状态及状态转换操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM进程的创建进程的创建 Linux启动时系统运行于核心态,此时仅创建一个pid号为0的idle进程。该进程会创建一个内核线程,该线程进行一系列初始化动作后最终会执行/sbin/init文件。文件init运行的结果使系统的运行模式从核心态切换到了用户态,然后该线程演变为用户进程init,其pid为1。此init进程是一个非常重要的进程,以后系统中的一切进程都是它的后代进程。init进程启动后系统进人空闲等待状态。in
9、it进程可以通过执行fork()创建新进程。新进程的创建是通过复制老进程或当前进程来实现的。fork()函数的代码在/kernel/fork.c中。如果fork()执行成功,当前进程就拥有了一个子进程。创建进程的另一种方式是通过系统调用。此类系统调用有三个:sys_clone()、sys_vfork()和sys_fork()。进程的创建主要是完成进程基本情况的复制,生成子进程的task_struct结构,并且复制或共享父进程的其它资源,如内存、文件、信号等。进程实现结构复制后,若想执行与父进程不同的代码,如执行某一个可执行文件,那就要放弃父进程的正文代码段,形成自己的执行代码段,该工作由系统调
10、用execve()来完成。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM进程的撤销进程的撤销 当进程执行完毕即正常结束时,它调用exit()终止自己。当进程受到某信号如SIGKILL的作用时,也是通过执行exit()而撤销,exit()代码在/kernel/exit.c中,其主要函数为do_exit()。同样,终止进程的系统调用sys_exit()也是通过调用函数do_exit()来实现的。进程撤销时,一方面要回收进程所占的资源,同时也要通知其父进程。do_exit()先释放进程所占的大部分资源,然后进人TAS
11、K_ZOMBIE状态。进程自身只能释放那些外部资源,如内存、文件,无法释放其自身(即task_struct结构)的。task_struct结构是由该进程的父进程或内核初始进程调用exit_notify()来完成的。exit_notify()函数的工作主要是:将进程的状态改成僵死状态;通知父进程料理后事;将退出进程从目录树中删除。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux的线程机制的线程机制 Linux是一种多线程、多任务操作系统,它符合IEEE POXIS标准。其线程分为两种:用户线程和内核线程,
12、在Linux中,这两种线程分别使用在usr/include/asm_i386/processor.h中所定义的结构struct thread_struct和在usr/include/pthread/init/pthread.h中所定义的结构struct pthread进行描述。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux调度方式调度方式 Linux内核的调度方式基本上采用“抢占式优先级”方式,即当进程在用户态运行时,不管是否自愿,在一定条件下(如时间片用完或等待I/O),核心就可以暂时剥夺其运行而调
13、 度其它进程进入运行。但是,一旦进程切换到核心态运行,就不受以上限制而一直运行下 去,直至又回到用户态前才会发生进程调度。Linux系统中的调度策略基本上是以优先级为基础的调度策略。就是说,核心为系统中每个进程计算出一个优先权,该优先权反映了一个进程获得CPU使用权的资格,即高优先权的进程优先得到运行。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux调度时机调度时机通常引起Linux系统中进程调度的原因有如下几种:(1)CPU执行的进程发生状态转换(2)就绪队列中增加了新进程。(3)正在执行的进程所分配
14、的时间片用完。(4)执行系统调用的进程返回到用户态。(5)系统内核结束中断处理返回到用户态。(6)直接执行调度程序。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux调度算法调度算法Linux的进程控制块PCB(task_struct)中有四个成员:policy、priority、rt_priority和counter,其中unsigned long policy的值表示不同类型进程的调度策略,其取值范围为:lSCHED_OTHER(值为0):对应普通进程优先级轮转法(round robin);lSCHE
15、D_FIFO(值为1):对应实时进程先来先服务算法;lSCHED_RR(值为2):对应实时进程优先级轮转算法。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux进程切换的方式进程切换的方式(1)自动请愿方式。即通过系统调用,将自己转换成阻塞、僵死、暂停等状态。这样的系统调用有sys_wait4()、sys_nanosleep()、sys_pause()和sys_exit()等,它们都是通过直接调用schedule()函数来进行进程切换的。这种切换方式是可以预见的。(2)非主动方式。进程由系统空间返回到用户
16、空间,即从中断、系统调用或异常返回到用户空间执行时,其可执行的时间片已经用完,系统将转入schedule()函数重新调度。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux进程的通信机制进程的通信机制管道(pipe)及有名管道(namedpipe)信号(signal)消息队列(message)信号量(semaphore)共享内存 套接字(sockets)操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM管道通信的实现方式是由内
17、核通过共享数据页来完成的操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM无名管道的特点是:无名管道的特点是:(1)管道是半双工的,数据只能向一个方向流动。管道只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)的通信。(2)单独构成一种独立的文件系统。对于管道两端的进程而言,管道就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并只存在于内存中。(3)数据的读出和写入在管道的两端进行,一个进程向管道的一端写入的内容被管道另一端的进程读出。有名管道的特点是:有名管道的特点
18、是:不同于管道之处在于它提供一个路径名与之关联。这样,即使不存在亲缘关系的进程,也可以使用访问路径,通过有名管道相互通信。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM 从从信信号号发发送送到到信信号号处处理理函函数数的的执执行行完完毕毕,一一个个完完整整的的信号生命周期可由四个重要事件来刻画:信号生命周期可由四个重要事件来刻画:l l信信号号的的诞诞生生。指的是触发信号的事件发生,如检测到硬件异常、定时器超时及调用信号发送函数kill()。l l信信号号在在目目标标进进程程中中注注册册。指的是信号值加入到进程
19、的等待处理信号集中,只要信号在进程的等待处理信号集中,表明进程已经知道这些信号的存在,但还没来得及处理,或者该信号被进程阻塞。l l信信号号在在进进程程中中的的注注销销。在目标进程执行过程中,会检测是否有信号等待处理。如果存在待处理信号且该信号没有被进程阻塞,则在运行相应的信号处理函数前,要把信号在进程中注销。l l信信号号生生命命终终止止。进程注销信号后,立即执行相应的信号处理函数,执行完毕后,信号的本次发送对进程的影响彻底结束。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM Linux Linux把信号量、
20、消息和共享内存定义为把信号量、消息和共享内存定义为 System V System V的的IPCIPC对象。对象。struct ipc_perm key_t key;/*整型,为0时表示private,非0时表示public*/ushort uid;/*资源拥有者的有效标识*/ushort gid;/*资源拥有者所在组的有效标识*/ushort cuid;/*资源创建者的有效标识*/ushort cgid;/*资源创建者所在组的有效标识*/ushort mode;/*访问模式,其含义同文件访问模式*/ushort seq;/*序列号*/;操 作 系 统 操 作 系 统 操 作 系 统 操 作
21、系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux中表示消息的结构中含有指向下一条消息的指针msg_next,每个消息队列均为一个单向链表。消息队列的组织形式如图。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux信号量数据结构如图。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux 共享内存结构操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机
22、本科教育OPERATING SYSTERMLinux物理内存地组织示意图9.5 9.5 存储器管理存储器管理操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux虚拟内存虚拟内存 每个进程空间通过进程的页目录和页表实现与物理内存间的映射。进程需要空间时并不开始分配物理内存,而是分配一块虚拟空间,直到真正需要对物理内存进行操作时才通过请求调入页面机制分配物理内存。虚拟内存以页为基本单位,大小与物理页帧相等。386下进程的线性地址为32位,分为图示的三个部分。操 作 系 统 操 作 系 统 操 作 系 统 操 作
23、 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM线性地址到物理地址的转换操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM 对进程虚拟空间的管理,Linux采用了请求页式技术。标准Linux的虚拟页表应为三级页表,依次为页目表(PGD,Page Directory)、中间页表(PMD:Page Middle Directory)和页表(PTE:Page Table)。Linux的三级页表结构 操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育
24、OPERATING SYSTERM 进程虚拟空间管理使用的数据结构 及其关系示意图 操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM导致页面异常的原因主要有:导致页面异常的原因主要有:(1)编程错误:可分为内核程序错误和用户程序错误。(2)操作系统故意引发的异常:操作系统合理利用硬件机制在适当时间触发异常,使得该异常的处理程序被调用以达到预期目的。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMLinux虚存的保护虚存的保护(1)多
25、任务及保护Linux允许每个用户最多可运行256个任务。Linux使用了四级保护机制:0级供操作系统内核使用;1级供系统调用使用;2级供共享库用;3级供应用程序使用。Linux内核由系统内的所有任务共享。每个任务有各自私有代码及数据区,存储在用户空间,因而对系统中的其他任务不可见。(2)同一任务内的保护 在一个任务之内,定义有四种执行特权级别,用来限制对任务中的段进行访问。这些任务按照包含在段中的数据的敏感性及任务中不同部分的程序,按可信任的程度进行分区。最敏感的数据分配最高的特权级别;特权级别用数字03表示,数字0表示最高特权级别。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系
26、统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM9.6设备管理设备管理(1)Linux沿用了UNIX处理设备的做法,把设备作为文件来处理,用户使用设备如同使用文件一样。(2)Linux系统将设备分为字符设备、块设备和网络设备。(3)字符设备有终端、打印机、鼠标、声卡和内存等;块设备有软盘、硬盘、光盘和其他可移动存储设备等。(4)字符设备一般只允许顺序访问。而块设备可以随机访问,任何对块设备的读写都是通过系统内存的缓冲区进行。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM 在Linux中,设
27、备驱动程序是一组相关函数的集合,含设备服务子程序和中断处理程序。设备服务子程序包含了所有 与 设 备 相 关 的 代 码。设 备 驱 动 程 序 利 用 结 构file_operations与文件系统联系,因为对设备的各种操作的入口参数都放在file_operations中。对于一些特定的设备,其入口为NULL。Linux的设备驱动程序的主要功能有:对设备进行初始化;使设备投入运行和退出;从设备接收数据并将其送入内核;从内核将数据送到外设;检测和处理设备完成任务和出错情况。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYS
28、TERM Linux的设备驱动程序与外设的接口与DDI/DKI规范相似,可分为如下三部分:(1)驱动程序与系统引导的接口。这是通过数据结构file_operations完成。(2)驱动程序与设备引导的接口。这部分利用驱动程序对设备进行初始化。(3)驱动程序与设备的接口。这部分描述了驱动程序如何与设备进行交互,这与具体设备相关。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM块设备驱动程序与缓冲区操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SY
29、STERM 内核中设置了一个结构数组blk_dev,该数组中的元素是blk_dev_struct数据结构。blk_dev_struct结构中含有一个设备驱动程序请求函数的地址和一个指向request数据结构的指针。每一个request数据结构代表一个数据块缓冲区的读写请求,都含有一个指向一个或多个buffer_head的数据结构的指针。每一个buffer_head表示一个读写请求及相应的数据块缓冲区,其中包含了驱动程序读写所需要的所有信息,如图9-13所示。在等待数据时,buffer_head结构是被锁住的,直到设备驱动程序请求完成才解锁。因此,可能有进程等待这个数据块缓冲区操作的完成。如果有
30、一个请求(request)被加在一个空的请求队列上,设备驱动程序的请求函数将立即被调用来处理这个请求队列。否则,驱动程序将顺序地处理请求队列中的所有请求。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM9.7文件管理文件管理 Linux为了支持多种不同的文件系统,引人了纯软件中间层VFS,即虚拟文件系统(VFS,Virtual File System),使文件子系统的可扩展性、可维护性变得更好。Linux支持多种文件系统,如EXT2、VFAT、ISO9660等。VFS是内核软件层。它为用户空间的程序提供了诸如op
31、en()、read()之类的统一编程接口,同时屏蔽了不同文件系统之间的差别,如图所示。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMVFSVFS中的主要数据结构中的主要数据结构(1)超级块(super_block):存储已安装文件系统的信息,通常对应磁盘文件系统的文件系统控制块。structsuper_blockstructlist_heads_list;/*将所有的超级块链接起来*
32、/kdev_ts_dev;/*所在设备的标识*/unsignedlongs_blocksize;/*该文件系统磁盘块的大小(字节数)*/unsignedchars_blocksize_bits;/*块大小的值log2(s_blocksize)*/structfile_systemtype*s_type;/*指向所属的文件系统数据结构的指针*/structsuper_operations*s_op;/*指向超级块的操作函数集*/structdentry*s_root;/*文件系统的根目录dentry对象*/structlist_heads_dirty;/*修改过的inode队列*/;操 作 系
33、统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMVFSVFS中的主要数据结构中的主要数据结构(1)超级块(super_block):存储已安装文件系统的信息,通常对应磁盘文件系统的文件系统控制块。(2)索引结点(structinode):存储某个文件的信息。(3)文件(structfile):存储一个打开的文件和一个进程的关联信息。(4)dentry(structdentry):主要描述文件名及其相关联的inode信息。VFSVFS操作的数据结构操作的数据结构(1)structsuper_operations结构。(2)st
34、ructinode_operations结构。(3)structfile_operations结构。操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERMEXT2文件系统文件系统 EXT2文件系统是Linux使用最广泛的文件系统。它支持传统UNIX文件的语义及一些高级特性,在性能和健壮性方面都表现不错。EXT2在磁盘上的物理布局操 作 系 统 操 作 系 统 操 作 系 统 操 作 系 统 操作系统二十一世纪计算机本科教育OPERATING SYSTERM9.8系统安全性系统安全性Linux的安全性是借助以下四种方式提供的:系统调用:用户进程通过Linux系统调用接口,显式地从内核获得服务,内核根据调用进程的要求执行用户请求。异常:进程的某些不正常操作,如除数为0、用户堆栈溢出等将引起硬件异常,异常发生后内核将干预并处理之。中断:内核通过中断机制管理外围设备及其I/O操作。一组特殊的系统进程执行系统级的任务:例如,控制活动进程的数目或维护空闲内存空间。