现代操作系统第二章复习重点
操作系统第二章进程和线程复习题

第二章练习题一、单项选择题1.某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态将( C )。
A. 从就绪变为运行; B.从运行变为就绪;C.从运行变为阻塞; D.从阻塞变为就绪2.进程控制块是描述进程状态和特性的数据结构,一个进程( D )。
A.可以有多个进程控制块;B.可以和其他进程共用一个进程控制块;C.可以没有进程控制块;D.只能有惟一的进程控制块。
3.临界区是指并发进程中访问共享变量的(D)段。
A、管理信息B、信息存储C、数据D、程序4. 当__ B__时,进程从执行状态转变为就绪状态。
A. 进程被调度程序选中B. 时间片到C. 等待某一事件D. 等待的事件发生5. 信箱通信是一种( B )通信方式。
A. 直接通信B. 高级通信C. 低级通信D. 信号量6. 原语是(B)。
A、一条机器指令B、若干条机器指令组成C、一条特定指令D、中途能打断的指令7. 进程和程序的一个本质区别是(A)。
A.前者为动态的,后者为静态的;B.前者存储在内存,后者存储在外存;C.前者在一个文件中,后者在多个文件中;D.前者分时使用CPU,后者独占CPU。
8. 任何两个并发进程之间存在着(D)的关系。
A.各自完全独立B.拥有共享变量C.必须互斥D.可能相互制约9. 进程从运行态变为等待态可能由于(B )。
A.执行了V操作 B.执行了P 操作C.时间片用完 D.有高优先级进程就绪10. 用PV操作管理互斥使用的资源时,信号量的初值应定义为(B)。
A.任意整数 B.1 C.0 D.-111. 现有n个具有相关临界区的并发进程,如果某进程调用P 操作后变为等待状态,则调用P操作时信号量的值必定为(A)。
A.≤0 B.1C.n-1 D.n12. 用PV操作管理临界区时把信号量的初值定义为1,现已有一个进程在临界区,但有n个进程在等待进入临界区,这时信号量的值为(C)。
A.-1 B.1 C.-n D.n13. 用V操作唤醒一个等待进程时,被唤醒进程的状态应变成(B)状态。
操作系统期末复习重点

目录第一章操纵系统引论------------------------------------------------ 11.1操作系统的目标和作用 --------------------------------------------------- 11.2操纵系统的发展过程 ----------------------------------------------------- 11.3操作系统的基本特性 ----------------------------------------------------- 21.5 OS结构设计 ------------------------------------------------------------ 2第二章进程的描述与控制-------------------------------------------- 32.1前趋图和程序执行 ------------------------------------------------------- 32.2进程的描述 ------------------------------------------------------------- 32.3 进程控制--------------------------------------------------------------- 32.4 进程同步--------------------------------------------------------------- 32.6 进程通信--------------------------------------------------------------- 4第三章处理机调度与死锁-------------------------------------------- 43.1处理机调度的层次和调度算法的目标 --------------------------------------- 43.3进程调度 --------------------------------------------------------------- 43.5死锁概述 --------------------------------------------------------------- 5第四章存储器管理-------------------------------------------------- 64.2程序的装入和链接 ------------------------------------------------------- 64.3连续分配存储管理方式 --------------------------------------------------- 64.4对换(Swapping) ------------------------------------------------------- 74.5分页存储管理方式 ------------------------------------------------------- 74.6分段存储管理方式 ------------------------------------------------------- 8第五章虚拟存储器-------------------------------------------------- 85.1虚拟存储器概述 --------------------------------------------------------- 85.2请求分页存储管理方式 --------------------------------------------------- 95.3页面置换算法 ----------------------------------------------------------- 95.4“抖动”和工作集------------------------------------------------------- 10第六章输入输出系统----------------------------------------------- 11第七章文件管理--------------------------------------------------- 11第一章操纵系统引论1.1操作系统的目标和作用1.1.1操作系统的目标(4个)——P001目标:方便性,有效性,可扩充性,开放性1.1.2操作系统的作用(3个)——P002作用:1.OS作为用户与计算机硬件系统之间的接口。
现代操作系统总复习资料

