操作系统引论
操作系统的目的和作用
- 目标:方便性(不用使用机器语言)、有效性(提高利用率和吞吐量)、可扩展性(模块化、层次化设计)、开放性(统一标准,相互兼容)。
- 作用:
- 用户与计算机硬件系统之间的接口,通过命令方式、系统调用方式和图标窗口的方式来通信
- 计算机系统资源的管理者:管理计算机的四大资源:处理器、存储器、IO设备和文件(其中包括分配共享资源)
- 实现了对计算机资源的抽象:用户无须了解最底层,就能简便的使用上层
- 推动发展的主要动力:提高资源利用率、方便用户、器件迭代、计算机体系结构发展和新的应用被提出
操作系统的发展过程
操作系统是一组能有效的组织和管理计算机硬件和软件资源,合理的对各类作业进行调度,以及方便用户使用的程序的集合。
-
未配置操作系统
-
人工操作方式
使用纸带将程序和数据输入计算机。但是是用户独占全机,且资源利用率不高,一致在等待输入。
-
脱机输入/输出
将数据先全部通过外围机的控制下全部输入到磁带上,在CPU要使用这些内容的时候在调入内存。提高了IO速度且读入不依赖于主机,提高了效率。
-
-
单道批处理系统
将一批作业以脱机方式输入到磁带上,并通过系统中的监督程序对作业一个一个处理,每进入一个作业的处理,就将控制权交给该作业,完成后在由监督程序继续控制。
虽然可以提高CPU和IO速度不匹配的问题但仍然会由于IO的低速导致效率低下,并且对内存使用率也很低,因为80%的都是小作业,但为了能适配大作业所以内存很大。

