




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第8章章 操作系统实例二:操作系统实例二:Linux 教学目标:本章的重点:了解Linux操作系统的特点、进程通信和调度、三级页式虚拟存储器管理、VFS和ext2文件系统以及Linux的安全机制等内容。 教学提示:Linux是可免费获得的多用户、多任务操作系统,是可以自由使用的UNIX兼容产品,这就是学习Linux的主要原因。了解Linux操作系统的特点、核心技术和实现方法有助于该系统进一步的开发和应用。8.1 Linux概述概述 8.1.1 8.1.1 学习学习LinuxLinux操作系统的意义操作系统的意义8.1.2 Linux8.1.2 Linux系统的特点系统的特点8.1.3 Lin
2、ux 8.1.3 Linux 系统的发展系统的发展8.1.4 Linux8.1.4 Linux体系结构体系结构 8.1.5 Linux8.1.5 Linux的用户界面的用户界面 8.2 Linux的进程管理的进程管理 8.2.1 Linux8.2.1 Linux进程的组成进程的组成LinuxLinux系统中的进程都具有以下系统中的进程都具有以下4 4个要素。个要素。(1) (1) 有一个程序正文段供其执行。有一个程序正文段供其执行。(2) (2) 有进程专用的系统堆栈空间。有进程专用的系统堆栈空间。(3) (3) 有一个进程描述符,即在内核中的一个有一个进程描述符,即在内核中的一个task_s
3、tructtask_struct数据结构。数据结构。有了这个数据结构,进程才能成为内核调度的一个基本单位,接受内有了这个数据结构,进程才能成为内核调度的一个基本单位,接受内核的调度。同时,该结构还记录着进程所占用的各项资源。核的调度。同时,该结构还记录着进程所占用的各项资源。(4) (4) 有一个独立的地址空间,即拥有专有的用户空间和专用的用户空有一个独立的地址空间,即拥有专有的用户空间和专用的用户空间堆栈。间堆栈。 8.2.2 Linux进程的状态进程的状态 LinuxLinux的进程状态共有的进程状态共有6 6种。种。 (1) TASK_RUNNING (1) TASK_RUNNING:正
4、在运行:正在运行( (己获得己获得CPU)CPU)或准备运行或准备运行( (就绪态就绪态等待获得等待获得CPU)CPU)的进程。的进程。 (2) TASK_INTERRUPTIBLE (2) TASK_INTERRUPTIBLE:可中断等待状态。进程处于等待队列中,一旦资:可中断等待状态。进程处于等待队列中,一旦资源可用时被唤醒,也可以由其他进程通过信号源可用时被唤醒,也可以由其他进程通过信号(SIGNAL)(SIGNAL)或中断唤醒。或中断唤醒。 (3) TASK_UNINTERRUPTIBLE (3) TASK_UNINTERRUPTIBLE:不可中断等待状态。进程处于等待队列中,一:不可
5、中断等待状态。进程处于等待队列中,一旦资源可用时被唤醒,但不可以由其他进程通过信号旦资源可用时被唤醒,但不可以由其他进程通过信号(SIGNAL)(SIGNAL)或中断唤醒。或中断唤醒。 (4) TASK_ZOMBIE (4) TASK_ZOMBIE:进程僵死状态。进程停止运行但是尚未释放:进程僵死状态。进程停止运行但是尚未释放PCBPCB。 (5) TASK_STOPPED (5) TASK_STOPPED:进程停止状态。可能被特定信号终止,也可能是受其他:进程停止状态。可能被特定信号终止,也可能是受其他进程的跟踪调用而暂时将进程的跟踪调用而暂时将CPUCPU出让给跟踪它的进程。出让给跟踪它的
6、进程。 (6) TASK_S (6) TASK_S:页面被交换出内存的进程。:页面被交换出内存的进程。 8.2.3 8.2.3 进程状态的切换时机进程状态的切换时机第一类是隐式地主动放弃第一类是隐式地主动放弃CPUCPU。这往往是因为需。这往往是因为需要的资源目前不能获取,如执行要的资源目前不能获取,如执行read()read()、selec()selec()等系统调用的过程中。等系统调用的过程中。 第二类是进程显式地主动放弃第二类是进程显式地主动放弃CPUCPU,如系统调用,如系统调用sched_yield()sched_yield()、sched_setscheduler()sched_s
7、etscheduler()及及pause()pause()均会导致当前进程让出均会导致当前进程让出CPUCPU。 8.2.4 Linux8.2.4 Linux的进程控制的进程控制 进程的创建进程的创建 LinuxLinux操作系统中,除初始化进程外,操作系统中,除初始化进程外,其他进程都是用系统调用其他进程都是用系统调用fork()fork()和和clone()clone()创建的,调用创建的,调用fork()fork()和和clone()clone()的进程是父的进程是父进程,被生成的进程是子进程。进程,被生成的进程是子进程。 2. 2. 进程的等待进程的等待 父进程可用系统调用父进程可用系
8、统调用wait3()wait3()等待它的任等待它的任何一个子进程终止,也可以用系统调用何一个子进程终止,也可以用系统调用wait4()wait4()等待某个特定的子进程终止。等待某个特定的子进程终止。 3. 3. 进程的终止进程的终止 当命令执行完,希望终止自己时,可在其当命令执行完,希望终止自己时,可在其程序末尾使用系统调用程序末尾使用系统调用exit()exit()。 4. 4. 进程上下文切换进程上下文切换 改变进程上下文的工作很复杂,是由系统改变进程上下文的工作很复杂,是由系统调用调用execve()execve()实现的。它用一个可执行文件实现的。它用一个可执行文件的副本覆盖该进程
9、的内存空间。的副本覆盖该进程的内存空间。 8.2.5 Linux 8.2.5 Linux 线程线程 LinuxLinux并不确切区分进程与线程,或者说并不确切区分进程与线程,或者说没有真正意义上的线程概念,但通过没有真正意义上的线程概念,但通过clone()clone()系 统 调 用 , 可 以 支 持 轻 量 级 进 程系 统 调 用 , 可 以 支 持 轻 量 级 进 程(Lightweight Process)(Lightweight Process)。 8.2.6 PCB(8.2.6 PCB(进程控制块进程控制块) ) L i n u x L i n u x 内 核 利 用 一 个
10、数 据 结 构内 核 利 用 一 个 数 据 结 构(task_struct)(task_struct)标志一个进程的存在。标志一个进程的存在。task_structtask_struct也就是也就是LinuxLinux进程控制块进程控制块PCB PCB 8.2.7 8.2.7 进程的调度进程的调度 LinuxLinux中实现了中实现了3 3种进程调度策略。种进程调度策略。 SCHED_FIFOSCHED_FIFO:先进先出:先进先出(First In First Out)(First In First Out)策略。策略。 SCHED_RRSCHED_RR:轮转调度:轮转调度(RoundRo
11、bin)(RoundRobin)策略。策略。 SCHED_OTHERSCHED_OTHER:其他策略。:其他策略。 8. 8.2.8 Linux8. 8.2.8 Linux进程通信进程通信 信号是信号是UNIXUNIX系统中最古老的进程间通信机系统中最古老的进程间通信机制,它主要用来向进程发送异步的事件信号。制,它主要用来向进程发送异步的事件信号。 LinuxLinux中,信号种类的数目和具体的平台中,信号种类的数目和具体的平台有关,因为内核用一个字代表所有的信号,有关,因为内核用一个字代表所有的信号,因此字的位数就是信号种类的最多数目。对因此字的位数就是信号种类的最多数目。对3232位的位的
12、i386i386平台而言,一个字为平台而言,一个字为3232位,因此位,因此信号有信号有3232。 8.2.9 8.2.9 信号量与信号量与PVPV操作操作 信号量也用来保护关键代码或数据结构信号量也用来保护关键代码或数据结构( (即临界资源即临界资源) )。 LinuxLinux利用信号量实现对关键代码和数据的互斥访问。利用信号量实现对关键代码和数据的互斥访问。 LinuxLinux信号量数据结构中包含的信息主要有。信号量数据结构中包含的信息主要有。 count(count(计数计数) ) waking( waking(等待唤醒计数等待唤醒计数) ) 3) 3) 等待队列等待队列4) loc
13、k(4) lock(锁锁) ) 8.2.10 8.2.10 管道管道 管道是管道是LinuxLinux中最常用的进程间通信中最常用的进程间通信IPCIPC机机制。利用管道时,一个进程的输出可成为另制。利用管道时,一个进程的输出可成为另外一个进程的输入。当输入输出的数据量特外一个进程的输入。当输入输出的数据量特别大时,这种别大时,这种IPCIPC机制非常有用。机制非常有用。 8.2.11 8.2.11 共享存储区与消息队列通信机制共享存储区与消息队列通信机制 1. Linux1. Linux进程间的共享存储区通信进程间的共享存储区通信 2. Linux2. Linux进程间的消息队列进行通信进程
14、间的消息队列进行通信 LinuxLinux进程间的通信也可以通过消息队列进程间的通信也可以通过消息队列进行。消息队列可以是单消息队列,也可以进行。消息队列可以是单消息队列,也可以是多消息队列是多消息队列( (按消息类型按消息类型) );既可以单向,;既可以单向,也可以双向通信;既可以仅和两个进程有关,也可以双向通信;既可以仅和两个进程有关,也可以被多个进程使用。也可以被多个进程使用。 8.3.1 Linux8.3.1 Linux的虚拟内存管理的虚拟内存管理 LinuxLinux的虚拟内存管理功能可以概括为以的虚拟内存管理功能可以概括为以下几点。下几点。(1) (1) 地址空间扩充。地址空间扩充
15、。(2) (2) 进程保护。进程保护。(3) (3) 内存映射。内存映射。(4) (4) 物理内存分配。物理内存分配。 8.3 Linux 存储器管理存储器管理 8.3.2 Linux8.3.2 Linux系统采用三级页表系统采用三级页表 PGD表 项 下 标PMD表 项 下 标PT下 标页 内 偏 移 量物 理 地 址PGD基 地 址8.3.3 8.3.3 内存页的分配与释放内存页的分配与释放 LinuxLinux系统的物理内存页分配采用链表和系统的物理内存页分配采用链表和位图相结合的方法。位图相结合的方法。 8.3.4 8.3.4 内存交换内存交换 当系统出现内存不足时,当系统出现内存不足
16、时,LinuxLinux内存管理内存管理子系统就要释放一些内存页,从而增加系统子系统就要释放一些内存页,从而增加系统中空闲内存页的数量。此任务是由内核的交中空闲内存页的数量。此任务是由内核的交换守护进程换守护进程kswapdkswapd完成的。完成的。 8.3.5 8.3.5 内存的共享和保护内存的共享和保护 LinuxLinux中内存共享是以页共享的方式实现的中内存共享是以页共享的方式实现的LinuxLinux可以对虚存段中的任一部分加锁或保护。可以对虚存段中的任一部分加锁或保护。 8.3.6 8.3.6 缺页中断缺页中断 磁盘中的可执行文件映像一旦被映射到一磁盘中的可执行文件映像一旦被映射
17、到一个进程的虚拟空间,它就开始执行。由于一个进程的虚拟空间,它就开始执行。由于一开始只有该映像区的开始部分被调入内存,开始只有该映像区的开始部分被调入内存,因此,进程迟早会执行那些未被装入内存的因此,进程迟早会执行那些未被装入内存的部分。当一个进程访问了一个还没有有效页部分。当一个进程访问了一个还没有有效页表项的虚拟地址时,处理器将产生缺页中断,表项的虚拟地址时,处理器将产生缺页中断,通知操作系统,并把缺页的虚拟地址通知操作系统,并把缺页的虚拟地址( (保存保存在在CR2CR2寄存器中寄存器中) )和缺页时访问虚存的模式一和缺页时访问虚存的模式一并传给并传给LinuxLinux的缺页中断处理程
18、序。的缺页中断处理程序。 8.4 Linux文件管理文件管理 8.4.1 Linux8.4.1 Linux文件系统的目录结构文件系统的目录结构 LinuxLinux采用的是树型目录结构管理文件。最采用的是树型目录结构管理文件。最上层是根目录,其他的所有目录都是从根目录上层是根目录,其他的所有目录都是从根目录出发而生成的。出发而生成的。 8.4.2 Linux8.4.2 Linux文件系统的实现文件系统的实现 LinuxLinux支持多种不同类型的文件系统,包括支持多种不同类型的文件系统,包括EXTEXT、EXT2EXT2、MINIXMINIX、UMSDOSUMSDOS、NCPNCP、IS096
19、60IS09660、HPFSHPFS、MSDOSMSDOS、NTFSNTFS、XIAXIA、VFATVFAT、PROCPROC、NFSNFS、SMBSMB、SYSVSYSV、AFFSAFFS以及以及UFSUFS等。等。由于每一种文件系统都有自己的组织结构和文件操作函由于每一种文件系统都有自己的组织结构和文件操作函数,并且相互之间的差别很大,数,并且相互之间的差别很大,LinuxLinux文件系统的实现有文件系统的实现有一定的难度。为支持上述的各种文件系统,一定的难度。为支持上述的各种文件系统,LinuxLinux在实现在实现文件系统时采用了两层结构。第一层是虚拟文件系统文件系统时采用了两层结构
20、。第一层是虚拟文件系统(Virtual (Virtual ,VFS)VFS),它把各种实际文件系统的公共结构抽,它把各种实际文件系统的公共结构抽象出来,建立统一的以象出来,建立统一的以i_nodei_node为中心的组织结构,为实为中心的组织结构,为实际文件系统提供兼容性。它的作用是屏蔽各类文件系统际文件系统提供兼容性。它的作用是屏蔽各类文件系统的差异,给用户、应用程序和的差异,给用户、应用程序和LinuxLinux的其他管理模块提供的其他管理模块提供统一的接口。第二层是统一的接口。第二层是LinuxLinux支持的各种实际文件系统。支持的各种实际文件系统。 8.4.3 8.4.3 虚拟文件系
21、统虚拟文件系统 虚拟文件系统虚拟文件系统(VFS)(VFS)是物理文件系统与服是物理文件系统与服务之间的一个接口层,它对每一个具体的文务之间的一个接口层,它对每一个具体的文件系统的所有细节进行抽象,使得件系统的所有细节进行抽象,使得LinuxLinux用用户能够用同一个接口使用不同的文件系统。户能够用同一个接口使用不同的文件系统。 8.4.4 EXT28.4.4 EXT2文件系统文件系统 扩展文件系统扩展文件系统EXTEXT和第二代扩展文件系统和第二代扩展文件系统EXT2EXT2是专门为是专门为LinuxLinux设计可扩展的文件系统。设计可扩展的文件系统。 8.4.5 Linux8.4.5 Linux的文件操作系统调用的文件操作系统调用 1. 1. 文件的打开文件的打开 主要函数有主要函数有sys_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB14-T 1471-2025 香菇大棚生产技术规程
- 草场租赁与生态保护责任协议
- 绿色节能厂房租赁安全协议书
- 餐饮项目投资合作协议书样本
- 交通运输服务采购框架合同范本
- Brand KPIs for neobanking Neon in Brazil-英文培训课件2025.4
- 2025年国际经济与贸易岗位能力考试试题及答案
- 2025年高中物理复习考试题及答案
- 2025年保险与风险管理专业入学考试试卷及答案
- 工业园区厂房转让及配套基础设施建设合同
- 北京餐饮垃圾管理制度
- 超标准洪水应急预案
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 湖南省郴州市2024-2025学年七年级上学期期末历史试题(含答案)
- 宝安区义务教育入学信用承诺书模板
- 公司治理完整测试题【附答案】
- 汽车维修工时收费标准二类企业
- 奚旦立四环境监测物理性污染监测PPT教案
- 年产万吨乙酸乙酯的工艺设计
- 一鸣惊人PPT学习教案
- 钢结构术语中英文对照
评论
0/150
提交评论