计算机操作系统笔记
概念
-
配置在计算机硬件上的第一层软件,是对硬件的首次扩充
-
是最重要的系统软件,其他系统软件、应用软件都依赖于操作系统的支持。
-
OS主要作用:
1、管理计算机系统所有硬件设备
2、提高设备利用率和系统吞吐量(吞吐量:计算机系统在单位时间内能够处理的作业数)
3、为用户和程序提供访问接口,方便用户使用
进程--->CPU、磁盘--->文件、内存--->地址空间
操作系统架层次结构
-
硬件之上
-
应用程序之下,为应用软件提供服务支撑
操作系统的目标与应用环境有关
-
批处理环境:作业吞吐量和资源利用率
-
工业控制、武器控制、多媒体环境:实时性
-
多终端查询环境:人机交互是否友好
-
微机环境:用户操作是否方便
-
方便性
-
有效性:提高系统资源利用率和吞吐量
-
可扩充性:无结构--->模块化结构--->层次化结构构--->微内核结构
-
开放性:系统遵循世界标准,与其它厂家软硬件相互兼容
操作系统的作用
可以从用户、资源管理、资源抽象多个角度分析os作用:
-
Os作为用户与计算机硬件系统之间的接口
-
Os作为计算机系统资源的管理者
-
Os实现了对计算机资源的抽象
用户角度:用户与计算机硬件系统之间的接口
-
Os处于用户和计算机之间,用户通过Os来使用计算机
-
Os为用户提供命令方式、图标-窗口(GUI)方式的接口
-
Os为软件开发人员提供系统调用(API)方式的接口
资源管理角度:计算机系统资源的管理者
-
计算机系统包括多种软件、硬件资源
-
计算机四类资源:处理机(CPU)、存储器(内存、外存)、I/O设备(输入输出(如:各种键盘、鼠标))、文件
-
OS是系统资源管理者,负责资源分配、回收和共享
资源抽象角度:OS实现对计算机资源的抽象
-
OS是计算机硬件上的多层次软件集合,隐藏对硬件操作的细节
-
I/O设备管理软件实现对计算机硬件操作的第一层抽象
-
文件管理软件实现对计算机硬件操作的第二层抽象
推动操作系统发展的主要动力
-
不断提高计算机资源利用率:多道批处理(提高资源利用率)、SPOOLING(进一步解决了人机矛盾)、VM(可以先安装一部分应用并且开始使用,在使用期间可以再进行下一步的安装)、NETOS方便用户使用网络)、NETFS通过网络环境访问另一台计算机的目录和文件)、DBMS(可以使服务器上面的资源完成共享)
-
方便用户:批处理系统→分时系统,CMD (命令行的方式)→>GUI(命令行的方式和图形用户接口的方式)
-
器件的不断更新换代:8b --->16b --->32b --->64b,新IO设备
-
计算机体系结构的不断发展:单CPU、多CPU、NETOS
-
不断提出新的应用需求:实时性需求、多媒体功能、系统安全性、嵌入式系统
单道批处理系统的处理过程
-
系统配有监督程序(Monitor)
-
先把一批作业以脱机方式输入到磁带上
-
在监督程序控制下使这批作业能─个接一个地连续处理
-
内存中只有一个作业
-
目的:提高利用率和吞吐量
多道程序设计基本概念
-
外存“后备作业队列”,内存“就绪作业队列”
-
配置作业调度程序
-
多个作业共享CPU和其它系统资源
多道批处理系统的优缺点
-
资源利用率高:CPU一直忙碌,M&1/o设备利用率高
-
系统吞吐量大,系统开销小
-
平均周转时间长
-
无交互能力
多道批处理系统需要解决的问题
-
处理机争用问题
-
内存分配和保护问题
-
I/O设备分配问题
-
文件的组织和管理问题
-
作业管理问题
-
用户与系统的接口问题
注意点:
-
多道批处理系统:主要是更高的资源利用率和吞吐量,但作业提交给系统时,无法控制作业的运行(即无交互性)
-
分时系统:用户可以和系统进行多方面的响应,并且能够得到及时的响应
-
实时系统:对外部的事件可以及时处理
操作系统的特性
并发(Concurrence)
并行:两个或多个事件在同一时刻发生
并发:两个或多个事件在同一时间间隔内发生
-
并发是提高系统资源利用率,增加系统的吞吐量的主要手段
-
单处理机并发执行和多处理机的并发/并行执行
-
引入进程(Process)机制可实现多进程并发执行
共享(Sharing)
资源共享也称为资源复用,是指系统中的资源可供内存中多个并发执行的进程共同使用
资源共享两种方式
-
互斥共享方式:临界资源(独占资源),如打印机、系统表格
-
同时访问方式:磁盘、共享代码、共享库等
虚拟(Virtual)
在OS中,通过某种技术将一个物理实体变为若干个逻辑上的对应物的功能称为虚拟 实现虚拟的技术:
-
时分复用:虚拟处理机(多道程序)技术、虚拟设备技术
-
空分复用:多道程序共享内存,多文件共享磁盘
异步(Asynchronism)
-
在多道程序环境下,系统允许多个进程并发执行
-
由于对系统资源的竞争以及进程调度顺序不同,进程总是是以“停停走走”的方式运行
-
进程以人们不可预知的速度向前推进,这就是进程的异步性
-
Os配置完善的进程同步机制,多进程异步执行和各进程独立执行的结果相同
操作系统的主要目的和功能
OS的主要目的
为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊地、高效地运行,并能最大程度地提高系统中各种资源的利用率,方便用户的使用。
OS的功能
传统OS应具有处理机管理、存储器管理、设备管理和文件管理等基本功能。此外,还需向用户提供方便的用户接口。
处理机管理功能(处理机管理主要是进程管理)
-
进程控制创建、撤消、以及进程状态转换、线程管理
-
进程同步协调多进程(线程)执行,互斥方式(锁),同步方式(信号量)
-
进程通信相互合作进程间的信息交换,消息通信,共享内存等
-
调度
(1)作业调度:从外存后备队列选择作业 (2)进程调度:从内存就绪队列选择进程
存储器管理功能
存储器管理的主要任务
-
提高多道程序下的存储器利用率
-
从逻辑上扩充内存
存储器管理的功能
-
内存分配和回收
-
内存保护
-
地址映射
-
内存扩充
存储器管理功能-内存分配
内存分配主要任务
-
为每道程序分配内存空间,使它们“各得其所”
-
提高存储器的利用率,尽量减少不可用的内存空间(碎片)
-
允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要
有静态分配和动态分配(内存扩充和移动)两种方式
存储器管理功能-内存保护
内存保护的主要任务
-
确保每道程序都仅在自己的内存空间内运行,彼此互不干扰
-
绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行
内存保护手段:界限寄存器、越界中断
存储器管理功能-内存映射
-
逻辑空间、逻辑地址(逻辑地址即软件地址)
-
物理空间、物理地址 (物理地址即内存地址)
-
在多道程序环境下,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址
-
由硬件实现地址转换
存储器管理功能-内存扩充
-
借助于虚拟存储技术,从逻辑上扩充内存容量,而不是扩大物理内存,使用户感觉内存容量比实际容量大得多
-
满足用户需要,改善系统性能
-
系统必须设置内存扩充机制(包含少量的硬件),用于实现下列功能:
(1)请求调入功能
(2)置换功能
设备管理功能
设备管理的主要任务
-
完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定的I/O操作
-
提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备
设备管理功能-缓冲管理
-
引人缓冲机制可解决CPU与l/O速度不匹配矛盾,提高CPU利用率,提高系统吞吐量
-
现代OS都有内存缓冲区。增加缓冲区可提高系统性能
缓冲方式:
-
单缓冲
-
双缓冲
-
公用缓冲池
设备管理功能-设备分配
主要任务(根据进程l/o请求以及系统资源情况,按照某种分配策略为其分配设备)
-
系统中有设备控制表、控制器控制表、通道控制表等记录各设备状态
-
分配时还需考虑设备类型及死锁问题
-
设备使用完由系统回收
设备管理功能-设备处理(设备处理程序即为设备驱动程序)
主要任务:
-
实现CPU与设备控制器之间的通信。
-
CPU向设备控制器发出I/o命令,完成指定l/o操作。
-
响应设备控制器发来的中断请求,实现设备数据读写。
操作系统结构
传统操作系统结构
-
早期无结构OS(第一代)
-
模块化结构OS(第二代)
-
分层式结构OS(第三代)
OS结构设计
-
早期OS的规模小,由一个人手工开发,无结构,只追求运行效率
-
随着OS越来越复杂,要用软件工程方法设计高质量OS
-
软件质量评价指标:功能性、有效性、可靠性、易用性、可维护性、易移植性等
无结构操作系统
-
早期OS的规/荚小时采用,也称为整体结构OS
-
设计者只把注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想
-
Os是为数众多的一纽过程的集合,致使操怍系统内部既复杂又混乱,是无结构的OS
-
开发困难、调试困难、维护困难
模块化结构OS
-
用模块化程序设计技术(功能分解、模块化、精益求精)开发OS
-
OS具有较清晰的结构
-
OS不再是由众多的过程直接构成的,而是按其功能精心地划分为若干个具有一定独立性和大小的模块
模块化结构OS的特点及问题优缺点(与无结构os相比)
-
提高OS设计的正确性、可理解性和可维护性
-
增强OS的可适应性
-
加速OS的开发过程
模块化结构设计存在的问题
-
在OS设计时,模块划分及接口定义很难满足实际需求
-
在OS设计阶段,很难确定各模块的开发次序
分层次结构OS
-
采用自底向上的分层设计方法开发OS
-
将OS分为多个层,每层由多个模块组成,高层依赖于紧令阳的低层(单层依赖)
分层结构特点
-
易保证系统的正确性:自底向上的有序性
-
易扩充和易维护性
-
系统效率较低,每层间都要建立昙次间通信机制
客户/服务器模式简介
-
风靡于20世纪90年代,简私称C/s结构
-
分布式系统及网络环境下软件的主要工作模式
客户/服务器系统
-
客户机(Client)
-
服务器(Server)
-
网络系统(LAN/WAN)
客户服务器之间的交互
客户机和服务器利用销息机制通信
-
客广机发送进程发送请求消息
-
服务器接收消息
-
服务器回送消息
-
客户机接收进程接妆消息
客户/服务器模式的特点
-
数据的分布处理和存储
-
便于集中管理
-
灵活性和可扩充性
-
易于改编应用软件
-
存在不可靠和系统瓶颈问题
面向对象程序设计简介
-
Object-Orientated Programming(OOP)技术20世纪80年代开始流行
-
基于“抽象”和“隐藏”原则开发大型软件
-
常用概念:类、对象、继承等
优点
-
通过“重用”提高产品质量和生产率
-
使系统具有更好的易修改性和易扩展性
-
更易于保证系统的“正确性”和“可靠性”
微内核OS结构
-
微内核(MicroKernel)操作系统结构20世纪80年代开始发展支持多处理机运行
-
适用于分布式系统环境·
-
当前支持多处理机的os基本采用微内核结构:wWin2000,Mach Os
微内核OS结构特征
-
足够小的内核,将os最基本的部分放入内核
-
基于客户/服务器模式
-
应用“机制与策略分离”原则:机制放于微内核
-
采用面向对象技术
微内核的基本功能
特机制部分以及气硬件紧密相关的部分功能放入微内核中
微内核通常具有如下几方面的功能
-
进程(线程管理:切换、调度、同步、通信等
-
低级存储器管理:例如页表及地址映射
-
中断和陷入处理:保护现场、识别中断和陷入、中断前处理
微内核的优点
微内核Os结构建立在模块化、层次化结构的基础上的,并采用了客户/服务器模式和面向对象的程序设计技术
微内核结构的操作系统集各种技术优点之大成,具有如下优点
-
提高了系统的可扩展性
-
增强了系统的可靠性
-
可移植性强
-
提供了对分布式系统的支持
-
融入了面向对象技术
微内核结构的操作系统的缺点
多次上下文的切换,运行效率低
程序顺序执行与并发执行
早期未配置cs的系统以及单道批处理系统程京顺序融行
-
内存只装入一个程序
-
独占所有系统资源
-
程序执行完成后才装入下个程序
-
资源浪费,系统运行效率低
传统OS以及现代OS程序并发执行
-
内存同时装入多道程序
-
共享资源,并发执行
程序顺序执行与并发执行
早期未配置os的系统以及单道批处理系统程序顺序执行
-
内存只装入一个程序(早期未配置系统中有一个监控程序和一个应用程序(单道批处理系统有一个作业和监控程序))
-
独占所有系统资源
-
程序执行完成后才装入下个程序
-
资源浪费,系统运行效率低
传统os以及现代os程序并发执行
-
内存同时装入多道程序
-
共享资源,并发执行(会出现一个竞争的过程,会使我们的I/O设备充分的忙碌提高系统的吞吐量以及利用率)
前趋图(Precedence Graph)
-
是一个有向无循环图,记为DAG(Directed Acyclic Graph)
-
用于描述进程之间执行的先后顺序
-
每个结点表示一个进程或程序段,乃至一条语句
-
有向边表示两个结点之间前趋关系,P→>P表示在P,开始执行之前P,必须完成
-
概念:直接前趋、直接后继、初始结点、终止结点、结点重量
程序顺序执行时的特征(单)
-
顺序性:严格按照程序规定的顺序执行
-
封闭性:程序独占全机资源,不受外界因素影响
-
可再现性:只要执行环境和初始条件相同,得到相同结果
程序并发执行
-
程序顺序执行方便程序调试,但资源利用率低(单道批)
-
多道程序并发执行可提高资源利用率(多道批)
-
只有不存在前趋关系的程序之间才有可能并发执行
程序并发执行时的特征(多)
-
间断性:相互制约关系导致程序走走停停
-
失去封闭性:程序运行环境受到其它程序影响
-
不可再现性:程序计算结果与并发程序运行速度有关
进程实体
-
为使程序并发执行具有再现性,并且可以对并发执行的程序加以描述和控制,引入“进程”概念
-
进程的数据结构:进程控制块( Process Control Block,PCB)
-
系统利用PCB描述进程的基本情况和活动过程,控制和管理进程
-
进程实体(进程映像)∶由程序段、相关数据、PCB构成
进程的定义(进程是进程实体(即进程的代码区、数据区、PCB)的运行过程,是系统进行资源分配和调度的一个独立单位)
-
进程是程序的一次执行过程(程序是静态的(比如,它是存储在硬盘上面的一系列指令)进程是动态的)
-
进程是一个程序及其数据在处理机上顺序执行时所发生的活动
-
进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
进程的特征
-
动态性:进程最基本特征。进程的实质是进程实体的一次运行过程,进程有生命周期。进程与程序区别
-
并发性:多个进程实体同时存于内存,在一段时间内可同时执行
-
独立性进程实体是能独立运行、独立获得资源、独立调度的基本单位
-
异步性:进程按异步方式运行,以独立且不可预知的速度推进。
进程三种基本状态
进程在其生命周期内可能具有多种状态
每个进程至少应处于以下三种基本状态之一
-
就绪(Ready)状态:等待分配CPU,就绪队列
-
执行(Running)状态:已分配CPU,正在运行
-
阻塞(Block)状态:进程无法继续运行(例如等待lO完成、申请缓冲区失败),引起进程调度,多个阻塞队列
进程创建状态
进程由创建而产生,创建过程:
-
申请空白PCB,填写用于控制和管理进程的信息
-
分配进程所需资源,转入就绪态,插入就绪队列
-
若资源不能完全满足,进入创建状态。创建未合成,不能调度
-
等资源满足后再转入就绪态
进程终止状态进程终止过程:
-
等待os进行善后处理
-
将其PCB清零,并将PCB返还系统
进程终止时机:
-
进程执行到结束点
-
出现错误,被OS结束
-
被其它进程(例如父进程)所终结
进程挂起与激活
挂起的进程处于静止状态,不接受调度激活(Active)与挂起(Suspend)相对应
引入挂起操作的原因,是基于系统和用户的如下需要:
-
终端用户的需要(进程需要分析的时候)
-
父进程请求
-
负荷调节的需要
-
操作系统的需要
挂起(Suspend)操作
-
活动就绪→静止就绪(处于外存中)
-
活动阻塞→静止阻塞(处于外存中)
激活(Active)操作
静止就绪→活动就绪
静止阻塞→活动阻塞
引入挂起操作后五个进程状态的转换
-
NULL→创建
-
创建→活动就绪
-
创建→静止就绪
-
执行→终止
OS中用于管理控制的数据结构
-
系统为每个资源和进程设置一个数据结构,用于表征其实体。资源(进程)信息表
-
4类数据结构:内存表、设备表、文件表、进程表(PCB)
-
通过指针将同类资源或同进程资源串起,便于管理
进程控制块PCB的作用
-
作为独立运行基本单位的标志:通过PCB感知进程存在及状态变化
-
能实现间断性运行方式:用PCB保存运行现场信息
-
提供进程管理所需要的信息:PCB有程序和数据指针,资源清单
-
提供进程调度所需要的信息:PCB中有进程状态、优先级(是一个数字)、运行时间、等待时间等信息
-
实现与其它进程的同步与通信:PCB中具有实现进程通信的区域或者指针
进程控制
-
进程控制是进程管理中最基本的功能
-
进程控制主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。如当一个正在执行的进程因等待某事件而暂时不能继续执行时,将其转变为阻塞状态,而在该进程所期待的事件出现后,又将该进程转换为就绪状态等
-
进程控制一般是由os的内核中的原语来实现的
OS分层
-
现代操作系统─般将Os分成若干层次,不同功能放在不同层次
-
将与硬件紧密相关的模块(如中断处理程序)、常用设备驱动程序、运行频率较高模块(时钟管理、进程调度、操作原语)放于最内层
-
Os最内层的部分称为内核内核部分常驻内存
OS分层目的
-
便于软件保护,防止受到其它应用程序破坏
-
可提高Os运行效率
系统态
-
管态、内核态
-
高权限,可执行-切指令
-
传统os运行于管态
用户态
-
目态
-
低权限,仅执行规定的指令,访问指定的R和M,用户程序运行于目态
处理机分为俩种状态主要是防止os本身以及关键数据受到破坏
原子操作及原语
原子操作(Action Operation)
-
一个操作中的所有动作要么全做,要么都不做
-
操作中的所有动作是不可分割的基本单位
原语(Primitive)
-
由若干指令组成,用于完成一定功能的过程
-
具有原子操作性质
-
原语执行过程中不允许中断(禁止中断)
-
原语在系统态运行,常驻内存
内核功能
支撑功能
-
中断管理。如系统调用、键盘输入、设备驱动
-
时钟管理。如时间片、时钟中断、截止时间
-
原语操作。如链表操作、进程通信等原语
资源管理功能(高频操作或与硬件紧密相关操作)
-
进程管理:调度、分派、创建、撤消、同步、通信等
-
存储器管理:地址转换、分配、回收、共享、保护、对换
-
设备管理: driver&buffer、分配、设备独立性
进程层次结构
-
OS中允许一个进程创建另一个进程
-
把创建新进程的进程称为父进程,把被创建的进程称为子进程
-
子进程可创建更多的孙进程,形成一个进程的层次结构
-
子进程可继承父进程的资源(file&buffer)
-
UNIX中进程与子孙进程组成一个进程家族(组)
-
Windows中无进程层次概念,所有进程地位相同
进程图
-
进程图描述—个进程的家族关系
-
进程图是一棵有向树
引起创建进程的事件
导致一个进程去创建另一个进程的典型事件有四类:
-
用户登录,进入就绪队列
-
作业调度
-
提供服务:用户程序提出服务请求如文件打印
-
应用请求:用户程序自己创建新进程(fork)
进程的创建( creat原语)
收到创建新进程请求,OS调用进程创建原语creat创建新进程:
-
申请空白PCB,为新进程申请PID
-
为新进程分配运行所需资源,包括各种物理和逻辑资源,如内存、文件、l/O设备和CPU时间等
-
初始化PCB:父子PID、处理机状态、进程状态、优先级
-
如果进程就绪队列能够接纳新进程,将其插入就绪队列
引起进程终止的事件
-
进程正常结束。Halt指令或Log off
-
进程遇到异常事件,无法继续运行。如:越界错、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、lO故障
-
外界干预。进程应外界请求而终止。如死锁、父进程请求或终止
进程的终止(terminate原语)过程
-
根据PID,从PCB集合中找出该进程的PCB,读取进程状态
-
若进程为执行状态,则终止进程执行并置调度标志为真
-
若有子孙进程,也终止所有子孙进程
-
将终止进程全部资源归还给其父进程或者系统
-
将被终止进程PCB从所在队列(或链表)中移出,等待其它程序来搜集信息
引起进程阻塞和唤醒的事件
下述事件会引起进程阻塞
-
向系统请求共享资源失败:资源不足,阻塞
-
等待某种操作的完成:无法继续,自我阻塞,如等待lO完成
-
新数据尚未到达:进程未同步,阻塞
-
等待新任务的到达:待发送数据未准备好,阻塞
当等待的资源可用,IO操作完成、数据准备好、任务到达则唤醒进程
进程阻塞(block原语)过程
进程通过调用阻塞原语block将自己阻塞
阻塞是进程自身的一种主动行为
-
先立即停止执行,把PCB状态由执行改为阻塞
-
将PCB插入阻塞队列。若有多个阻塞队列,则插入到具有相同事件
的阻塞队列
-
转调度程序重新调度,将处理机分配给另一就绪进程,并进行进
程切换
进程唤醒(wakeup原语)
当被阻塞进程所期待的事件发生,由相关进程(比如提供数据的进程)调用唤醒原语wakeup,将阻塞进程唤醒
-
启动的I/O操作已完成,或者资源可用
-
所期待的数据已经到达,或者新任务到达
进程唤醒(wakeup原语)
wakeup执行过程
-
把被阻塞的进程从等待该事件的阻塞队列中移出
-
PCB中的现行状态由阻塞改为就绪
-
将PCB插入到就绪队列中
阻塞和唤醒原语作用相反,应成对使用,防止进程永久阻塞
进程挂起(suspend原语)
OS利用suspend原语将指定进程或处于阻塞态进程挂起suspend执行过程
-
检查进程状态
-
活动就绪→静止就绪;活动阻塞→静止阻塞
-
将PCB复制到指定内存区域方便分析
-
若挂起进程正在执行,则重新调度
进程激活(active原语)
OS利用active原语将指定进程激活active执行过程
-
将进程由外存调入内存
-
检查进程状态:静止就绪→活动就绪;静止阻塞→活动阻塞
-

浙公网安备 33010602011771号