-
多道批处理系统
在一开始将作业全部存储在外存上,排成一个“后备队列”,然后按调度策略将其中一部分作业一起放到内存上,按顺序运行,在一个程序在挂起IO的时候就可以交给其他程序运行,交替运行。
资源利用率高,吞吐量大,但平均周转时间长,且没有与用户的交互能力(用户只能在一开始提交任务。
-
分时系统
分时系统是为了解决人机交互和共享主机(即同时使用一台主机,共享资源,但对用户来说感觉是独占一样)的问题。
人机交互:分时系统通过使用多路卡周期性地扫描各个终端用于接收和缓存发来的数据,让系统能够及时接收到数据。并且所有用户的作业必须都驻留在内存中(运行)。
共享主机:每个主机每次只能运行一个时间片(一个很短的时长)的时长,然后切换给下一个作业。对用户来说,就好像一直在运行一样。
提供多路性(同时为多个用户服务),独立性(互不干扰),及时性(无延迟),交互性。
-
实时系统
实时系统必须能响应外部事件的请求,并在规定时间内完成对该事件的处理,并控制所有事件运行。用于工业控制系统、信息查询系统、多媒体系统、嵌入式系统等等。
其任务可以分为周期性实时任务(外部设备每过一段时间发送信号要求循环执行一下)和非周期实时任务(要求这个任务在某个时间点之前必须已经开始执行或者某个时间点之前必须完成)。
或者硬实时任务(必须)和软实时任务(不在截止时间内完成也问题不大)。
多路性(按周期采集),独立性,及时性(能够控制任务的截止时间),交互性,可靠性。
-
微机操作系统
-
单用户单任务操作系统:只允许一个用户上级,只允许用户程序作为一个任务运行
MS-DOS
-
单用户多任务操作系统:只允许一个用户上机,但允许用户把程序分成若干任务并发执行
Windows
-
多用户多任务操作系统:允许多个用户通过各自终端使用同一台机器,程序也可进一步划分并行执行
UNIX,LINUX
-
操作系统的基本特性
-
并发
并行:两个和多个事件在同一时刻同时发生
并发:在一段时间内同时发生(即不是只在运行一个程序,而是一会这个一会那个)
可以通过引入进程来实现并发和交换信息
-
共享
由于计算机资源的有限,因此并发执行的程序需要复用一些资源。复用方式有两种:
- 互斥共享方式:在同一时间只允许一个访问(在使用完之前都不允许其他人使用)
- 同时访问方式:在一段时间内同时访问,但从微观上来说是交替访问的
-
虚拟
通过将一个物理实体变为若干个逻辑上的对应物的功能。
-
时分复用
为每一个程序建立至少一个进程,通过分时复用将处理器分为多个逻辑处理器,让每一个进程认为有一个单独的处理器为他服务。
将一台IO设备分为多个逻辑上的IO设备,就能让多个用户同时访问。
-
空分复用
用空余的内存区域存放其他程序,提高利用率。
借助虚拟存储技术,通过分时复用内存的方式让程序在远小于他的内存空间中运行。
但虚拟并不会导致整体的总量变大。
-
-
异步
并不是一次性完成的,而是走走停停地异步完成的,但得出的结果一致。
操作系统的主要功能
- 处理机管理功能(对进程的管理)
- 进程控制:为作业创建进程,撤销已结束进程并控制其状态转换
- 进程同步:访问共享资源时要通过互斥(锁)或者同步(信号量)的方式保持其稳定
- 进程通信:实现进程间的信息交换
- 调度:在就绪的任务中选择一定作业建立进程放进就绪队列;在就绪队列中的进程选择一定进程给予处理器开始运行
- 存储器管理功能
-
内存分配:分配空间,附加额外内存空间,提高利用率,减少内存碎片。
可以使用静态分配方式(不允许增加)和动态分配方式(基础内存在装入时确定,但也允许后续增加)
-
内存保护:保证用户程序不会访问其他程序的空间,也不允许访问操作系统的或者非共享资源的内存,自己的地方通过上下界来检查
-
地址映射:将其逻辑地址和内存中的实际物理地址进行映射
-
内存扩充:使用虚拟存储技术(从虚拟内存中调入需要的内存或者将自己不需要的内存与虚拟内存中需要的内存交换)
-
- 设备管理功能
- 缓冲管理:在IO与CPU中引入缓冲以匹配速度,提高利用率和吞吐量
- 设备分配:根据进程的IO请求给他们分配设备,并在不使用的时候回收
- 设备处理:根据CPU和IO的通信完成任务和中断等功能
- 文件管理功能
- 文件存储空间管理:统一对文件进行管理,分配空间,提高利用率和存取速度
- 目录管理:为文件建立目录项,甚至实现文件共享(软链接)
- 文件的读/写管理和保护:根据读写指针读取和防止各种不安全的访问文件
- 操作系统和用户之间的接口
- 联机用户接口:命令行
- 脱机用户接口:将解释方法和程序本身直接交给系统
- 图形用户接口:图形化界面
- 程序接口:为用户程序访问系统的操作而设置的操作。(程序调用的各种接口)
- 现代系统的新功能:系统安全,网络功能和服务,多媒体
OS结构设计
-
传统操作结构
-
无结构操作系统:将所有的功能全部组织在一起,而不管结构
-
模块化结构OS:将其按功能划分为大大小小的模块,并规定好相互的接口,重点在于每一个部分的独立性(可以用内聚性,即相关性高不高,和耦合性,相互影响的程度来判断独立性)。
可以加速开发,增强可使用性和正确性,可理解性和可维护性。但可能会出现设计的接口与实际不符,也不能建立其层次结构,而是平行的。
-
分层式结构OS
将整体分成,每一步设计都建立在可靠的基础上。可以保证系统的正确性,可扩展和易维护性,但系统效率会降低。
-
-
客户/服务器模式
主要用于分布式系统和网络环境下软件的一种主要工作模式。通信通过网络。
数据的分布处理和存储,集中管理,灵活性和可扩充性,易于改变应用软件。
-
面向对象程序设计
用oop的思想设计系统,通过重用提高产品质量和生产率,有良好的易修改性和易扩展性,易于保证正确性和可靠性。
-
微内核OS结构
将操作系统分为两大部分,微内核和多个服务器。
-
内核是指进行设计的能够实现现代OS最基本核心功能的小型内核,一般仅包含与硬件处理相关的OS
-
基于客户服务器模式,面向对象设计,所有除内核之外的功能都作为一个一个服务器进程,而客户进程通过内核向这些服务器请求

-
微内核的功能:进程管理,低级存储器管理,中断和陷入处理。高级的都放在服务器上实现。
-
可扩展性,可靠性,可移植性,对分布式系统的支持。但效率更低,上下文切换太多了,越抽象,越慢嘛。

-
