第一章 操作系统概论
定义:
直接控制和管理计算机系统中的硬件和软件资源,合理的组织计算机工作流程,便于用户使用的程序集合
计算机四大资源:处理器,存储器,I/O 设备 ,信息文件
作为资源管理者,操作系统在资源管理过程中主要完成以下工作:
1)监控资源状态
2)分配资源
3)回收资源
4)保护资源
发展过程:
1 人工操作时代,使用卡带手动输入指令
2 单道批处理时期一次性处理一批作业,减少了机器的空闲时间,单内存中始终只保存一道作业。
3 多道程序设计+批处理: 一次有多个作业调入内存,多个作业交替的运行,时间间隔很短,宏观上,若干个作业同时运行(并发执行)。通过通道技术,和中断技术。
4 现代操作系统时代
操作系统的功能
处理器管理
主要对CPU资源进行分配,控制和管理其运行效率,如·对进程和线程的管理。主要有以下任务:
1) 进程控制:分配资源,撤销资源,回收资源,进程的在状态转换
2)进程同步:进程的运行是以异步方式(不可预测)进行的,为使进程协调一致的工作,系统中必须设置同步机制
3) 进程通信:多个进程完成同一个任务时,或竞争资源时,都需要进行进程通信
4) 调度:进程调度,交换调度,作业调度
存储器管理
当多道程序被同时装入内存,共享内存资源时,其为程序分配空间,并保护
1)内存分配:按照一定算法为作业分配内存,并用机构记录相关信息。应减少内外碎片
2)内存保护:每道程序只允许在自己的内存范围运行,不允许用户程序访问操作系统的程序和数据,也不运行访问其它非共享的用户程序。
3)地址映射:虚拟内存逻辑地址----物理内存地址的映射
4)内存扩充:虚拟存储技术,调入程序的一部分进内存,未命中则掉页
I/O设备管理
除了cpu和内存以外的所有输入输出设备,这些设备种类繁多,物理特性差异大。设备管理提供驱动或控制程序,使其不必具体了解就能使用
1)缓冲管理:在cpu的高速性和IO的低速性之间的矛盾 引入缓冲
2)设备分配:为用户分配I/O资源
3)设备处理:设备驱动程序,实现CPU与设备控制器之间的通信
4)虚拟设备管理:虚拟设备采用假脱机技术
文件管理
广义上所有设备都属于“文件”(并不仅限于文本)。
1)文件储存空间的管理:对不同用户文件的储存空间进行统一管理。
2) 目录管理:文件系统为每个文件建立了一个目录项(文件控制块),如Linux的inode
3)文件共享:是指多个进程在受控的前提下公用系统中的一个文件,在外存中只保存一个副本,节省了空间
用户接口
分为命令接口和程序接口
1)命令接口:用户通过命令接口直接向作业发出命令来控制运行,又可分为:联机用户接口,脱机用户接口,图形用户接口。
2)程序接口:程序执行在用户态下,不允许直接使用系统的各类资源,操作系统提供了一整套系统调用,执行过程中可以发出请求
操作系统的特性
1)并发性: 并发性是指两个或多个事件在同一时间间隔(并非同一时间)发生。微观上,每一时刻只有一道程序在执行
2)共享性:多道程序系统中,多个进程对cpu,内存,I/O设备共享。有利于提高资源利用率
共享有两种方式: 互斥访问 和 同时访问
3)虚拟性:把一台物理上的主机虚拟成多台逻辑上的主机,称为虚处理器。
4)异步性:内存中的各个程序何时执行,何时挂机,何种速度推进,都不可以预知
操作系统的分类
按照使用操作系统的用户数目来分类:单用户操作系统和多用户操作系统
所依赖的硬件规模来分类:可分为大,中,小型机和微型机
按照所使用的环境来分类:批处理系统,分时系统,实时系统,网络操作系统,分布式操作系统,嵌入式操作系统
批处理系统:
具有成批处理作业的能力
1)单道批处理系统:当一个作业全部处理完后,再调入下一个作业进入内存,资源浪费大
2)多道批处理系统: 脱机方式进行输入输出操作,通过输入井形成后备队列,通过作业调度将一批作业调入内存,并发执行,可以共享系统资源,避免了浪费(如 处理数据时,IO资源的浪费)
特性:内存中有多个作业,交替使用CPU(为作业所分配的进程在内存中)
调入内存顺序与作业完成顺序无关(进程调度有关)
需要进行两次调度:作业调度和进程调度
优点:
可以CPU 和I/O设备充分利用
内存较大可以并发执行程序,提高了空间利用率
增加了吞吐量
缺点:
不能交互式的运行
分时操作系统:
一种能够提供用户与程序之间直接进行人机交互的操作系统,运行用户通过终端以交互的方式使用计算机;
采用时间片技术:操作系统为用户的请求分配一个时间片,用完时,当前任务暂停(时钟中断),选择下一个请求并分配时间片。轮流获得时间片,直到运行完成。
实现方法:
1)用户作业能直接进入内存,以保证用户能与机器交互(无作业调度?)
2)不允许一个作业长期占用CPU
单道分时系统/多道分时系统:
内存中的作业数量来决定。单道只允许一个作业进入内存,浪费了很多时间在内外存交换上。
特点:
交互性:通过终端与系统互动,主要特点
同时性:在各自终端上共享CPU和其他资源
独立性:由于采用时间片,用户感觉是在独立使用一台计算机
及时性:能在要求时间内得到响应
指标:
响应时间 ----分时片不宜过大或过小
多道批处理与分时系统区别
多道批处理系统与分时操作系统的区别 - 就像空中月 - 博客园 (cnblogs.com)
实时操作系统
要求对 随机发生的外部事件及时做出响应并处理
目标任务不同分类:
1) 实时控制系统:主要用于生产过程的自动控制。对时间要求控制极其严格,毫秒级别。
2)实时信息处理系统:用于实时信息自动处理,通过对信息进行检索和处理,并在很短时间内做出响应,是用户可以接受的秒数级别
特性:
基于事件驱动服务,很少需要人工干预和监督。
1)实时性:对外部请求在严格的时间范围内做出响应。
硬事实任务:超时会引发难以预料的后果,如武器控制
软事实系统:时间要求并不十分严格
2)高可靠性和安全性:往往采用多级容错措施和多机备份
------------------------------------------------以上是微观环境
微型操作系统(个人计算机):
即个人计算机上配置的操作系统
一般按照用户数和任务数来划分
单用户操作系统
1)CP/M
2)MS-DOS(disk operating system)
单用户多任务操作系统:
同一时间内只允许一个用户使用计算机,但允许用户同时运行多个任务(并发)
多用户多任务操作系统:
如Linux,可以登录多个用户名,并切换
网络操作系统
是基于计算机网络,实现网络通信和网络资源管理功能的操作系统,如NT/2008 server
除基本功能外的以下功能:
1)网络通信:连接建立拆解,报文的分解组装,传输控制,流量控制,校验
2)资源管理和共享
3)网络服务:如电子邮件,远程登录,文件传输
工作模式:
1) 客户 / 服务器模式:
网络站点分为两类:
本地客户机--负责收集处理用户本地请求,并发送给远程服务器,等待服务器处理并返回结果;
控制中心或者操作中心的服务器:提供文件请求,数据通信等服务,并返回结果
2)对等模式:所有站点都是对等的,既可以响应其他站点请求,又可以发处请求
缺陷:
并不是一个一体化的系统,并没有统一标准和接口(但通过协议连接),需指定哪一个站点传输。没有统一的界面和接口,难以同步写作
分布式操作系统
由若干台独立的计算机构成,每台计算机都可以独立工作,又可以协同合作。
有一个全局的操作系统,负责全系统(每台计算机)的资源分配,调度,传输控制等工作,并为用户提供统一界面和标准接口
分布式和网络操作系统的区别
1) 分布性:
地理上是一样分配的
处理上的分布性是分布式系统的最基本特征,而网络操作系统主要集中在某个主机或服务器上,控制方式是集中的
2)透明性:
分布式:隐藏了内部细节,如访问文件,只需要知道文件名,而无需知道在哪个站点
3)统一性:分布式系统要求一个统一的操作系统,而网络只需要遵循一些协议就行
嵌入式操作系统:
除基本外,还有以下特点:
1) 系统内核小
2) 专用性强
3)实时性强,弱交互性
4)固化代码,一般在ROM中
如linux,Vxworks
操作系统的结构模型
整体式模型:
模块式结构模型(如DOS),采用模块化程序设计,划分为相对于的独立模块,互相调用,用接口连接起来。
优点:
结构紧密,组合方方便,能自由的调用导致系统效率高
缺点:
1)系统难以扩充,牵连甚多,复杂的调用关系,修改一模块可能导致很多模块改变
2)可靠性低:关系复杂,容易死锁
层次性模型:
把复杂的操作系统模块从高到低分为若干个层次:高一层的模块只能调用底层的模块。
全序的:具有单向依赖,不允许同级之间相互调用,单种层次结构难以实现
半序的:单向依赖,单同级之间可以互相调用
优点:
1)正确性:自下而上的设计方法,底层模块一般是基础功能
2) 易扩充和维护
缺点:
1)必须要在相邻层之间建立通讯机制-通常要穿越多个层次,增加开销,效率下降
微内核与 客户/服务器模型
微内核:如ARM微型处理器,只保留最核心的部分功能-可扩展性强,可靠性高,可移植性强,现在多数都采用微内核
客户/服务器模型: 微内核的基础之上-将操作系统中最基本的部分放入微内核中,其他功能放在微内核以外的一组服务器(进行)中实现。如进程'服务器'。 基本思想:
操作系统分为两大部分:运行在核心态的微内核1)。另一部分在用户的进程2),这些进程相互独立,每个进程实现一类服务--称为服务器进程。服务器进程不断检查是否有客户提出服务请求,如果有处理并分返回结果。
当客户请求某类服务时,用户与服务器之间形成了客户/服务器的关系。通过微内核以消息的形式返回给用户。
优点:
1)可扩展性强-只需要增加功能或新增一个服务器
2)提高可靠性:每个进程服务器只在特定的内存中运行,并且处于用户态,不能直接访问硬件
3)适合分布式系统环境
面向对象模型:
不仅可以用来设计程序,还可以用来设计操作系统。--把所有资源都看成对象,可以利用封装,多态,继承等,降低开发成本和实施保护
优点:
1)通过“复用”来降低开发成本(相当于调用别人写好的)
2)易扩充,易修改,具有封装性,且可以利用继承
3)提高正确性:可以对对象进行独立的测试。
第二章:用户与操作系统的接口
操作系统为用户提供了两类接口:作业控制级接口(命令级接口1) 和 程序级接口2(系统调用或应用程序接口)
一个侧重:用户 另一个侧重 程序!
作业控制级接口
包括脱机控制级接口(批处理系统中) 和 联机用户接口(分时系统中)
作业
用户一次请求计算机系统为其完成任务所进行工作的总和,通常由若干个相对独立的步骤组成,一个步骤称为一个作业步。
作业类型:
脱机作业:又称为批处理作业,用作业控制语言描绘成作业控制卡或作业说明书,递交给操作系统
联机作业:交互式作业,用户通过终端或键盘操作命令(Linux命令行?),多出现在分时系统和实时信息系统中。
脱机用户接口:
1)作业控制语言:一般包含I/O命令,编译命令,操作命令,和条件命令
2) 作业控制卡和作业说明书:包括 作业基本描述,作业控制描述,资源要求描述
联机用户接口:
由一组操作系统命令及命令解释程序组成,用于联机作业的控制(shell-bash)
1)命令行模式:linux命令行
2)批处理命令:允许用户预先把一系列命令组织在一种特定的文件-批命令文件,一次建立,多次执行。节省时间,减小出错概率(shell脚本)
3)图形用户接口方式:GUI
程序级接口
应用程序通过系统调用实现与操作系统的通信,并取得操作系统的服务
用户态与核心态:
当CPU处于用户程序执行状态时称为用户态,CPU处于系统程序执行状态时称为核心态。状态寄存器有一位来记录当前的状态
特权指令和房管指令
特权指令:只允许在核心态使用的指令
访管指令:为了使用户也能使用特权指令,访管指令能实现暂时到核心态的转变
系统调用:
是操作系统给编程使用的唯一接口,实现对硬件部分相关的工作。屏蔽了具体细节。
系统调用的与一般过程调用的区别:
1)运行在不同的系统状态:
系统调用:调用程序运行在用户态,被调用程序运行在核心态
一般调用:都运行在用户态
2)状态转换:系统调用要进行中断转核心态进入子程序
3)返回问题:一般过程调用返回时-----可能不能继续执行(要发生进程调度)
4)嵌套调用:都允许嵌套调用
系统调用分类:
一部分是系统自身需要,一部分是作为服务提供给用户的。
实现:
每个调用都事先约定了编号(功能号),需要符合格式,如参数
如DOS环境下的int 21 号功能,参数在ax中
第三章:进程的描述与控制
单道顺序执行
1)顺序性:一次执行一个程序
2)封闭性:资源封闭性(独占)和结果封闭性(结果与运行时间无关)
3)可再现性:只要环境和初始环境相同,最终结果都一样
程序并发执行
并发性:多个程序同时在内存中通过进程调度运行,会发生跟时间有关的错误--如死锁
与时间有关的错误原因:
1)与众多程序执行的速度有关
2)由于多个程序都共享了一个变量,或者需要互相同步协调
3)对于协调没有有效的进行控制
特点:
1)失去了封闭性和可在线性:不在只依靠初始数据,资源也不再独占,还依靠与执行过程中的共享改变
2)程序与任务不再一一对应:一个程序可以对应多个(用户)任务
3)并发执行过程中存在相互制约的关系:
资源的间接制约
读写的直接制约(必须写入内容之后才能读取)
进程
是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源和调度的一个独立单位。
特性:
1)动态性:进程有生命周期,而程序只是个静态实体
2)并发性:多个进程实体同时存在于内存中,通过进程调用来执行
3)独立性:是一个系统进行资源分配和调度的基本单位,能独立运行。未建立进程的程序都不能作为一个独立的单位参与运行
4)异步性:不可预知,跟操作系统的异步性一样
5)结构性:为了对进程进行控制协调:操作系统必须为每个进程建立一个进程控制块(process control block)PCB---用于描述进程的控制和管理信息
从结构上看,进程分为三部分:程序,数据,进程控制块三部分 组成的活动实体
进程-程序 进程-作业区别:
进程和作业的区别_xiaotai1234的博客-CSDN博客_作业和进程
进程控制块(PCB)
pcb包含了进程的描述信息,控制信息,资源信息--是进程动态特征的集中反应,会随着进程的推进而改变,一般全部或部分常驻于内存中,主要包括一下四类信息:
1)进程标识符信息:分为外标识符(供用户记忆)内标识符(方便系统使用而设置),用于唯一的标识一个进程
2)处理器状态信息:主要由各种寄存器中的内容组成,被中断时,保存在对应的PCB中
包括通用寄存器,状态字psw,PC,栈指针
3)进程调度信息:进程状态,优先级,事件(阻塞原因),其他信息(调度算法有关信息等)
4)进程控制信息
总结:PCB是操作系统感知