一.操作系统定义:操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。 多道程序设计:指在计算机内存中同时存放多个独立程序,在管理程序的控制下交替的执行。
操作系统的五大功能:用户接口、文件管理、存储管理、设备管理和进程管理。 操作系统三种基本类型: 批处理系统
优点:1资源利用率高:CPU和内存利用率较高;2作业吞吐量大:单位时间内完成的工作总量大;
缺点:1用户交互性差:整个作业完成后或中间出错时,才与用户交互,不利于调试和修改;2作业平均周转时间长:短作业的周转时间显著增长; 实时系统:实时性和可靠性
分时系统:1交互性:系统能及时对用户的操作进行响应,显著提高调试和修改程序的效率:缩短了周转时间。2共享主机:多个用户同时使用。3独立性:各用户独立操作,互不干扰。
分时系统与实时系统:分时系统通用性强,交互性强,及时性要求一般(通常数量级为秒);实时系统往往是专用的,系统与应用很难分离,常常紧密结合在一起,实时系统并不强调资源利用率,而更关心及时性(通常数量级为毫秒或微秒),可行性等。 二.用户接口
用户接口目标:提供一个友好的用户访问操作系统的接口。操作系统向上提供两种接口:系统命令——供用户用于组织和控制自己的作业运行;编程接口——供用户程序和系统程序调用操作系统功能。
系统调用:操作系统为编程人员提供的界面是系统调用。 用户态(目态):只能执行非特权指令,用户程序在目态下运行;
系统态(管态):能执行指令全集(包括特权,非特权指令),具有改变CPU状态的能力,操作系统在管态下运行。
作业概念:在一次应用业务处理过程中,从输入开始到输出结束,用户要求计算机所做的有关该次业务处理的全部工作称为一个作业。 作业由三部分组成:程序,数据,作业说明。 三.进程管理
进程:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程,是资源分配和调度的单位。
并发的概念:程序并发是指多道程序在宏观上同时向前推进,如用户程序与用户程序之间的并发执行;用户程序与操作系统程序之间并发执行等。并发实质上宏观上并行,而微观上串行的意思。
并发执行的条件:达到封闭性和可再现性
程序的并发执行:为了增强计算机系统的处理能力和提高资源利用率所采取的一种同时操作技术。
进程的概念:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。 进程和程序的区别:进程是动态的,有并行特征;程序是静态的,无并行特征;进程是暂时的,程序的永久的;进程是竞争计算机系统资源的基本单位,从而其并发性受到系统自己的制约;进程与程序的对应关系(通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。)
进程控制:系统使用一些具有特定功能的程序段来创建、撤销进程及完成进程状态的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。
原语:由若干条指令构成的“原子操作(atomic operation)”过程,作为一个整体而不可分割--要么全都完成,要么全都不做。
进程的基本状态(就绪、执行、等待)及不同状态之间转换的条件:
运行 ? ? ? ? 等待
? – ? – – ? – – – – – ? –
就绪 --> 运行
调度程序选择一个新的进程运行 运行 --> 就绪
运行进程用完了时间片
运行进程被中断,因为一高优先级进程处于就绪状态 运行 --> 等待
当一进程必须等待时 OS尚未完成服务
对一资源的访问尚不能进行 初始化I/O且必须等待结果 等待某一进程提供输入 (IPC) 等待 --> 就绪
当所等待的事件发生时
就绪
用户态和系统态:用户态时不可直接访问受保护的OS代码;核心态时执行OS代码,可以访问全部进程空间。
临界资源:一次仅允许一个进程使用的资源称为临界资源 临界区:不允许多个并发进程交叉执行的一段程序。
间接制约:由于共享某一公有资源而引起的在临界区内部允许进程交叉执行的现象,称为由共享公有资源而造成的对并发进程执行速度的间接制约,简称间接制约。 进行竞争--独占分配到的部分或全部共享资源,“互斥”。
直接制约:一组在异步环境下的并发进程,各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程称为并发进程间的直接制约。 进行协作--等待来自其他进程的信息,“同步”。
互斥:一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行。
即不允许两个以上的共享该资源的并发进程同时进入临界区称为互斥。
同步概念:异步环境下的一组并发进程,因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。 共享变量、共享资源:允许多个进程使用。
临界资源:某一段时间内仅允许一个进程使用的共享资源。 竞争临界资源―》间接制约-》互斥 相互合作发消息-》直接制约-》同步 进程通信:控制信息的传送和大批量数据传送。
信号:信号相当于给进程的“软件”中断;进程可发送信号,指定信号处理例程;它是单向和异步的。
共享缓冲区:相当于内存,可以任意读写和使用任意数据结构(当然,对指针要注意),需要进程互斥和同步的辅助来确保数据一致性。
管道:管道是一条在进程间以字节流方式传送的通信通道。它由OS核心的缓冲区(通常几十KB)来实现,是单向的;常用于命令行所指定的输入输出重定向和管道命令。 信号量:用于表示资源数目或请求使用某一资源的进程个数的整形量,信号量只能通过初始化和两个标准的原语来访问,作为OS核心代码执行,不受进程调度的打断。 P、V原语:必须成对使用P和V原语:遗漏P原语则不能保证互斥访问,遗漏V原语则不能在使用临界资源之后将其释放(给其他等待的进程);P、V原语不能次序错误、重复或遗漏
私有信号量:信号量只与制约进程及被制约进程有关而不是与整组并发过程有关的信号量 。公有信号量:互斥时使用的信号量。 竞争:各个进程争用共享资源.
饥饿: 指一个进程一直得不到资源,其他进程可能轮流占用资源。 死锁: 指多个进程互不相让,都得不到足够的资源。
死锁:各并发进程彼此互相等等对方所拥有的资源,且这些并发进程在得到对方资源之前不会释放自己所拥有的资源。
产生死锁的原因:起因是并发进程的资源竞争,根本原因是由于系统提供的资源个数少于并发进程所要求的该类资源数。 死锁的四个必要条件:
⑴互斥条件:进程访问的是临界资源,那个资源一次只能被一个进程所使用。⑵不剥夺条件:一个资源仅能被占有它的进程所释放,而不能被其他进程剥夺。⑶部分分配:(请求和保持条件)一个进程在请求新的资源的同时,保持对某些资源的占有。⑷环路等待条件:存在一个进程的环路链,链中每一个进程占用有着某个或某些资源,又在等待链中的另一个进程占有的资源。
死锁的解决方案:1预防、2避免、3检测与恢复三种方法。 线程分类:用户级线程,系统级线程