目录
操作系统是用来做什么的?
- 控制角度 => 操作系统对于用户来说是一个控制软件:管理应用程序、为应用程序提供服务(IO服务等)、杀死应用程序。
- 内部管理 => 资源分配器:资源管理分配(内存,CPU协调应用程序的抢占),管理外设
- 分层角度 => 有点像计网里面的几层模型,操作系统也算是一层,在应用程序的下面,在硬件层的上面,为应用程序提供服务
基本特征
并发
并发是指一段时间内计算机系统中同时运行多个程序(OS管理和调度),而并行则指同一时刻(一个时间点上)能运行多个程序。
如果说并行的话,一个操作系统是有多个CPU,同时在运行,如果计算机系统只有一个CPU是无法完成并行工作的。
并行需要硬件支持,如多流水线、多核处理器或者分布式计算系统。
操作系统通过引入进程和线程,使得程序能够并发运行。
共享
共享是指系统中的资源可以被多个并发进程共同使用。
有两种共享方式:互斥共享和同时访问。
互斥共享的资源称为临界资源,例如打印机等,在同一时刻只允许一个进程访问。(可能一个内存单元是互斥共享的,同一时刻只有一个程序能够访问,但是如果有A和B两块隔离开的内存,那么两个程序可以同时的访问这两块内存。)
虚拟
虚拟是什么意思呢,其实就是一个虚拟化,操作系统是面对硬件的,那么操作系统对于硬件进行一个虚拟化,听得可能有点懵,见下图:
这就是一个虚拟化的过程。
利用多道程序设计技术,让每个用户都觉得有个计算机在为其服务。
虚拟技术把一个物理实体转换为多个逻辑实体。
异步
异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。
但程序运行的环境相同的话,OS需要保证运行的结果也要相同,这是需要保证的。
操作系统的不同阶段
- 手工操作:早期计算机使用纸带传输数据程序,操作系统只起到加载作用。程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。这个时期被称为手工操作时期。
- 批处理系统:批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)。让输出、处理、输出成为一条流水线,流水线化。
- 多道程序系统:指允许多个程序同时进入内存并运行(随着发展内存容量越来越大)。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
- 分时系统:可能之前的系统交互性不够好,那么就引出分时系统,分时技术:把处理机的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。由于CPU速度不断提高和采用分时技术,一台计算机可同时连接多个用户终端,而每个用户可在自己的终端上联机使用计算机,好象自己独占机器一样。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。这种能使用户与系统进行人机对话的工作方式,明显地有别于批处理系统
- 实时系统:虽然多道批处理系统和分时系统能获得较令人满意的资源利用率和系统响应时间,但却不能满足实时控制与实时信息处理两个应用领域的需求。于是就产生了实时系统,即系统能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理。当用于预定飞机票、查询有关航班、航线、票价等事宜时,或当用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。
操作系统的结构
简单结构以MS-DOS为例
- 微软第一个操作系统MS-DOS(1981~1994)(不分模块,没有分层设计,没有很好的层次化组织OS功能,单体内核,容易被攻击,较难扩展)
- 以极小的内存空间,提供大部分OS功能
层次化结构,以Unix为例
- Unix操作系统由Kenneth Thompson和Dennis Ritchie在贝尔实验室设计(1972)
- 通过模块化可以更加有效的实现复杂的系统软件设计
- 模块之间通过函数调用来访问
- 使用语言实现,有很好的移植性对比于汇编语言
微内核架构设计
- 首先,目前在产业界较少看到有微内核架构的设计
- 上面的结构也称大内核,大内核是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块共享信息,因此有很高的性能。
- 微内核的设计,尽可能把内核功能移到用户空间,内核里面只放最基本的功能
- 这是一种松耦合的架构,很灵活
- 但是在性能有代价,比如文件系统和内存管理系统要进行交互,文件系统先要把数据丢到内核,内核再丢给内存管理系统,比起大内核性能要降低
基本功能
进程管理
进程控制、进程同步、进程通信、死锁处理、处理机调度等。
内存管理
内存分配、地址映射、内存保护与共享、虚拟内存等。
文件管理
文件存储空间的管理、目录管理、文件读写管理和保护等。
设备管理
完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率。
主要包括缓冲管理、设备分配、设备处理、虛拟设备等。
以上是对操作系统基础(基本特征 | 结构 | 基本功能概述)的粗浅认识