操作系统引论
操作系统的概念:
-
是系统最基本最核心的软件,属于系统软件
-
控制和管理整个计算机的硬件和软件资源
-
合理的组织、调度计算机的工作与资源分配
-
为用户和其他软件提供方便的接口和环境
1.1、操作系统的目标和作用
目标:
- 方便性
- 有效性
- 可扩充性
- 开放性
作用:
- 用户与硬件系统的接口
- 管理系统软硬件资源
- 实现对计算机资源的抽象
1.2、操作系统发展的过程
-
人工操作方式:用户独占全机;CPU等待人工操作
-
脱机I/O方式:利用外围机
-
单道批处理系统:内存始终只保持一道作业
-
多道批处理系统:为了提高资源利用率和系统吞吐量;利用多道程序设计技术,产生“后备队列”,由算法选取一个或多个作业调入内存
-
分时系统:为了满足用户对人机交互的需求;人机交互和共享主机;需要处理及时接收和及时处理问题;特征:多路性、独立性、及时性、实时性。
-
实时系统:如:工业控制系统、信息查询系统、嵌入式系统等;有硬实时任务和软实时任务;特征:多路性、独立性、及时性、交互性、可靠性。
-
微机操作系统:单用户单任务OS、单用户多任务OS、多用户多任务OS
-
嵌入式操作系统:嵌入式OS:系统内核小、系统精简、实时性高、具有可配置性。
-
网络操作系统:在计算机网络环境下对网络资源进行管理和控制,实现资源共享和数据通信。
-
分布式操作系统(基于软件实现的一种多处理机系统):系统处理和控制功能费分布在各个处理机上。
1.3、操作系统的基本特性
- 并发
- 并行:两个或多个事件在同一时刻发生
- 并发:两个或多个事件在同一时间间隔内发生
- 进程:指在系统中能独立运行并能作为资源分配对象的基本单位;由一组机器指令、数据和堆栈等组成,是一个能独立运行的活动实体。
- 共享
- 互斥共享方式
- 同时共享方式
- 虚拟(提高信道的利用率)
- 空分复用:提高存储的利用率
- 时分复用:提高时间的利用率
- 虚拟处理机技术
- 虚拟设备技术
- 异步
- 在多道程序环境下,系统允许多个进程并发执行。由于资源因素及环境特点,如I/O操作、时间片轮转等,使进程的执行不可能“一气呵成”,而是以“停停走走”的方式运行。
1.4、操作系统的运行环境
- 硬件支持
- OS内核:常驻内存的模块;常见OS内核的功能:
- 支撑功能
- 中断处理(内核最基本的功能)
- 时钟管理:利用时间片
- 原语操作(由若干指令组成,用于完成一定功能的一个过程):也就是原子操(要么全不做,要做就全做)
- 资源管理功能
- 进程管理
- 存储器管理
- 设备管理
- 支撑功能
- 处理机的双重工作模式(为了保护OS)
- 用户态(user mode)1表示;运行在用户态的指令:非特权指令;应用程序使用的都是非特权指令。
- 内核态(kernel mode)0表示;运行在内核态的指令:特权指令;切换到用户态的指令也是特权指令。
- 中断与异常(现代OS是中断驱动的)
- 陷阱trap(或异常):由软件引起的中断
- 中断interrupt:硬件通过系统总线发送信号到cpu触发
1.5、操作系统的主要功能
-
处理机管理
- 进程控制
- 进程同步(对多个进程的运行进行协调)
- 进程互斥方式:对临界资源的访问权限互斥
- 进程同步方式:相互协作完成任务
- 进程通信
- 调度(传统OS分为:作业和进程调度)
-
存储器管理
-
内存分配和回收
- 实现内存分配有两种:静态和动态分配
-
内存保护
- 为确保每道程序都只在自己的内存空间中运行,就必须设置内存保护机制(一种简单的是:设置两个界限寄存器)
-
地址映射(能将逻辑地址变换为对应的物理地址)
-
内存扩充(采用虚拟存储技术,逻辑上扩大内存容量)
- 要实现这个系统必须设置内存扩充机制,用以实现:
- 请求调入功能
- 置换功能
- 要实现这个系统必须设置内存扩充机制,用以实现:
-
-
设备管理
- 缓冲管理(CPU与I/O设备之间引进缓存,有效缓和他们之间速度不匹配问题)
- 单缓冲区机制
- 双缓冲区机制
- 公用缓冲池机制
- 设备分配
- 设备处理
- 缓冲管理(CPU与I/O设备之间引进缓存,有效缓和他们之间速度不匹配问题)
-
文件管理
- 文件存储空间管理
- 目录管理
- 文件读写管理和保护(利用文件指针进行文件读写操作)
-
接口管理
- 为了方便用户对OS的使用,划分为:
- 用户接口
- CLI(联机用户接口)又称:命令行方式;
- 脱机用户接口:即批命令方式,使用户使用JCL(作业控制语言),进行操控。
- GUI(图形用户接口)
- 程序接口(为用户访问系统资源而设置,是用户取得OS服务的唯一途径)
- 用户接口
- 为了方便用户对OS的使用,划分为:
1.6、系统调用
多个系统调用接口组成了程序接口;程序接口是OS专为用户程序设置的;被提供给程序员编程时使用,其也是用户程序获取OS服务的唯一途径。