1、操作系统概论-02323(2017 年张琼声版本)第一章:操作系统简介操作系统概念:操作系统是一种复杂的系统软件,是不同程序代码、数据结构、初始化文件的集合,可执行。操作系统是提供计算机用户与计算机硬件之间的接口,并管理计算机软件和硬件资源,并且通过这个接口使应用程序的开发变得简单、高效。接口是两个不同部分的交接面。接口分为硬件接口和软件接口,计算机的所有功能最终都是由硬件的操作来实现的,计算机屏蔽了对硬件操作的细节。操作系统完成的两个目标:与硬件相互作用,为包含在所有硬件平台上的所有底层可编程部件提供服务。1为 运行在计算机系统上的应用程序(即用户程序)提供执行环境2现代计算机特点是支持多任
2、务, ,一方面保 证用户程序的顺利执行,另一方面使 计算机系统资源得到高效的利用,保证计算机系统的高性能操作系统的功能:处理机管理、内存管理、设备管理、文件管理。 操作系统的发展:无操作系统-单道批处理系统- 多道批处理系统-微机操作系- 实时操作系统无操作系统阶段:电子管,无存储设备,第一台: 1946 年宾夕法尼亚大学的埃尼阿克单道批处理系统:晶体管,磁性存储设备,内存中有一道批处理作业, 计算机资源被用户作业独占。吞吐量是指单位时间内计算机系统处理的作业量多道程序系统:集成电路芯片,出现了分时操作系统(多个终端)。微机操作系统:第一台 Intel 公司顾问 GaryKildall 编写的
3、 CP/M 系统,是一台磁盘操作系统,用于 Intel8080.实时操作系统:广泛应用于各种工业现场的自动控制、海底探测、智能机器人和航空航天等。 批处理、实时、分时系统的优缺点比较:单道批处理系统:自动性、顺序性、 单道性。优点:减少了等待人工操作的 时间缺点:CPU 资源不能得到有效的利用。多道批处理系统:多道性、无序性、调度性、复 杂性。优点:能够使 CPU 和内存 IO资源得到充分利用, ,提高系统的吞吐量。缺点:系 统 平均周转时间长,缺乏交互能力。分时系统:多路性、及时性、交互性、独立性。优点:提供了人机交互,可以使用户通过不同终端分享主机。缺点:不能及时接收及时处理用户命令。实时
4、操作系统(用户实时控制和实时信息处理):多路性、独立性、及时性、交互性、可靠性。在实时系统中,往往采取多级容错措施来保证系统安全和数据安全。操作系统产品:主机操作系统(批处理、事务处理(银行支票处理或航班预订)、分时处理),微机操作系统,服务器操作系统、嵌入式操作系统(物联网操作系统)操作系统特征:并发(多个事件在同一时间间隔内同时发生)、共享、虚拟、异步操作系统功能:内存管理:任务是为多道程序的运行提供良好的运行环境,方便用户使用内存,提高内存利用率,以及从逻辑上扩充内存实现虚拟存储。它具有内存分配、内存保护、地址映射和内存扩充(借助与虚拟存储技术)等功能。进程管理文件管理:存储空间的管理-
5、目录管理-文件的读写管理和权限控制设备管理提供用户接口:命令接口,图形用户接口,程序接口操作系统体系结构:简单的监控程序模型单体结构模型层次结构模型客户服务器模型与微内核结构动态可扩展结构模型单体内核是操作系统中最早、最常见的体系结构(UNIX/MS-DOS/Linux/MAC OS X/BSD)层次结构最经典的例子 Dijjkstra 的 THE 系统指令的执行:程序是指令的集合,程序的执行就是按照某种控制流执行指令的过程。一个单一指令需要的处理称为指令周期,包括取指周期和执行周期第二章:进程管理程序的顺序执行特点:顺序性,封闭性、可再 现性程序的并发执行特点:间断性、失去封闭性、不可再现性
6、进程的概念:进 程是允许并发的程序在某个数据集合上的运行过程1进 程是正文段、用户数据段和 进程控制块共同组成的 执行环境。正文段存放被2执行的机器指令,用户数据段存放进程在执行时要操作的用户数据,进程控制块存放程序的执行环境,操作系统通过这些描述和管理进程。进程代表了程序的执行过程,是一个动态的实体,它随着指令的执行而不断变化,在某个特定时刻的进程内容被称为进程映像。进程的特征:并发性、独立性、异步性、动态性、结构特征。 进程和程序的区别:程序是静态的,进程是动态 的1程序是永久的,进程是暂时 存在的2程序和进程存在的实体不同。程序是指令的集合,进程是由正文段、用户数据3段、进程控制块组成进
7、程和程序的联系:进程是程序的一次执行,进程总是对应至少一个特定的程序,执行程序的代码,一个程序可以对应多个进程。进程控制块:进程实体存在的标志是操作系统管理进程所使用的数据结构进程控制块进程控制块是进程实体的一部分,是操作系统中最重要的数据结构,进程控制块中记录了操作系统所需要的,用户描述进程情况以及控制进程运行所需要的全部信息,进程控制块是操作系统感知进程存在的唯一标志。进程控制块中的信息:进程标识符信息、处理机状态信息、进程调度信息、 进程控制信息进程的状态:就绪态、执行态,阻塞 态转换:就绪态 执行态阻塞态进程的组织:链接方式、索引方式、进程队列进程的控制:进程的创建-阻塞- 唤醒-终止
8、创建的条件:1)用户登录 2)作业调度 3)提供服务 4)应用请求阻塞的条件:1)请求系统服务 2)数据尚未到达 3)无工作可做 4)启动某种操作 操作系统内核操作系统内核是计算机硬件的第一次扩充,内核执行操作系统与硬件密切相关,执行频率高的模块,常驻内存。操作系统内核的功能:1)支撑功能 2)资源管理功能支撑功能包括:中断处理、时钟管理和原语操作,原语操作是一组在执行过程中不能中断的操作资源管理功能包括:进程管理、存储器管理和设备管理中断:中断是改变计算机执行指令顺序的一种事件,这种事件与 CPU 芯片内外部硬件电路产生的电信号相对应。中断的目的:能有效提高 CPU 的利用率,改善系 统性能
9、,支持系 统的异步性。引用中断机制前,采用的是反复轮询的方式,来 检测本次 I/O 是否结束。中断类型 1)同步中断(内部中断或异常)2)异步中断(外部中断)同步中断是当指令执行时由 CPU 控制单元产生的,如除法出错, 调试、溢出、浮点出错等异步中断是由其他硬件设备随机产生的,可分为外部可屏蔽中断(I/O 设备产生)和外部不可屏蔽中断(紧急事件产生,硬件故障等)引起中断的原因:1)人为设置中断 2)程序性事故 3)I/O 设备 4)硬件故障 5)外部事件单重中断的处理过程:CPU 在反复执行指令的过程中,每执行完一条执行,都会检查是否有外部中断的到来,如果有中断信号,则转中断处理。 时钟管理
10、:计算机的很多活动都是由定时测量来控制的,两种定时测量:1)保存当前的系统时间和日期 2)维持定时器,操作系统依靠时钟硬件和时钟驱动程序来完成上述两种测量时钟硬件(可编程间隔定时器)的功能:按照指定的时间间隔产生时钟中断,测量逝去的时间,并触发与时间有关的操作时钟软件(时钟驱动程序)功能:1)维护日期和时间 2)递减当前进程在一个时间片内的剩余执行时间,并检查是否为 0,防止 进程运行超时 3)对 CPU 的使用情况记账 4)递减报警计数器操作系统内核可以利用时钟机制防止一个进程垄断 CPU 或者其他资源两个时钟源:实时时钟(RTC/CMOS)和 OS 时钟. 系统调用:系统调用是一群事先定义
11、好的模块,他们提供一条管道让应用程序或用户能由此得到核心程序的服务。系统调用是系统程序与用户程序之间的接口系统调用与一般函数调用的区别:1、 系统调用运行在系统态,一般函数运行在用户态2、 系统调用与一般函数的执行过程不同,系统调用中断时,由系统找相应的系统调用子程序3、 系统调用要进行中断处理,比一般函数多了一些系统开销 进程同步:操作系统同步机制的主要任务就是保证在多任务共享系统资源的情况下,程序执行能得到正确的结果。同时,同步机制需要解决 进程执行的协调问题。进程同步的概念:在多任务系统中,进程一般存在资源共享关系和相互合作的关系。进程同步有两个任务:1)对具有共享资源关系的进程,保证以
12、互斥的方式访问临界资源。临界资源是必须以互斥方式访问的共享资源。2)对具有相互合作关系的进程,要保证相互合作的诸进程协调执行。同步机制应遵循的准则:1)空闲让进 2)忙则等待 3)有限等待 4)让权等待 信号量机制(wait signal)对不同的共享资源设置称为信号量的变量,用信号量的取值标识资源的使用状况,或某种事件的发生。、 整型信号量机制:用整型变量值来标记资源的使用情况。若整型量0,说明有可用资源;若整型量=0,说 明资源忙,进程必 须等待。对于一次只允许 一个进程访问的临界资源,可定义一个用户互斥的整型信号量,并将其初始化为 1,整型信号量的值只能通过两个特定的原子操作 wait
13、和 signal 来改变。Var s integer;Wait(s) /申请资源While s=0 do no-op;S=s-1; /占用资源 signal(s) /释放资源s=s+1;整型信号量的互斥:初始变量为 1整型信号量的协调:初始变量为 0总结:1)整型信号量的值只能由 wait 和 signal 操作改变2、 wait 和 signal 的操作都是原子操作,即在这两个操作中对信号量的访问是不能被中断的3、 原子操作可以通过关中断来实现4、 整型信号量机制的实例:linux 中的自旋锁 SpinLock5、 不同的资源对应不同的信号量,并不是系统中所有资源都用同一个信号量标识、 记录
14、型信号量机制:代码:Type semaphore = recordValue : integer; /资源数量L : list of process; /阻塞队列Procedure wait(s)Var s : semaphore;Begin s.value = s.value-1; /申请资源if s.value 0 then block(s.L) /此时资源无,自我阻塞进入阻塞队列endprocedure signal(s)var s:semaphore;begins.value=s.value +1; /释放一个资源if s.value =0 then wakeup(s.L); /释放后
15、发现还 有阻塞, 则唤醒阻塞中的进程end记录型信号量的优点是不存在忙等,采取了让权等待的策略、 AND 型信号量的机制基本思想是将进程在整个运行过程中所需要的所有资源一次性的全部分配给进程,待进程使用完之后再一起释放。只要 还有一个资源不能分配给该进程,其他所有可能为之分配的资源也不分配给它。管程:管程是描述共享资源的数据结构和在数据结构上的共享资源的管理程序的集合进程通信:进程之间的高级通信机制分为:共享存储器系统、消息传递系统、管道通信系统。线程:在操作系统中,进程是进行资源分配和独立执行的基本单位,为了进一步提高程序的并发性,减少系统开销,在操作系 统中引入了线程的概念。线程是进程中的
16、一个实体,是被系统独立调度和分派的基本单位。线程在运行中存在间断性,也有就绪、执行、阻塞三种形 态。第三章:进程调度与死锁进程调度的功能是按照某种策略或算法从就绪态进程中为当前空闲的 cpu 选择在其上运行的新进程。选择调度方式和算法的若干准则:1、 周转时间短 周转时间是指从作业被提交给系统开始,到作业完成为止系统的平均周转时间 T 等于 N 各作业的周转时间之和除以 nT=(t1+t2+t3+tn)/n作业的周转时间 T 与系统为它提供的服务时间 TS 之比为 W,W=T/TS,被称为带权周转时间,那么 n 个作业的平均带权周转时间为:T=(t1/ts1+t2/ts2+tn/tsn)/n服
17、务时间 Ts 是一个作业在 CPU 上执行的总时间2) 响应时间快 响应时间是指从用户提交一个请求开始直至系统首次产生响应的时间为止的一段时间3)截止时间的保证 截止时间是指某个任务必须开始执行的最迟时间,或必须完成的最迟时间4) 系统吞吐量高5)处理机利用率好 调度算法:1、 先来先服务(FCFS)从就绪列的队首选择最先到达就绪队列的进程,FCFS适合长进程,不利于短进程,适合 CPU 繁忙性进程,不适合 IO 繁忙性进程。2、 短进程优先调度算法(SPF)短进程优先算法能有效降低进程的平均等待时间,提高系统的吞吐量3、 优先调度算法(PSL) 类型:非抢占式优先权调 度算法、抢占式优先权调
18、度算法;优先权的类型:静态优先权和动态优先权4、 时间片轮转调度算法(RR)时间片大小的确定考虑的因素:系统对响应时间的要求,响 应时间越短, 时间片取值应该越小。1就绪队列中进程的数目2系统的处理能力35) 多级队列调度 不同的队列优先权不同,调度算法也可能不同。6) 多级反馈队列调度 队列优先权越高,时间片越短,时间片通常成倍增长实时系统中的调度:基本条件:1)提供必要的调度信息 2)系统处理能力强 3)采用抢占式调度机制 4)具有快速切换机制常用的调度算法:1)最早截至时间优先(EDF) 2)最低松弛度 优先(LLF )多处理器调度:多处理器系统的类型:紧密耦合、松弛耦合、对称处理器系统
19、、非 对称处理器系统进程调度方式:1)自调度 2)成组调度 3)专用处理器分配自调度:采用自调度的系统中有一个公共的就绪队列,任何一个空闲的处理器都可以从该就绪队列中选择一个进程或者一个线程运行。在多处理器环境下,FCFS 是较好的自调度算法自调度优点:1)易移植 2)有利于提高 CPU 的利用率缺点:1)瓶颈问题 2)低效性 3)程序切换频繁 死锁:死锁是由多个进程竞争共享资源而引起的进程不能向前推进的僵死状态产生死锁的原因:竞争死锁资源且分配资源的顺序不当产生死锁的必要条件:1)互斥 2)请求保持 3)不剥夺 4)环路等待S 为死锁的充分条件是:当且仅当 S 状态的资源分配 图是不可完全简
20、化的处理死锁的方法:预防死锁、避免死锁、 检测并解除死锁和忽略死锁死锁的避免:资源分配的状态分为安全状态和不安全状态,不安全状态不一定产生死锁,但是系统进入安全状态以后,就可以避免死锁的产生,所以避免死 锁的实质在于使系统处于安全状态。银行家算法:基本思想:一个进程提出资源请求后,系统进行资源的试分配。然后检测此次分配是否处于安全状态,若安全则按分配方案分配资源,否则不分配资源。试分配过程:available 可用数量max 最大数量allocation 已分配的资源数need 还需要某资源的数量1、 先进行试分配1、 request i = need i2、 request i = avai
21、lable i满足上述条件进行试分配3、 available = available request iallocation = allocation + request ineed i = need i request i然后安全检测wrok = availablefinish = false当 need I = work 时, work = work +allocation I finish =true1若 对于所有的 finish =true 都成里, 则说明处于安全状 态2第四章:内存管理内存管理的目标:1)实现内存分配、内存回收等操作 2)提高内存利用率和内存的访问速度(即充分利用现
22、有的内存资源,为应用程序提供方便的内存使用方式和一个快速、安全且充分大的存储器)程序的链接和装入:链接要解决的问题是将编译后的目标模块装配成一个可执行程序,分为静态链接和动态链接。1、 静态链接:在程序运行前,用链接程序将目标模块链接成一个完整的装入模块,任务:一时对逻辑地址进行修改,二是变换外部调用符号优点:运行速度较快 缺点:可执行文件较大,占用空间大,系统开销大,程序开发不够灵活,修改一个模块会导致整个程序重新链接2、 动态链接:可将某些目标模块的链接推迟到这些模块中的函数要被调用时再进行。优点:节省内存和外存空间,方便程序开发。缺点:增加了运行的时间开销,使程序运行时的速度变慢。程序装
23、入:装入方式:绝对装入方式、可重定位装入(静态装入方式)和动态运行时装入方式绝对装入方式:编译程序已知程序在内存中的位置,编译时产生物理地址的目标代码,装入程序按照装入模块的物理地址将程序和数据装入内存可重定位装入方式:编译时不知道程序在内存中的位置,那么编译时就必须生成可重定位的代码,其中的地址都是逻辑地址,在程序装入内存时,再把 逻辑地址映射为物理地址。程序装入时对目标程序中的指令和数据地址修改的过程称为重定位。静态装入方式的特点:1)编译程序使目标模块的地址从 0 开始 2)程序装入时,装入程序根据内存的使用情况将装入模块装入到内存的某个位置,并对模块进行重定位。物理地址=有效逻辑地址+
24、程序在内存中的起始地址动态运行时装入:当一个进程在被换出之前的内存地址与后来被从外存调入时所在的内存位置不同,这时,地址映射延迟到进程执行时再进行 连续分配的存储管理方式:类型:1)单一连续区分配方式 2)固定分区分配方式 3)动态分区分配方式单一连续区分配方式:适用于单用户单任务系统,内存分为系统区和用户区固定分区分配方式:将用户内存空间分配成若干固定大小的区域,每一个区域运行一道用户程序;分区的数量是固定的,大小也是固定的每个分区大小相等的分配方式缺点是内存利用率比较低,主要用于一个计算机去控制多个相同对象的场合,如冶炼炉分区大小不等:可以更好的利用内存分区结构:分区编号,分区大小,分区起始地址,分区状态在一些实时系统中,固定分区的分配方式还是简单而有效的。动态分区分配方式:用户分区的数量和大小都是动态变化的分配原理:系统初始只有一个大的空闲分区,当进程请求内存资源时,系统根据请求资源的大小分配一片空闲区域给进程,当运行一段时间后,空闲分区可能会散布在不连续的区域,这时系统会维护一个记录当前空闲分区情况的数据结构,当进程请求内存时,系统从所有空闲分区中找一个合适大小的空间给进程。数据结构:空闲分区表和空闲分区链