操作系统基础习题解析及实验指导2016.9第一篇操作系统基础知识点及习题解答该部分罗列操作系统基础各章节的学习要点,指出学习的重点和难点,在回顾相关知识点的基础上,对典型习题进行分析和解答。
第一章操作系统引论本章学习要点【1】掌握操作系统的概念与作用【2】掌握操作系统的基本类型与特点【3】掌握操作系统的特征与功能【4】深入领会多道程序设计技术本章学习难点【1】多道程序设计技术【2】操作系统的特征知识点回顾一. 操作系统的概念一个完整的计算机系统由计算机硬件系统和计算机软件系统两部分组成。
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统功能的第一次扩充。
图1-1 计算机系统的层次图1.操作系统(Operating System,简称OS)的作用(1)OS作为用户与计算机硬件系统之间的接口OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
或者说,用户在OS 的帮助下能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。
(2)OS作为计算机系统资源的管理者这是广为流行的一个关于OS作用的观点。
在一个计算机系统中,通常都包含了各种各样的硬件和软件资源。
归纳起来可将资源分为四类:处理器、存储器、I/O设备以及信息(数据和程序)。
OS的主要功能正是针对这四类资源进行有效的管理。
(3)OS用作扩充机器对于一台完全没有软件配置的计算机系统(裸机),即使功能再强,也必定难于使用。
OS在第 1 页共102 页裸机上分别覆盖I/O设备管理软件、文件管理软件等,此时用户所看到的机器,将是一台比裸机功能更强、使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器或虚机器。
在计算机系统上覆盖上一层软件后,系统功能便增强一级。
由于OS自身包含了若干层软件,因此当在裸机上覆盖上OS后,便可获得一台功能显著增强,使用极为方便的多层扩充机器或多层虚机器。
2.操作系统的概念操作系统是一组控制和管理计算机硬件和软件资源、合理组织计算机的工作流程,方便用户使用的程序的集合。
操作系统复习重点内容 复习总结

