《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析

上传人:E**** 文档编号:89435992 上传时间:2019-05-25 格式:PPT 页数:78 大小:365.50KB
返回 下载 相关 举报
《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析_第1页
第1页 / 共78页
《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析_第2页
第2页 / 共78页
《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析_第3页
第3页 / 共78页
《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析_第4页
第4页 / 共78页
《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析》由会员分享,可在线阅读,更多相关《《操作系统教程》-彭德林-电子教案 第8章Linux操作系统分析(78页珍藏版)》请在金锄头文库上搜索。

1、主要内容: 通过对Linux操作系统实例分析,进一步了解操作系统的基本概念,介绍Linux系统的进程管理、进程间通信、EXT2文件系统,存储管理等的具体实现与源码分析。 学习任务: 8.1 Linux 的进程管理 8.2 Linux 的存储管理 8.3 Linux 的文件管理 8.4 Linux 的设备管理 8.5 Linux 的shell,第8章 Linux 操作系统分析,8.1 Linux 的进程管理,进程是在操作系统中执行特定的任务。 程序是存储在磁盘上包含可执行机器指令和数据的静态实体。 进程或者任务是处于活动状态的计算机程序。 进程是一个随执行过程不断变化的实体。 进程在生命期内将使

2、用系统中的资源,8.1.1 Linux 的进程 系统中最宝贵的资源是CPU,通常系统中只有一个CPU。 Linux是一个多处理操作系统,它最终的目的是: 任何时刻系统中的每个CPU上都有任务执行,从而提高CPU的利用率。如果进程个数多于CPU的个数,则有些进程必须等待到CPU空闲时才可以运行。 多处理是的思路很简单;当进程需要某个系统资源时它将停止执行并等待到资源可用时才继续运行。,Linux支持多种类型的可执行文件格式,如ELF,JAVA等。由于这些进程必须使用系统共享库,所以对它们的管理要具有透明性。 为了让Linux来管理系统中的进程,每个进程用一个task_struct数据结构来表示(

3、任务与进程在Linux中可以混用)。,Linux还支持实时进程。 虽然task_struct数据结构庞大而复杂,但它可以分成一些功能组成部分,具体如下:,1.State (进程状态信息) 进程在执行过程中会根据环境来改变state。Linux进程有以下状态: Running :进程处于运行(它是系统的当前进程)或者准备运行状态(它在等待系统将CPU分配给它)。 Waiting :进程在等待一个事件或者资源。 Stopped :进程被停止。 Zombie :这是由于某些原因被终止的进程,但是在task数据中仍然保留task_struct结构。 它象一个已经死亡的进程。 2.Scheduling

4、Information (调度信息) 调度器需要这些信息以便判定系统中哪个进程最迫切需要运行。,3.Identifiers (进程标识信息) 系统中每个进程都有进程标志。进程标志并不是task数组的索引,它仅仅是个数字。每个进程还有一个用户与组标志,它们用来控制进程对系统中文件和设备的存取权限。 4.Inter-Process Communication (进程通信信息) Linux支持经典的Unix IPC机制,如信号、管道和信号灯以及系统V中IPC机制,包括共享内存、信号灯和消息队列。 5.Links (链接信息) Linux系统中所有进程都是相互联系的。除了初始化进程外,所有进程都有一个

5、父进程。新进程不是被创建,而是被复制,或者从以前的进程克隆而来。每个进程对应的task_struct结构中包含有指向其父进程和兄弟进程(具有相同父进程的进程)以及子进程的指针。,6.Times and Timers (时间和定时器信息) 核心需要记录进程的创建时间以及在其生命期中消耗的CPU时间。时钟每跳动一次,核心就要更新保存在jiffies变量中,记录进程在系统和用户模式下消耗的时间量。Linux支持与进程相关的interval定时器,进程可以通过系统调用来设定定时器以便在定时器到时后向它发送信号。这些定时器可以是一次性的或者周期性的。 7.File system (文件系统信息) 进程可

