文章目录
简介
说到操作系统,相信大部分人都不陌生,Windows,Linux,都是操作系统。
在信息化时代,软件被称为计算机系统的灵魂,试想一下你的计算机没有软件,那么这个计算机只是一个空壳,没有任何意义。
操作系统就是软件的核心部分。
计算机系统可以从上而下粗分四个部分:
硬件,操作系统,应用程序,用户
操作系统管理各种计算机硬件,为应用程序提供基础,并充当计算机硬件与用户之间的中介。起到了承上启下的作用。
通过操作系统
我们可以将CPU转换成进程,磁盘转换为文件,内存转换为地址空间进行处理。
操作系统定义
操作系统的定义为:
控制和管理整个计算机系统的硬件与软件资源,
合理地组织,调度计算的工作与资源的分配
进而为用户和其他软件提供方便接口与环境的程序集合
- 操作系统是一个控制程序
o 一个系统软件
o 控制程序执行以防止错误和计算机的不当使用
o 执行用户程序和给用户程序提供各种服务
o 使计算机系统方便使用 - 操作系统是一个资源分配器
o 应用程序与硬件之间的中间层
o 管理各种计算机资源(包括硬件外设等)
o 有效解决冲突请求并确保资源的公平使用
o 提供高效的手段使用计算机硬件
Shell&Kernel概念
GUI图形化标识:是属于Shell外壳部分。
字符命令也是shell部分,这两个接口部分是操作系统对外提供的一种可见的服务。
Linux, Window, Android 的界面属于Shell,而不是内核(Kernel),OS更注重内部kernel部分,我们研究操作系统一般是站在内核的角度看待问题。
特征
并发
并发是指计算机系统中同时存在多个运行的程序。
并发在宏观上是同时运行,微观上是交替运行
并发:一段时间内有多个程序可以运行
并行:一个时刻内有多个程序可以运行
共享
资源共享即是共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
共享可分为两种
- 互斥共享方式
系统中某些资源如打印机,磁带机,虽然可提供给多个进程使用,但是为了使打印或记录结果不致造成混淆,规定在一段时间内只允许一个进程访问资源。
在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。
计算机系统中的大多数物理设备,以及某些软件中所用的栈,变量,表格,都属于临界资源,它们都要求被互斥地共享
- 同时访问方式
系统中还有另一类资源,允许在一段时间内由多个进程 “同时”(并发)对它们进行访问。
并发和共享是操作系统中最基本的特征,这两者之间又是互为存在条件的:
- 资源共享以程序的并发为条件,若系统不允许程序并发执行,也就不存在资源共享
- 若系统不能对资源共享实施有效的管理,也必将影响到程序的并发执行,甚至根本无法并发执行。
虚拟
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物
物理实体是实的,而逻辑上的对应物是虚的,只是用户感觉上的事物。
用于实现虚拟的技术,称为虚拟技术
操作系统中利用了多种虚拟技术,分别用来实现 虚拟处理器,虚拟内存,虚拟外部设备等。
虚拟处理器技术中,是通过多道程序设计技术,让多道程序并发执行的方法,来分时使用一个处理器
如上图,操作系统将CPU虚拟为进程,磁盘虚拟为文件,内存虚拟为地址空间。
通过虚拟技术,可以让每一个终端用户都感觉有一台电脑来为他单独服务。
异步
多道程序环境下,允许多个程序并发执行,但由于**资源有限**,进程的执行并不是一路到底。
而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
即进程是以人们不可预知的速度向前推进,这就是进程的异步性。
但是只要在OS中配置有完善的进程同步机制,且运行环境相同,则作业即便经过多次运行,也都会获得完全相同的结果。
操作系统主要功能
有一个很形象的比喻,用户是雇主,操作系统是工人,计算机是机器
工人操作机器,就是操作系统对计算机资源的管理
同时工人会收到雇主的命令,这就是接口
管理计算机系统资源
处理机管理功能
传统的多道程序系统中,处理机的分配和运行都是以进程为基本单位的,
因而对处理机的管理可以归结为对进程的管理,处理机管理的主要功能有:
①创建和撤销进程
②对进程的运行进行协调
③实现进程之间的信息转换
④按照一定算法把处理机分配给进程
- 进程控制
- 进程同步
- 进程通信
- 调度
- 作业调度
- 进程调度
存储器管理功能
存储器管理的主要任务,是为多道程序的运行提供提供良好的环境,提高存储器的利用率,方便用户使用,并能从逻辑上扩充内存。
为此存储器管理应具有
-
内存分配
内存分配的主要任务有
(1) 为每道程序分配内存空间
(2) 提高存储器的利用率,尽量减少不可用的内存空间(碎片)
(3)允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增加的需要OS在实现内存分配时,可采取静态和动态两种方式
① 静态分配方式:
每个作业的内存空间在作业装入时确定,作业装入后不允许再申请新的内存空间,也不允许作业再内存中"移动"
②动态分配方式:
每个作业的所要求的基本内存空间在在作业装入时确定,但允许作业在运行时继续申请新的附加内存空间,也允许作业在内存中"移动" -
内存保护
内存保护的任务是:
(1) 确保每道用户程序都仅在自己的内存空间内运行,彼此不干扰
(2) 绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。 -
地址映射
能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能需要在硬件的支持下完成。 -
内存扩充
内存扩充并非从物理上去扩大内存的容量,而是借助虚拟存储技术,从逻辑上扩充内存容量,使用户感觉到的内存容量比世纪内存容量大的多,这样既满足用户需求,又改善了系统的性能。
为了能在逻辑上扩充内存,系统必须设置内存扩充机制,用于实现下列功能:
(1) 请求调入功能,程序运行过程中,若仍需要内存,可向OS发出请求调入内存。
系统允许在仅装入部分用户程序和数据的情况下,便能启动该程序运行,在程序运行过程中,若发现要继续运行时所需要的程序和数据尚未装入内存,可向OS发出请求,OS从磁盘中将所需部分调入内存,以便继续运行
(2)置换功能,程序需要内存但是内存不足时,系统将内存中暂时用不到的程序和数据调至硬盘上,腾出内存空间将所需调入的部分装入内存。
设备管理功能
设备管理的主要任务如下:
(1) 完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定的I/O 操作
(2) 提高CPU和I/O 设备的利用率,提高I/O 速度,方便用户使用I/O设备。
为完成上述任务,设备管理应具有如下功能
- 缓冲管理
- 设备分配
- 设备处理
文件管理功能
文件管理的主要任务:
对用户和系统文件进行管理以方便用户使用,并保证文件的安全性。
因此,文件管理应具有如下功能:
- 文件存储空间的管理
- 目录管理
- 文件的读/写管理与保护
接口
为方便用户使用计算机,操作系统提供了用户接口,操作系统提供的接口主要分为两类
- 命令接口 用户利用这些操作命令来组织和控制作业的执行
- 程序接口 编程人员可以使用它们来请求操作系统服务
用户可以通过命令接口和系统调用来使用计算机
操作系统用作扩充机器
没有任何软件支持的计算机称为裸机,裸机仅构成计算机系统的物质基础,而实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。
裸机在最里层,它的外面是操作系统,由操作系统提供的资源管理功能和方便用户的各种服务功能,将裸机改造成功能更强,使用更方便的机器,通常把覆盖了软件的机器称为扩充机器,又称为虚拟机
操作系统的发展与历史
手工操作阶段
手工操作阶段还没有出现操作系统,计算机上算题的所有工作都需要人工干预,人力有时尽,只依靠人工肯定不行。
手工操作阶段有两个突出缺点:
① 用户独占全机
②CPU等待手工操作。
唯一的解决办法就是用告诉的机器代替相对较慢的手工操作来对作业进行控制。
批处理阶段
为解决人机矛盾及CPU和I/O设置之间速度不匹配的矛盾,出现了批处理系统。
单道批处理系统
系统对作业的处理是成批进行的,但内存中使用保持一道作业。
该系统是在解决人机矛盾及CPU和I/O设置之间速度不匹配的矛盾中形成的。
主要特征:
- 自动行
顺利的情况下,磁带上的一批作业能自动地逐个依次运行,而无需人工干预。 - 顺序性
磁带上的各道作业顺序地进入内存,先调入内存的作业先完成 - 单道行
内存中仅有一道程序运行,当该程序完成或发生异常时,才换入其后继程序进入内存。
但是因为每次主机内存中仅放入以到作业,当这个作业在运行期间发出输入/输出请求时,高速的CPU就处于等待低速的I/O完成状态。
为进一步提高资源的利用率和系统的吞吐量,引入了多道程序技术
多道批处理系统
多道程序设计技术允许多个程序同时进入内存并运行。
即把多个程序放入内存,并允许它们在CPU中交替运行,它们共享系统中的各种硬/软件资源。
当一道程序因I/O请求而暂停运行时,CPU就转去运行另一道程序。
多道程序设计的特点有:
(1)多道:计算机内存中同时放入多道相互独立的程序
(2) 宏观上并行:同时进入系统的多道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕
(3)微观上串行:内存中的多道程序轮流占有CPU,交替执行
多道程序设计技术的实现需要解决下列问题:
(1):如何分配处理器?
(2):多道程序的内存分配问题
(3):I/O设备如何分配
(4):如何组织和存放大量的程序和数据,以便于用户使用和保证其安全性与一致性。
在批处理系统中采用多道程序设计技术,就形成了多道批处理操作系统。
多道批处理系统把用户提交的作业成批送入计算机内存,然后由作业调度程序自动地选择作业运行
优点:
① 资源利用率高
② 系统吞吐量大
缺点:
①不提供人机交互能力,用户既不能了解自己程序的运行情况,也不能控制计算机
② 平均周转时间长,由于作业要排队依次进行处理,因而作业的周转时间较长。
分时操作系统
在操作系统中采用分时技术就形成了分时系统。
分时技术就是把处理器的运行时间分成很短的时间片,按时间片轮流把处理器分配给个联机作业使用,若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时停止运行,把处理器让给其他作业使用,等待下一轮再继续运行。由于计算机速度很快,作业运行轮转得很快,给每个用户得感觉好像是自己独占一台计算机。
分时操作系统是多个用户通过终端同时共享一台主机,这些终端连接在主机上,用户可以同时与主机进行交互操作而互不干扰。
所以实现分时系统最关键的问题是如何使用户能与自己的作业进行交互,即当用户在自己的终端上键入命令时 ,系统能够及时接收并及时处理该命令,在将结果返回给用户。
分时系统也是支持多道程序设计的系统,但不同于多道批处理系统。
- 多道批处理系统是实现作业自动控制而无需人工干预。
- 分时系统是实现人机交互的系统。
分时系统的主要特征:
(1) 同时性:
也称多路性,指允许多个终端用户同时使用一台计算机,
即一台计算机与多个终端用户相连,终端上的这些用户可以同时或基本同时使用计算机
(2) 交互性:
用户能够通过终端采用人机对话的方式直接控制程序运行,与同程序进行交互
(3) 独立性:
系统中多个用户可以彼此独立地进行操作,互不干扰
单个用户感觉不到别人也在使用这台计算机,好像只有自己在单独使用这台计算机
(4) 及时性:
用户请求能在很短地时间内获得相应
分时系统采用时间片轮转方式使一台计算机同时为多个终端进行服务。
但是分时操作系统不能优先处理紧急任务
实时操作系统
实时系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行
实时系统最主要的特征:将时间作为关键参数,它必须对接受到的某些信号做出“及时”或“实时”地反应。
根据时间限制可以发呢为两种情况:
- 硬实时系统
如果某个动作必须绝对地在规定时间范围内发生,称为硬实时系统。 - 软实时系统
如果能接受偶尔违反时间规定,且不会引起人恶化永久性地损害,称为软实时系统。
实时系统的主要特点:
- 及时性
- 可靠性
操作系统的运行环境
计算机系统中,通常CPU执行两种不同性质的程序
- 操作系统内核程序
- 用户自编程序或系统外层的应用程序
为什么会这样呢?
操作系统内核程序就相当于VIP,对于VIP用户怎么会没有特权呢?
对于操作系统而言,操作系统内核程序是用户自编程序或系统外层的应用程序,前者管理后者,自然要拥有一些特权,执行一些特权指令。
特权指令:计算机中不允许用户直接使用的指令,如
①I/O指令
②置中断指令
③存取用于内存保护的寄存器
④ 送程序状态字到程序状态字寄存器
⑤······
操作系统中,划分了用户态(目态) 和 核心态(管态),以严格区分两类程序,
内核
现代操作系统的各项功能一般分别被设置在不同的层次上,
一些与硬件关联比较紧密的模块,诸如时钟管理,中断处理,设备驱动等处于最底层。
其次是运行频率较高的程序,如进程管理,存储器管理,设备管理等。
这两部分构成了操作系统的内核,这部分内容的指令操作工作在核心态。
内核是计算机上配置的底层软件,是计算机功能的延伸,不同系统对内核的定义稍有区别,大多数操作系统内核包括四个方面内容
时钟管理
在计算机的各种部件中,时钟是最关键的设备。
时钟的功能:
- 计时
- 通过时钟中断的管理,可以实现进程的切换。
比如在分时系统中,采用时间片轮转调度的实现
实时系统中,按截止时间控制运行的实现
批处理系统中,通过时钟管理来衡量一个作业的运行程度。
中断机制
中断机制中,只有一小部分功能属于内核,负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。
这样可以减少中断的处理时间,提高系统的并行处理能力。
原语
通常把具有这些特点的程序称为原语
① 处于操作系统的最底层,是最接近硬件的部分
② 程序运行具有原子性,操作只能一气呵成(要么执行完,要么不执行)
③ 这些程序运行时间短,调用频繁
定义原语的直接方法是关闭中断,让它的所有动作不可分割地进行完再打开中断。
系统中的设备驱动,CPU切换,进程通信等功能中的部分操作都可以定义为原语,使他们成为内核的组成部分。
系统控制的数据结构及处理
系统中用来登记状态信息的数据结构有很多,
比如作业控制块,
进程控制块,
设备控制块,
各类链表,
消息队列,
缓冲区,
空闲区登记表,
内存分配表等。
为了实现有效的管理,系统需要一些基本操作,常见操作有以下三种:
1) 进程管理:进程状态管理,进程调度和分派,创建与撤销进程控制块等。
2) 存储器管理:存储器的空间分配和回收,内存信息保护程序,代码对换程序等。
3) 设备管理:缓冲区管理,设备分配和回收等
从上述内容可以知道:核心态指令实际上包括系统调用类指令和一些针对始终,中断和原语的操作指令
中断和异常
中断,也称外中断,指来自CPU执行指令以外的事件的发生,
如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。
时钟中断,表示一个固定的时间片已到,让处理机处理计时,启动定时运行的任务等。
这一类中断通常是与当前程序无关的事件,即他们与当前处理机运行的程序无关。
异常,也称内中断,例外,或陷入,指来自CPU执行指令内部的事件。
如程序的非法操作码,地址越界,算数溢出,虚存系统的缺页以及专门的陷入指令等引起的事件。
对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理
系统调用
系统调用就是用户在程序中调用操作系统所提供的一些子功能,系统调用可以被看做特殊的公共子程序。
系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如I/O传输,存储分配,管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
系统调用按功能大致可以分为如下几类:
- 设备管理。
- 文件管理
- 进程控制
- 进程通信
- 内存管理
系统调用运行在系统的核心态。
容易混淆的概念
并行性与并发性区别与联系
并发性和并行性是既相似又有区别的两个概念。
- 并行性是指两个或多个事件在同一时刻发生
- 并发性是指两个或多个事件在同一时间间隔内发生.
多道程序环境下,并发性是指一段时间内,宏观上有多个程序在同时运行。但在单处理器系统中,每时刻却仅能有一道程序执行,故微观上这些程序只能是分时地交替运行。
若计算机中有多个处理器,这些并发执行的程序便被分配到多个处理器中,实现并行执行,即利用每个处理器来处理一个可并发执行的程序。
特权指令与非特权指令
特权指令是指有特殊权限的指令,如:
①清内存
②置时钟
③分配系统资源
④ 修改虚存的段表或者页表
⑤修改用户的访问权限
⑥······
特权指令必须在核心态执行,从用户态转换为核心态的唯一途径是中断或者异常
访管指令与访管中断
访管指令是在用户态下执行的指令,在用户程序中,因要求操作系统提供服务而有意思地实用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为核心态,称为访管中断。
访管中断由访管指令产生,程序员实用访管指令向操作系统请求服务。