1.1 框架
- 进程管理(cpu)
- 存储管理(内存)
- I/O 管理(设备)
- 文件管理(文件,外存)
1.2 操作系统的概念
1.2.1 四种基本观点
- User/Computer Interface:计算机系统接口,为用户使用计算机提供了方便的环境
- Virtual Machine:硬件平台上的虚拟机
- Resource Manager:资源管理器,负责分配、回收及控制系统中的各种软硬件资源
- Job Organizer:计算机系统工作流程的组织者,负责协调在系统中运行的各个应用软件的运行次序
1.3 操作系统的功能性需求
按软件工程的观点,来设计操作系统:
- 需求分析
- 系统设计
- 编码实现
- 产品测试
需求分析分为两大类
功能性需求
- 软件系统所能提供的服务
非功能性需求
- 提供软件时需要满足什么限制条件
- 软件系统具有某些变化的能力
1.3.1 计算机用户需要的用户命令
由 OS 实现的所有用户命令所构成的集合常被人称为 OS 的 Interface(用户接口);有时也称为命令接口;
普通用户使用
用户命令:指计算机用户要求计算机系统为其工作的指示
命令的形式:
- 字符形式
- 菜单形式
- 图形形式
...
命令的使用方式
- 脱机方式 off-line、不受系统控制
- 联机方式 on-line
1.3.2 应用软件需要的System Call(系统调用)
由 OS 实现的所有系统调用所构成的集合被人们程序接口或应用编程接口(Application Programming Interface,API)
软件开发者使用
System Call:指由 OS 实现的应用软件在运行过程中可以引用的 System Service
1.4 操作系统的非功能性需求
1.4.1 Performance or Efficiency(性能、效率)
maximize throughput, minimize response time, and in the case of time-sharing, accommodate as many users as possible.
- 提高 Throughput(吞吐量、单位时间系统完成的任务)
- 降低响应时间
- 分时情况下满足更多用户
1.4.2 Fairness(公平性)
有时候在实时操作系统中,可能就不太关心公平性,比如自动驾驶要及时响应外部事件
1.4.3 Reliability(可靠性)
1.4.4 Security(安全性)
1.4.5 Scalability(可伸缩性)
可配置,比如 windows 的家庭版和企业版
1.4.6 Extensibility(可扩展性)
适应新的外部设备的增长,比如可以接入某个硬件模块
1.4.7 Portability(可移植性)
1.4....
1.5 OS 对硬件平台的依赖
- Timer 计时器
- I/O Interrupts 中断机制
- DMA(Direct Memory Access 直接存储存取) 存储数据,打包后提交给 CPU 执行中断,减少 CPU 中断的频率
- Privileged Instructions 特权指令
- Memory Protection Mechanism 存储保护的机制,检查有没有越界,地址转换等
- ..
1.6 重要的基本概念
1.6.1 Job(作业)
比较早期,或者大型机上才有
- 计算机用户在一次上机过程中要求计算机系统为其所做工作的集合;作业中每项相对独立的工作称为作业步
- 通常,人们用一组命令来描述作业;其中,每个命令定义一个作业步
1.6.2 Process & Thread
Process(进程)
系统分配资源的基本对象;在现代 OS 中,进程仅仅是系统中拥有资源的最小实体
进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,系统会给每个进程分配独立的内存地址空间,并且每个进程的地址不会相互干扰。如果要完成CPU时间片的切换,就要保证之前的进程在执行的时候执行到某个位置,下次切换回来的时候仍然可以从这个位置开始执行。所以进程就是资源分配的最小单元。
在进程出现之前,指令是一次性加载到内存中,如果要进行指令切换的话,就要对指令进行隔离,而在批处理操作系统中是无法对指令进行隔离的。
有了进程以后,可以让操作系统从宏观上实现并发。并发是通过CPU时间片的不断切换执行的。在任意一个时刻,对于单核CPU来说,只会有一个任务去执行,只是通过切换时间片的方式完成了并行执行。
Thread(线程)
程序的一次相对独立的运行过程;在现代 OS 中,线程是系统调度的最小单位
线程是程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线程组成,每个线程会负责一个独立的子任务,在配合多核处理器,去实现多个子任务并行处理的结果。线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多核CPU环境下就允许多个线程同时运行。进程在一个时间内只能干一件事情,如果想同时干多件事情的话, 就要把进程中的多个子任务划分到多个线程,通过线程的切换执行去实现任务的实时性。所以,线程是真正意义上实现了并行执行
1.6.3 Virtual Memory(虚拟存储) & File(文件)
Virtual Memory
进程的逻辑地址空间;现代 OS 对计算机系统中多级物理存储体系进行高度抽象的结果
空间:内存,外存;
逻辑空间:同时在内存又在外存,把实际的内存空间虚拟扩大,用外存扩大内存
File
命名了的字节流