6、以自由地打开或关闭文件,进程的task_struct结构中包含一个指向每个打开文件描叙符的指针以及指向两个VFS inode的指针。 8.Virtual memory (虚拟内存信息) 多数进程都有一些虚拟内存(核心线程和后台进程没有),Linux核心必须跟踪虚拟内存与系统物理内存的映射关系。,9.Processor Specific Context (进程上下文信息) 进程可以认为是系统当前状态的总和。进程运行时,它将使用处理器的寄存器以及堆栈等等。进程被挂起时,进程的上下文-所有的CPU相关的状态必须保存在它的task_struct结构中。当调度器重新调度该进程时,所有上下文被重新设定。,

7、8.1.2 Linux 的进程调度,所有进程部分时间运行于用户模式,部分时间运行于系统模式。 进程常因为执行系统调用而需要等待。 调度器必须选择最迫切需要运行而且可以执行的进程来执行。 可运行进程是一个只等待CPU资源的进程。,为了将CPU时间合理的分配给系统中每个可执行进程,调度管理器必须将这些时间信息也保存在task_struct中,在task_struct中有如下结构: 1policy 应用到进程上的调度策略。系统中存在两类Linux进程:普通与实时进程。实时进程的优先级要高于其它进程。如果一个实时进程处于可执行状态,它将先得到执行。实时进程又有两种策略:时间片轮转和先进先出。在时间片轮

8、转策略中,每个可执行实时进程轮流执行一个时间片,而先进先出策略每个可执行进程按各自在运行队列中的顺序执行并且顺序不能变化。 2priority 调度管理器分配给进程的优先级。,3rt_priority Linux支持实时进程,且它们的优先级要高于非实时进程。调度器使用这个域给每个实时进程一个相对优先级。同样可以通过系统调用来改变实时进程的优先级。 4counter 进程允许运行的时间。进程首次运行时为进程优先级的数值,它随时间变化递减。 核心在几个位置调用调度管理器。如当前进程被放入等待队列后运行或者系统调用结束时,以及从系统模式返回用户模式时。此时系统时钟将当前进程的counter值设置为0

9、以驱动调度管理器。每次调度管理器运行时将进行下列操作: 5.kernel work 调度管理器运行底层处理程序并处理调度任务队列。kernel一章将详细描叙这个轻量级核心线程。,6.Current process 当选定其他进程运行之前必须对当前进程进行如下处理: 1)如果当前进程的调度策略是时间片轮转,则它被放回到运行队列。 2)如果任务可中断且从上次被调度后接收到了一个信号,则它的状态变为Running。 3)如果当前进程超时,则它的状态变为Running。 4)如果当前进程的状态是Running,则状态保持不变。 那些既不处于Running状态又 5)不是可中断的进程将会从运行队列中删除

10、。这意味着调度管理器选择运行进程时不会将这些进程考虑在内。,7.Process selection 调度器在运行队列中选择一个最迫切需要运行的进程。 8.Swap processes 如果系统选择其他进程运行,则必须被挂起当前进程且开始执行新进程。,8.1.3 Linux 进程间的通信-消息队列,Linux操作系统支持以下几种进程间通信的机制:信号(signals);管道(pipe)和命名管道(named pipe);system V的IPC机制,包括信号量(semaphore)、消息队列机制(message queues)和共享内存(shared memory);用于网络通信的套节字机制(s

11、ockets mechanism)和全双工管道机制。,8.1.3.1 Signals(信号) 信号是Unix系统中使用的最古老的进程间通讯的方法之一。用于向一个或多个进程发送异步事件的信号。信号可以用键盘终端产生,或者通过一个错误条件产生,比如进程试图访问它的虚拟内存中不存在的位置。Shell也使用信号向它的子进程发送作业控制信号。,8.1.3.2 Pipes(管道) 普通的Linux shell都允许重定向。例如: $ ls | pr | lpr,8.1.3.3 System V IPC mechanisms (系统V IPC机制) Linux支持三种首次出现在Unix 系统V(1983)的

