批处理操作系统 Batch Processing OS
分时操作系统 Time Sharing OS
实时操作系统 Real Time OS
过程控制系统、信息查询系统、事务处理系统
不能是通用的,必须要专用的实时操作系统完成。往往采用双机系统,成本较高。不能有片刻的耽误。通用系统往往不需要双机系统。
交互能力相对于分时系统而言较弱,交互太多反而会影响其实时性。事先在程序中预制好处理过程,因为人工实时处理是来不及的。
网络操作系统 Network OS
额外提供网络相关功能的操作系统。
各自做各自的事情,松散的工作模式。不要求操作系统相同,只需要有一定协议就能互相通信。
但是分布式操作系统是协同工作,共同完成一个任务,要求各计算机OS同质。
网络:你干你的我干我的,有需要就传送。
网络OS对网络资源的使用要由用户明确指定。用户在网络操作系统中是一定要知道资源在哪个机器上的!
分布式系统要求有更强的健壮性,一台损坏可能会影响整个任务的完成。网络OS不需要。
个人计算机操作系统 Personal Computer OS
也是一步步发展的:单用户单任务、单用户多任务、多用户多任务
现在我们用的都是单用户多任务,个别情况下会涉及到多用户多任务:
操作系统的功能
存储管理
本书特指内存的管理。
外存中的程序需要被放到内存中才能申请CPU资源。
主要包括:对进程分配与回收存储空间、存储保密保护(限定访问范围,其余空间没有资格访问,防止程序相互干扰)、逻辑地址映射到物理地址(程序第一条指令地址设为0,后续指令加偏移量。即使物理地址变了,比如放在别的电脑上运行,其偏移关系也不变)、存储扩充(覆盖、交换和虚拟存储)
处理机管理
以进程为基本单位,对处理机的管理本质上就是对进程的管理。
进程调度
通过调度算法将CPU资源分配给内存中的各个进程。存放在内存中的程序就像获得了生命,可以作为进程被操作系统处理。
进程控制
原语:一种特别的指令或命令,用于进行进程管理工作。它是直接由计算机系统来执行的,因此速度非常快。
- 创建:开始一个新程序。
- 撤销:结束一个正在运行的程序。
- 挂起:临时暂停一个程序,可以之后再继续。
- 封锁:暂时锁定一个程序,让它不能运行,直到满足某些条件再解锁。
设备管理
打印机、扫描仪都是字符型设备,工作非常慢。下面对某些概念进行类比:
-
单缓冲:
- 想象有一个桶,你可以往里面放水。
- 当桶满了,你需要停下来,等待将桶里的水倒出,然后再继续放水。
- 这样可能效率不高,因为每次桶满了都要停下来。
-
双缓冲:
- 现在你有两个桶。
- 当一个桶在装水时,另一个桶可以用来倒水。
- 这样你就不用每次都停下来,提高了效率。
-
缓冲池:
- 这就好比有很多个桶,根据需要可以使用多个桶来交替完成任务。
- 更进一步提高了效率,因为有更多的资源可供使用。
-
虚拟设备:
- 想象你在网上购物,但送货的速度很慢。
- 虚拟设备就好比一个中间仓库,你的商品先送到这里,然后你可以继续购物,不用等。
- 然后,中间仓库会在适当的时间慢慢将商品送到你家。
-
设备独立性:
- 比如你在一个餐厅点了一个汉堡,但你并不需要知道这个汉堡是怎么做的、用了什么食材等细节。
- 同理,当你在电脑上运行一个程序时,你不需要知道这个程序具体用了哪些物理设备。你只需要知道你要的结果,而不需要考虑背后的细节。
文件管理
文件管理讨论对外存的管理。
用户接口
不同的用户会有不同的接口。
并发concurrency 并行parallel
裸机、系统内核、存储管理、IO处理、文件存储、资源分配与调度。操作系统逻辑结构分层进行。
先建立系统内核,再用到什么就建立什么,防止资源浪费。
操作系统的概念、功能重点掌握!
14/16周周五下午实验
第二章 操作系统用户界面
2.1作业的基本概念
编辑 接收源程序、编译检查错误、链接成exe、运行。三个作业步。
从写的第一个字开始到整个程序运行结束,就是一个作业。一个作业可以分成多个作业步。和计算机打交道的过程。
作业=程序+数据+作业说明书
作业的建立过程
作业的输入
作业输入到外存
作业控制块(Job Control Block)
JCB是管理作业的数据结构,作业控制块和作业是一一对应的关系。管理对象的时候先查看对象的数据结构,方便操作系统了解作业的状态信息,便于资源分配或其他处理。
-
定义:作业控制块是一个数据结构,通常由操作系统用于存储有关正在执行或待执行作业的信息。
-
内容:它通常包括作业ID、优先级、状态(等待、运行、完成等)、所需的资源、内存需求等。
-
用途:用于操作系统的作业调度和资源分配。
-
动态性:JCB的内容会在作业的生命周期中发生改变。
作业说明书(Job Description)
-
定义:这通常是一个文档或一个软件配置文件,用于描述作业应该如何执行。
-
内容:它可能包括输入文件的位置、输出应该去哪里、使用哪个程序或脚本等。
-
用途:通常用于批处理环境或作业调度软件。
-
静态性:一旦创建,作业说明书通常不会改变,除非作业本身发生改变。
简而言之,作业控制块更侧重于操作系统级别的作业管理和调度,而作业说明书则更多地用于描述作业应该如何被执行。
作业的处理过程
作业提交:还没有录入,正在写呢
收容:以文件形式存储到外存中
执行:分配作业到内存当中,作为进程。(作业是更大的概念,就是一个执行态)进程有就绪、阻塞、运行态。
SPOOLING
通过通道/DMA器件对作业进行录入
联机方式是一种更常见的方式
2.2用户接口
操作系统提供给用户与计算机打交道的外部机制。用户提出请求,系统做出呼应。操作系统针对不同类型的用户(普通用户GUI,管理员用户CLI,程序员用户 系统调用。前二者也称为操作接口,后者称为程序接口),提供不同类型的用户接口。
系统调用
便于程序开发的功能:系统调用。操作系统部分功能开放给程序员,程序员调用这样的功能。每一个功能在系统调用中有功能号(id),这种指令称之为陷阱指令或访管指令。
马上产生中断,保存现场、进程上下文,进一步进入。从用户到系统的指令运行环境的转换。
处理机的两种状态:用户态和系统态。为什么要分为这两个状态呢?
操作系统可以通过这两种处理机的状态,知道哪些进程在使用系统的资源,并与其他的管理策略关联起来。用处理机状态字PSW的一个bit标志当前是用户执行模式还是系统执行模式。
系统态权限最高,可以访问整个内存空间。用户态就开始存储保护,不能让其过度访问系统数据。只需要使用一个bit,就能更好地管理保护操作系统存储。这是最大的优点,开销小,功能强。
下面是系统调用的过程:
过程调用与系统调用
1.系统调用是动态调用,CALL调用是静态调用。
在系统调用中,用户程序和系统程序不能融合在一起,并且方便随着操作系统进行升级。程序员不需要关系实际上的地址、内容改变,对程序员没有任何影响。
2.执行状态的不同:过程调用始终在用户态执行。
3.系统调用也可以作为进程调度的一个时机点。返回的时候可能直接返回,也可能先让CPU处理其他任务,再去返回。这就影响了进程调度。
4.系统调用一般不会多层嵌套或递归。防止操作系统混乱。
重点总结
作业就是用户与计算机打交道的完整的一个过程。
为什么要提出这样的概念?
-
资源管理和调度:任务被封装为作业,以便系统能按照优先级或提交的顺序进行调度。方便系统任务调度
-
隔离和抽象:每个作业可以被视为一个独立的单位,拥有其自己的输入、执行指令和输出。这为操作系统提供了一个清晰的界定,使得它可以处理作业而不是单独的指令或程序。创建新的独立单元
-
性能和效率:通过将一系列指令打包为作业并在适当的时间执行,系统可以更有效地使用其资源。方便提高性能效率
怎么使用这样的概念?
-
提交作业:用户可以提交一个作业到操作系统,这通常包括输入数据、程序或脚本以及其他执行指令。
-
队列和调度:提交的作业会被放入一个队列中等待执行。操作系统的作业调度程序(job scheduler)会从队列中选择作业进行执行。
-
资源分配:作业调度程序根据每个作业的需求(如CPU时间、内存等)分配资源。
-
作业执行:一旦获得所需资源,作业开始执行。
-
作业完成:执行完成后,作业的输出会返回给用户,同时释放其使用的资源。
作业=程序、数据、作业说明书。进程也是类似的。
作业控制块JCB
结合图片进行记忆
超星平台:重要PPT