操作系统复习重点内容复习总结教材:计算机操作系统西安电子科技大学出版社第一章操作系统引论主要解决的是对操作系统的认识问题。
在学习完后面各章后还应该再回过头来认真品味本章的内容,重点是对操作系统原理的整体认识和掌握。
操作系统引论这部分内容不会出现大题。
一般是以基本原理和概念的形式为主,属于识记形式的题目。
重点是操作系统的定义、操作系统的特征和主要功能等。
l计算机系统把资源管理和控制程序执行的功能集中组成一种软件,称为操作系统,是系统软件l操作系统的两个设计目标:1、使计算机系统使用方便2、使计算机系统能高效地工作(扩充硬件的功能,使硬件的功能发挥得更好;使用户合理共享资源,防止相互干扰;以文件形式管理软件资源,保证信息的安全和快速存取。
P1 l设置操作系统的作用1,用户观点:操作系统是裸机与用户的一个界面。
2,系统观点:操作系统是计算机系统资源的一个"管理员"。
l操作系统的分类用户要求计算机系统进行处理的一个计算问题称为一个"作业"。
按照操作系统提供的服务,大致可以把操作系统分为:单道批处理系统;多道批处理系统,简称"多道系统",即多个作业可同时装入主存储器进行运行的系统。
多道系统能极大提高计算机系统的效率,表现为:(1)并行工作,减少了CPU的空闲时间,提高了CPU的利用率。
(2)合理搭配多道使用不同资源的作业,可充分利用计算机系统的资源。
(3)直接在高速的磁盘上存取信息,缩短了作业执行时间,使单位时间内的处理能力得到提高。
(4)作业成批输入、自动选择和控制作业执行减少了人工操作时间和作业交接时间,提高了系统的吞吐率;分时系统,具有同时性、独立性、及时性、交互性。
批处理兼分时系统中,由分时系统控制的作业称为"前台"作业,由批处理控制的作业称为"后台"作业。
实时系统:在严格时间规定内处理必须结束;分类:(1)实时控制(2)实时信息处理网络系统:可实现资源共享的,为计算机网络配置的的操作系统我们使用的windows是网络式系统;分布式系统可协调多个计算机以完成一个共同任务的;l发展MS-DOS:单用户单任务Windows XP:单用户多任务UNIX:多用户多任务l操作系统的特性1,并发性2,共享性3,不确定性l掌握操作系统的基本功能:处理器管理、存储器管理、文件管理、设备管理、文件管理。
现代操作系统总复习资料

操作系统基础习题解析及实验指导2016.9第一篇操作系统基础知识点及习题解答该部分罗列操作系统基础各章节的学习要点,指出学习的重点和难点,在回顾相关知识点的基础上,对典型习题进行分析和解答。
第一章操作系统引论本章学习要点【1】掌握操作系统的概念与作用【2】掌握操作系统的基本类型与特点【3】掌握操作系统的特征与功能【4】深入领会多道程序设计技术本章学习难点【1】多道程序设计技术【2】操作系统的特征知识点回顾一. 操作系统的概念一个完整的计算机系统由计算机硬件系统和计算机软件系统两部分组成。
操作系统是配置在计算机硬件上的第一层软件,是对硬件系统功能的第一次扩充。
图1-1 计算机系统的层次图1.操作系统(Operating System,简称OS)的作用(1)OS作为用户与计算机硬件系统之间的接口OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。
或者说,用户在OS 的帮助下能够方便、快捷、安全、可靠地操纵计算机硬件和运行自己的程序。
(2)OS作为计算机系统资源的管理者这是广为流行的一个关于OS作用的观点。
在一个计算机系统中,通常都包含了各种各样的硬件和软件资源。
归纳起来可将资源分为四类:处理器、存储器、I/O设备以及信息(数据和程序)。
OS的主要功能正是针对这四类资源进行有效的管理。
(3)OS用作扩充机器对于一台完全没有软件配置的计算机系统(裸机),即使功能再强,也必定难于使用。
OS在第 1 页共102 页裸机上分别覆盖I/O设备管理软件、文件管理软件等,此时用户所看到的机器,将是一台比裸机功能更强、使用更方便的机器。
通常把覆盖了软件的机器称为扩充机器或虚机器。
在计算机系统上覆盖上一层软件后,系统功能便增强一级。
由于OS自身包含了若干层软件,因此当在裸机上覆盖上OS后,便可获得一台功能显著增强,使用极为方便的多层扩充机器或多层虚机器。
2.操作系统的概念操作系统是一组控制和管理计算机硬件和软件资源、合理组织计算机的工作流程,方便用户使用的程序的集合。
《现代操作系统》重点纲要

第一章:引论操作系统是运行在内核态的软件,为程序猿提供资源集抽象以及管理硬件1.1.2主要任务:记录那个程序在用什么资源,管理资源分配,评估使用代价,调节冲突1.3.11.操作系统必须知道所有的寄存器,以便中断时保存进度2.用户程序在用户态运行时,仅允许执行至灵级的一个子集,一般不能调用IO和内存保护指令3.陷阱:a. 用于执行系统调用b. 多数由硬件引起,用于警告异常4.超线程:无并行处理,线程切换纳秒级1.3.2存储器1. 寄存器(和CPU一样快)-》高速缓存(多级缓存)-》主存(RAM ROM EEROM 闪存)1.3.3上下文切换:多道程序系统中从一个程序切换到另一个程序1.3.51. 设备驱动程序:控制IO设备,与控制器对话并收发命令2. 设备存储器:映射到操作空间A.优点:不需要特定IO指令B.缺点:占地址空间(8088)3. 实现输入输出的方法:A.忙等待:设备驱动循环检查IOB.操作完成时中断C.使用特殊的直接存储器访问芯片DMA1.3.61. USB:通用串行总线,键盘鼠标等慢速设备1.3.7启动1. 加电-》BIOS检查硬件-》BIOS查询启动设备(设备第一扇区用启动签名才可以作为启动设备)-》硬盘第一区(MBR),分区表,超级块等1.5.1进程1. 本质:正在执行的程序的实例,地址空间(core image 进程可读写,有数据和堆栈)。
2. 相关:资源集(寄存器,报警,文件清单等)3. 容许运行一个程序所需要所有信息的容器4. UID与GID1.5.31. IO设备的分类:A.块设备:硬盘,可随机读取B.字符特殊文件:键盘鼠标2.管道:虚文件,连接进程1.6系统调用1. 用户程序与操作系统交互:处理抽象2. 能进入内核的过程调用用户态切换到核心态三种方法:中断,异常,系统调用3.TRAP指令:副作用切换到内核态1.7.3微内核1. 高可靠性,把操作系统划分成小的,定义良好的模块,只有微内核运行在内核,其他是普通用户程序2. 设备驱动:崩溃不会导致系统死机3. 机制与策略分离第二章:进程与线程2.1进程模型1. 多道程序设计:CPU在多个程序之间快速切换2. UNIX: 开始是相同,之后不同。
操作系统第2章

第二章进程及作业管理§1 进程概念§2 系统内核§3 进程控制 §4 进程同步 §5 进程通讯 §6 作业概念 §7作业控制§1 进程概念1.1 程序的顺序执行与并发执行在单道程序系统中,程序的执行必然具有下述特性:(1) 顺序性(2) 封闭性(3) 无关性(4) 可再现性对于多道程序系统,程序的执行就有一些新的特性:(1) 异步性(2) 竞争性(3) 相互制约(4) 与速度有关设有两个循环结构的程序A和B,它们共享一个公共变量n。
程序A每执行一次循环都要作n:=n+1操作;程序B 在每一次循环中打印出n的值,然后将n置0。
对此的PASCAL描述如下:cobegin/coend表示并发结构,其中的程序可以并发执行。
由于程序A和B都是异步执行,它们的语句在时间上可能是穿插或交叉执行的,故程序A的n:=n+1操作既可能在程序B的print(n)和n:=0操作之前或之后执行,也可能在它们之间执行(即n:=n+1出现在print(n)之后,而在n:=0之前)。
于是,程序的运行可能产生三组不同的执行轨迹和结果(设在开始某个循环之前n=v):1.2 进程定义(1) 进程是一种动态概念。
(2) 进程的实体是程序和数据集合。
(3) 进程是可并发的运行单位。
1.3 进程的状态(1) 执行状态(2) 就绪状态(3) 等待状态(4) 停止状态(5) 死锁状态图2-1 进程的生命历程图2-2 具有挂起状态的进程生命历程1.4 进程控制块图2-3 进程的物理表示PCB包含了进程的描述信息和控制信息,通常有如下项目:(1) 标识符(2) 存贮信息(3) 现行状态(4) 优先数(5) 现场信息(6) 链接字(或称队列指针)(7) 族系关系(8) 资源清单(9) 其他PCB的内容和大小随系统不同而异,它不仅和具体系统的管理及控制方法有关,也和系统规模的大小有关。
操作系统第二章知识点总结

操作系统第二章知识点总结操作系统是计算机系统中最核心的部分之一,它负责管理计算机的资源,并提供用户与计算机硬件之间的接口。
操作系统的设计和实现涉及到多个方面的知识,包括进程管理、内存管理、文件系统、输入输出等。
本文将针对操作系统第二章的知识点进行总结,主要涵盖了进程管理和线程管理、进程同步、死锁以及内存管理等方面的内容。
一、进程管理和线程管理1.1 进程的概念进程是指程序执行时的一次动态过程,是程序在执行过程中的实例。
进程是操作系统中的基本执行单元,每个进程都有自己的地址空间、代码、数据、环境变量等信息。
1.2 进程的状态操作系统中的进程通常具有多种状态,包括运行态、就绪态和阻塞态。
进程在不同的状态之间切换,这些状态的切换由操作系统的调度器完成。
1.3 进程的创建和删除进程的创建是指操作系统根据用户请求或者其他进程的要求,在内存中分配资源以及初始化进程控制块等信息。
进程的删除则是指进程执行完毕或者出现错误时,操作系统释放进程占用的资源,并将进程控制块从系统中移除。
1.4 进程的调度进程的调度是指操作系统根据一定的调度算法将就绪态的进程分配给处理器进行执行。
调度算法可以采用先来先服务、短作业优先、轮转等多种方式。
1.5 线程的概念线程是进程的一部分,是进程中的一个实体,是系统调度的基本单位。
一个进程可以包含多个线程,线程共享进程的资源。
1.6 线程的创建和删除线程的创建包括为线程分配资源、初始化线程控制块等操作。
线程的删除则是将线程控制块从系统中移除,并释放线程占用的资源。
1.7 线程的调度线程的调度是操作系统根据一定的调度算法将就绪态的线程分配给处理器进行执行。
线程调度与进程调度有一些不同之处,例如可以采用抢占式调度的方式。
二、进程同步2.1 进程同步的概念进程同步是指多个进程或者线程在对共享资源进行访问时,保证它们按照某种特定的顺序执行,避免发生竞争条件和数据不一致等问题。
2.2 临界区问题临界区是指一段代码,在同一时刻只能有一个进程或者线程执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章进程与线程·在早期计算机中,每个字节的读写直接由CPU处理(即没有DMA),对于多道程序而言这种组织方式有什么含义?在这个读取任务中包括两个时间:CPU复制数据的时间和IO设备工作的时间。
而早期IO设备的速度太慢了,IO 设备的工作时间远大于把数据存到内存中所需要的时间,CPU则会空转很长时间,此时多道程序设计就非常必要了。
进程是OS提供的最古老最需要的抽象概念,它把来回切换的多道程序描述成一种多程序的并发。
2.1进程多道程序设计站在系统的角度——提高了CPU的利用率站在用户的角度——可“同时”运行多个程序对某个具体的任务而言——执行速度不变单个CPU不能真正实现并行计算,其在任意时刻都只能执行一道指令。
(第一章到第六章都是以单个CPU来讲解的)·如何解决这个矛盾:OS采用了一系列软件技术实现程序并发执行。
·什么是程序的并发执行【“大家注意把这个刻在脑子里”】若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重叠是很小的一部分,也称这几个程序段是并发执行的。
·什么是运行时间:程序在内存中的时间。
只有一个CPU,但是又希望有多个CPU——虚拟出多个CPU。
(“伪并行”,在任意时刻只有一个程序是活跃的)面向每个任务虚拟出一个CPU,这就是进程。
(CPU:从内存中取指令并执行)虚拟出的CPU本质:对每个进程虚拟了程序计数器。
2.1.1进程模型并行性:处理多个同时性活动的能力并行处理:利用多个处理部件,为完成一个整体任务而同时执行在任意时刻物理PC只对应一个程序的指令底层:CPU在各个进程间来回切换2.1.2进程的创建有4种主要事件导致进程的创建:1.系统初始化(foreground processes and daemons)2.执行了正在运行的进程所调用的进程创建系统调用★3.用户请求创建一个新进程4.一个批处理作业的初始化Fork子进程是父进程的精确副本。
(但子进程的执行是独立的)调用一次返回两次。
真正出现在代码中的不是系统调用程序,是系统调用的接口。
Pid=fork()pid>0:父进程pid=0:子进程如果返回-1:代表创建子进程失败。
父进程子进程谁先执行谁后执行不能确定。
Execlp(替换子进程)子进程复制了父进程的PC、正文、堆、栈等内容,包括输出缓冲。
Printf换行符:清空当前缓冲行;Putchar():在创建子进程后,当前缓冲行没有被清空,则子进程也会输出父进程中Putchar()的内容。
希望父子进程共享地址空间——vfork()Vfork会确保子进程先执行,子进程用exec或exit退出。
(子进程不能用return(0)而是exit(0))单CPU并行(多程序并发执行)与GPU并行的区别?伪并行,不能提高CPU执行速度和效率单CPU有空闲单CPU不够用共同点:价值体现在CPU确实有事要忙(多任务)2.1.5进程的状态只有运行态和就绪态可以相互变迁,且都是由于系统调度。
(CPU调度)为了更好地管理进程,我们会对它建立数据结构,通常采用的数据结构就是队列。
就绪队列:就绪态各个等待队列:阻塞态·程序的并发执行?两个程序在执行时间上有重叠。
·操作系统如何实现并发执行?计算机上所有软件被组织成若干顺序进程,用调度算法使CPU在各个进程间来回切换。
进程的五种状态及转换关系图2.1.6进程的实现为了实现进程模型,即多任务并发执行,OS维护着一张表格(一个结构数组)——进程表;每个进程对应一个进程表项(也叫进程控制块,PCB);它包含进程状态的重要信息:PC、堆栈指针、内存分配状况、所打开文件的状态、账号和调度信息、其他进程由运行态转换到就绪态或阻塞态时必须保存的信息。
(PPT英文,找了课本的图)CPU在各个进程间来回切换,切换时操作系统会保存现场。
保存线程——保存PCB就绪队列——就绪态;等待队列——堵塞态。
(因为可能有不同堵塞原因,所以有多个等待队列)·在单个CPU如何维持多个顺序进程的错觉?中断向量(Interrupt vector)的位置?因为操作系统通过我们之前一系列技术实现的,这些技术离不开中断处理,因此中断处理会放在内存固定的地方,即靠近内存底部的固定区域,它包含中断服务程序的入口地址。
假设当一个磁盘中断发生时,用户进程A正在运行,则---1.中断硬件将程序计数器、程序状态字、一个或多个寄存器压入堆栈,计算机随机跳转到中断向量所指示的地址(保存现场)2.软件,特别是中断服务例程接管一切剩余的工作。
【多道程序设计模型】怎么量化CPU的利用率呢?于是提出了概率模型Probabilistic Model(概率模型)p:一个进程等待I/O操作的时间与其停留在内存中的时间比n:内存中同时存在的进程数量·什么情况下多道程序设计最有价值?最有价值:内存足够的情况下,我可以增加尽可能多的程序道数,而且在这一过程中,随着程序道数的增加,我的CPU利用率一直在上升。
——所以由图,80%I/O的时候最有价值。
【重要题型:CPU利用率】(顺序执行时,∵CPU20分钟,I/O等待占50%,∴IO也需要20分钟,∴总共40分钟,又∵两个作业,∴总共80分钟。
并行执行时,则需要计算利用率。
总时间=真正用到的时间÷cpu利用率)2.1.7多道程序设计模型2.2线程传统操作系统中,每个进程有一个地址空间和一个控制线程<--->进程进程有两个基本属性:拥有资源的独立单元&被处理器独立调度和分配的单元。
通常存在一个地址空间中准并行运行多个控制线程的情形分离的进程&共享地址空间为了减小系统开销,出现了线程。
但还是以进程为单位分配资源。
(以线程为调度运行的单位,系统开销大大减小)·多线程的必要性?回顾进程模型→多线程→并行实体共享同一地址空间和可用数据的能力比进程更轻量级,比进程更易创建【快10-100倍】原因:创建线程时不需要给它分配地址空间和额外的资源。
性能:存在大量计算和I/O操作情况下加快应用程序执行速度。
多线程的价值:同步完成多项任务;不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。
2.2.2经典的线程模型进程VS线程进程用于把资源集中到一起,而线程则是在CPU上被调度执行的实体;线程给进程模型增加了一项内容:在同一个环境中,允许彼此有较大独立性的多个线程执行。
·进程中的不同线程与不同进程间的独立性相比?进程独立性是为了竞争而存在,线程独立性是为了合作而存在,他们是不一样的。
同一进程中的各个线程的共享内容(左)各个线程私有的内容(右)·为何Stack(栈)为线程私有内容?因为线程是独立执行的,函数参数、局部变量都保存在栈中,函数名只是一段代码的起始地址而已,它执行时要取参数(保存在栈中,要取局部变量,这些都在栈中,所以为了线程不互相干扰,堆栈是独立的。
2.2.4在用户空间中实现线程在内核只有进程表,是看不到线程的。
操作系统的调度一定是以进程为单位调度的。
·为什么要在用户空间实现多线程呢?在用户空间实现多线程依然可以更高效的执行,只是只能由进程自己的运行时系统来管理,进程中会有自己的线程表。
·进程中会有自己的线程表的好处?减少开销,减少干预,安排线程更加灵活;缺点:操作系统还是以进程为单位调度,所以没办法更好地根据线程的需要分配资源。
2.2.5在内核中实现线程线程由内核管理,内核有进程表和线程表。
内核开销大,不够灵活。
可以真正实现以线程为单位的调度。
2.2.6混合实现若干用户级线程对应一个内核线程。
线程的实现小结用户空间实现[用户级线程ULT(User Level Threads)]由应用程序完成所有线程的管理通过线程库(用户空间)一组管理线程的过程核心不知道线程的存在线程切换不需要核心态特权调度是应用特定的在内核中实现[内核支持线程KST(Kernel Supported Threads)]所有线程管理由内核完成没有线程库,但对内核线程工具提供API内核维护进程和线程的上下文[线程表]线程之间的切换需要内核支持以线程为基础进行调度例子:Windows NT,OS/2★不同优缺点用户空间实现核心不知道线程的活动,但仍然管理线程的进程的活动;当线程调用系统调用时,整个进程阻塞优点:线程切换不调用内核调度是应用程序特定的:可以选择最好的算法ULT可运行在任何操作系统上(只需要线程库)Run-time system缺点:大多数系统调用是阻塞的,因此内核阻塞进程,故进程中所有线程将被阻塞内核只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上。
内核中实现优点:对多处理器,内核可以同时调度同一进程的多个线程;阻塞是在线程一级完成;内核例程是多线程的缺点:在同一进程内的线程切换调用内核,开销大,导致速度下降。
2.3进程间通信(第二章的核心)全局变量究竟应该私有还是共享呢?——关键:不同的线程间是否需要通信。
(线程可以拥有私有的全局变量)全局变量共享:实现进程间通信进程间通信,IPC三个问题需要处理:①一个进程如何把消息传递给另一个②确保两个或更多的进程在关键活动中不会出现交叉③正确的顺序相关(原语操作)请记住同样的问题和解决方法也适用于线程。
2.3.1竞争条件竞争条件:两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序。
如何避免竞争条件?——实现对共享数据的互斥操作抽象描述:把对共享内存进行访问的程序片段称作临界区域或临界区采取措施使2个进程不可能同时处于临界区。
形成原语→形成程序片段(临界区)2.3.2临界区·避免竞争条件的解决方案满足的条件?①任何时候都没有2个进程同时在临界区②对CPU的速度和数量不做任何假设③任意运行在临界区外的进程都不能阻塞其它进程④任何进程总有机会可以进入其临界区·何为临界区?对共享内存进行访问的程序片段。
·下面代码中临界区是?全局变量是count则访问了count的都是临界区2.3.3忙等待的互斥方案说明实现代码一定有while或for,循环测试。
1.屏蔽中断在每个进程在刚刚进入临界区后立即屏蔽所有中断(包括时钟中断),并在就要离开前再打开所有中断。
缺点:①把屏蔽中断的权利交给用户可能导致严重后果②中断时间过长,会影响系统效率,限制了处理器交叉执行程序的能力③多处理器情况下,中断屏蔽仅对执行Disable指令的那个CPU有效2.锁变量软件解决方案:共享锁变量,初始值为0一个进程想进入临界区时首先测试这把锁0:临界区没有进程1:临界区有进程缺点:锁变量本身也是全局变量,其依然会被争抢。