12、进程间通讯的机制:消息队列、信号灯和共享内存(message queues, semaphores and shared memory)。 系统V IPC机制共享通用的认证方式。进程只能通过系统调用,传递一个唯一的引用标识符到核心来访问这些资源。对于系统V IPC对象的访问的检查使用访问许可权,很象对于文件访问的检查。对于系统V IPC对象的访问权限由对象的创建者通过系统调用创建。 每一种机制都使用对象的引用标识符作为资源表的索引。这不是直接的索引,需要一些操作来产生索引。,8.1.3.4 Message Queues(消息队列) 消息队列允许一个或多个进程写消息,一个或多个进程读取消息。,8

13、.1.3.5 Semaphores(信号灯) 信号灯最简单的形式就是内存中一个位置,它的取值可以由多个进程检验和设置。检验和设置的操作,至少对于关联的每一个进程来讲,是不可中断或者说有 原子性(只要启动就不能中止) 。 检验和设置操作的结果是信号灯当前值和设置值的和,可以是正或者负。根据测试和设置操作的结果,一个进程可能必须睡眠直到信 号灯的值被另一个进程改变。信号灯可以用于实现重要区域(critical regions),就是重要的代码区,同一时刻只能有一个进程运行。,8.2 Linux 的存储管理,只有在内存中的程序和数据才能被执行和访问,早期在DOS下开发的程序的大小要受到系统物理内存空

14、间大小的限制,现在利用请求调入和交换技术,实现虚拟存储器,就能为用户提供一个存储容量比实际内存容量大得多的存储空间。虚拟内存系统中的所有地址都是虚拟地址而不是物理地址。通过操作系统的地址映射机构实现由虚拟地址到物理地址的转换。 虚拟内存技术不仅仅可让我们可以使用更多的内存,它还提供了以下功能:,1.巨大的寻址空间 2.内存映射 3.公平的物理内存分配 4.共享虚拟内存,8.2.1 Linux虚拟内存的抽象模型,图8.2给出了两个进程X和Y的虚拟地址空间,它们拥有各自的页表。这些页表将各个进程的虚拟页面映射到内存中的物理页面。在图中,进程X的虚拟页面框号0被映射到了物理页面框号4。理论上每个页表

15、入口应包含以下内容:,图 8.2 虚拟地址到物理地址映射的抽象模型抽象模型,8.2.1.1 请求换页 在物理内存比虚拟内存小得多的系统中,操作系统必须提高物理内存的使用效率。 节省物理内存的一种方法是仅加载那些正在被执行程序使用的虚拟页面。 这种仅将要访问的虚拟页面载入的技术叫请求换页。,8.2.1.2 交换 如果进程需要把一个虚拟页面调入物理内存而正好系统中没有空闲的物理页面,操作系统必须丢弃位于物理内存中的某些页面来为之腾出空间。 如果那些从物理内存中丢弃出来的页面来自于磁盘上的可执行文件或者数据文件,并且没有修改过则不需,8.2.1.3 共享虚拟内存 虚拟内存让多个进程之间可以方便地共享

16、内存。所有的内存访问都是通过每个进程自身的页表进行。对于两个共享同一物理页面的进程,在各自的页表中必须包含有指向这一物理页面框号的页表入口。 图8.2中两个进程共享物理页面框号4。对进程X来说其对应的虚拟页面框号为4而进程Y的为6。这个有趣的现象说明:共享物理页面的进程对应此页面的虚拟内存位置可以不同。,8.2.1.4 物理与虚拟寻址模式 操作系统自身也运行在虚拟内存中的意义不大。如果操作系统被迫维护自身的页表那将大大影响操作系统的效率。多数通用处理器同时支持物理寻址和虚拟寻址模式。物理寻址模式无需页表的参与且处理器不会进行任何地址转换。Linux核心直接运行在物理地址空间上。,8.2.2 linux的高速缓冲 如果用上述理论模型来实现一个系统,它可能可以工作,但效率不会高。操作系统设计者和处理器设计者都在努力以提高系统的性能。除了制造更快的CPU和内存外,最好的办法是在高速缓冲中维护有用信息和数据以加快某些操作。Linux使用了许多与高速缓冲相关的内存管理策略。,1.Buffer Cache 这个buffer cache中包含了被块设备驱动使用的数据缓冲。 这些缓冲的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号