操作系统(一)----基本概述
一 操作系统基本概念
1.1 概念
概念
- 是系统最基本最核心的软件,属于系统软件
- 控制和管理整个计算机的硬件和软件资源
- 合理的组织、调度计算机的工作与资源的分配
- 为用户和其它软件提供方便的接口和环境
层次结构
1.2 特征
1.并发
关于并发和并行的解释:
并发
:两个或多个事件在同一时间间隔内
发生,这些事件在宏观上是同时发生的,在微观上是交替发生的, 操作系统的并发性指系统中同时存在着多个运行的程序并行
:两个或多个事件在同一时刻
发生
2.共享
指系统中的资源可供内存中多个并发执行的进程共同调用,资源共享分为互斥共享和同时访问两种
互斥共享
- 计算机中的某个资源在一段时间内只能允许
一个进程
访问,别的进程没有使用权 - 临界资源(独占资源):在一段时间内只允许一个进程访问的资源,计算机中大多数物理设备及某些软件中的栈、变量和表格都属于临界资源,它们被要求互斥共享
- 举个例子:打印机在某一个时刻只能打印一份资料,打印机就属于临界资源
同时共享
- 计算机中的某个资源在在一段时间内可以
同时
允许多个
进程访问 - 同时共享通常要求一个请求分为几个时间片段间隔的完成,即交替进行,“分时共享”
- 这里的
同时
指在宏观上是同时的,在微观上是交替进行访问的,只是cpu处理速度很快,我们感觉不到,在宏观上感觉是在同时进 - 同时共享通常将请求分为几个时间片完成,但效果与连续完成几乎相同
- 举个例子:比如QQ在发送文件A,微信在发送文件B,宏观上两个进程A和B都在访问磁盘,在我们看来是同时进行的,但是在微观上两个进程A和B是交替进行访问磁盘的,只是时间太短,cpu处理速度太快,我们感觉不到。
3.虚拟
虚拟指将一个物理上的实体变为若干逻辑上的对应物.前者是实体,后者是用户感觉到的虚体
- 虚拟技术:用于实现虚拟的技术
- 虚拟处理器(CPU):通过多道程序设计技术,采用让多道程序并发执行的方法,分时来使用一个CPU,实际物理上只有一个CPU,但是用户感觉到有多个CPU
- 虚拟存储器:从逻辑上扩充存储器容量,用户感觉到但实际不存在的存储器
- 虚拟设备:将一台物理设备虚拟为逻辑上的多台设备,使多个用户在同一时间段内访问同一台设备,即同时共享,用户宏观上感觉是同时的,但实际上是微观交替访问同一台设备的
- 操作系统的虚拟技术科归纳为:
- 时分复用技术:如处理器的分时共享
- 空间复用技术:如虚拟存储器
4.异步
在多道程序环境下,允许多个程序并发执行,但由于资源优先,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。
比如进程A请求某一个IO操作后,便会让出CPU的占用权给B,等IO结束后,发现B正在占用CPU,A便开始等待
也即,CPU不会因为IO操作而阻塞,而是可以转而忙别的事情.待IO准备就绪之后,再回来处理
这就是异步.关于异步有很多种
如NIO,BIO,AIO等…可自行查阅
1.3 目标和功能
思维导图:
1.计算机系统资源的管理者
接下去几章将围绕操作系统作为软硬件资源管理者,调度资源和工作展开
1.处理机管理(cpu)
在多道程序环境下,cpu的分配和运行都以进程(或线程)为基本单位,因此对cpu的管理可理解为对进程的管理。进程管理的主要功能包括
- 进程管理
- 进程同步
- 进程通信
- 死锁处理
- 处理机调度
2.存储器管理(内存)
存储器管理为了给多道应用程序提供良好的运行环境,方便用户使用及提高内存的利用率.
包括:
- 内存分配与回收
- 地址映射
- 内存保护与共享
- 内存扩容
3.文件管理(文件系统)
包括:
- 存储空间管理
- 文件目录管理
- 文件读写和保护
4.设备管理(io设备)
设备管理的主要内容是完成用户的I/O请求,方便用户使用各种设备
主要包括:
- 设备分配和处理
- 缓冲分配
- 虚拟设备
2.为用户和其他应用程序提供方便接口
- 为了让用户方便、快捷、可靠的操作计算机硬件并执行自己的程序,操作系统提供了用户接口
- 操作系统提供的接口分为两类:
命令接口和程序接口
-
命令接口
:用户可以直接
使用的,利用这些操作命令来组织和控制作业的执行 -
程序接口
:用户通过程序间接
使用的,编程人员可以使用它们来请求操作系统服务
3.用作扩充机器
- 没有任何软件支持的计算机称为
裸机
- 覆盖了软件的机器称为
扩充机器或虚拟机
裸机构成计算机系统的物质基础,而实际呈现在用户面前 的是经过若干层软件改造的计算机.裸机在最里层,操作系统在其外层,提供各种遍历服务.因此可视为扩充机器
二 操作系统的发展和分类
三 操作系统的运行环境
1.运行机制
CPU通常执行两种不同性质的程序:内核程序和用户应用程序
特权指令:指计算机中不允许用户直接使用的指令,如I/O指令和置中断指令.
在具体的实现上,将cpu分为两个状态:核心态和用户态
也即,cpu在核心态才能执行特权指令,运行内核程序
分层架构
现代操作系统通常是层次式的结构,一些与硬件关联较为紧密的模块,如时钟管理,中断处理,及执行原语等,处于最底层,其次是调用较为频繁的程序,如进程管理,设备管理,存储器管理等.这两部分构成了操作系统的内核.这部分内容运行在核心态.
2.内核定义
大多数的操作系统内核可定义为四个方面的内容:
1.时钟管理
- 向用户提供标准的时间
- 通过时钟中断管理,实现进程的切换机制.如分时操作系统(采用时间片轮换调度机制),实时操作系统(按截止时间控制运行)等
2.中断管理
- 进程调度
- 系统调用
- 设备驱动
- 文件访问
- 可以说,现代操作系统是靠中断驱动的软件
3.原语
- 最接近操作系统底层
- 操作具有原子性,一气呵成
- 运行时间短,操作频繁
- 最直接的方法就是关中断,在原语运行结束后,再开中断
4.系统控制的数据结构及处理
系统中用来登记状态信息的数据结构很多,如进程控制块(PCB),作业控制块,消息队列,缓冲区等.为了实现有效的管理
,系统需要一些基本的操作.常见的有:
- 进程管理
- 存储器管理
- 设备管理
5.总结
从上可看出,核心态指令实际上包括系统调用指令和一些对时钟,中断及原语的指令
3.中断和异常
操作系统内核运行在核心态,用户程序运行在用户态.用户程序不允许直接实现核心态的功能,但又必须使用这些功能.因此需要在核心态建立一些门,使用户态程序能通过这些们进入核心态.而中断和异常就是唯二的两种途径
中断的分类
中断的执行过程
4.系统调用
作用
执行过程
四 操作系统体系结构
1.大内核和微内核
操作系统在核心态为应用程序提供公共的服务,那么操作系统在核心态应该提供什么服务、怎样提供服务?有关这个问题的回答形成了两种主要的体系结构:大内核和微内核。
大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。
但随着体系结构和应用需求的不断发展,需要操作系统提供的服务越来越多,而且接口形式越来越复杂,操作系统的设计规模也急剧增长,操作系统也面临着“软件危机”困境。为此,操作系统设计人员试图按照复杂性、时间常数、抽象级别等因素,将操作系统内核分成基本进程管理、虚存、I/O与设备管理、IPC、文件系统等几个层次,继而定义层次之间的服务结构,提高操作系统内核设计上的模块化。但是由于层次之间的交互关系错综复杂,定义清晰的层次间接口非常困难,复杂的交互关系也使得层次之间的界限极其模糊。
为解决操作系统的内核代码难以维护的问题,于是提出了微内核的体系结构。它将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低了内核的设计复杂性。而那些移出内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信。
微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统的可靠性。
微内核结构的最大问题是性能问题,因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大。因此有的操作系统将那些频繁使用的系统服务又移回内核,从而保证系统性能。但是有相当多的实验数据表明,体系结构不是引起性能下降的主要因素,体系结构带来的性能提升足以弥补切换开销带来的缺陷。为减少切换开销,也有人提出将系统服务作为运行库链接到用户程序的一种解决方案,这样的体系结构称为库操作系统。