第一章 计算机系统概述
计算机系统概述
计算机系统视图
程序员的视图
软件开发的不同层次
- 计算机硬件系统:机器语言
- 操作系统之资源管理:机器语言+广义指令(扩充了硬件资源管理)
- 操作系统之文件系统:机器语言+系统调用(扩充了信息资源管理)
- 数据库管理系统:数据库语言(扩充了功能更强的信息资源管理)
- 语言处理程序:面向问题的语言
计算机程序的执行过程
操作系统概述
操作系统类型
批处理操作系统
- 成批处理作业
- 作业控制语言与作业说明书
- 脱机工作方式
- 追求系统效率与吞吐量
分时操作系统
- 用户通过终端直接控制程序执行
- 交互式工作方式
- 交互型、友善性、快速响应
- 今天最常见的计算机操作方式
实时操作系统
- 事件驱动,有较高时间要求
- 实时操作系统的分类
- 过程控制系统
- 信息查询系统
- 事务处理系统
- 过程控制系统的处理步骤:数据采集、加工处理、操作控制、反馈处理
系统调用的实现过程
操作系统结构分类
- 单体式结构
- 层次式结构
- 虚拟机结构
- 微内核结构
- 客户/服务器结构
特权指令和处理器状态
- 从资源管理和控制程序执行的角度出发,必须设置特权指令,提供给操作系统的核心程序使用
- 处理器状态
- 管理状态(特权状态、系统模式、特态或管态):处理器可以执行全部指令,使用所有资源,并具有改变处理器状态的能力
- 用户态(目标状态、用户模式、常态或目态):处理器只能执行非特权指令
中断与指令周期
中断装置与中断响应
自愿性中断事件处理
-
用户程序执行系统调用(访管指令、广义指令)
-
操作系统把系统调用参数作为中断字,分析检查后进行相应处理
中断控制流程
第二章 处理器管理
状态模型
三状态模型及其转换
含两个挂起态(七状态模型)
虚拟内存中的用户进程
多线程技术
单线程结构进程给并发程序设计效率带来的问题
- 进程切换开销大
- 进程通信开销大
- 限制了进程并发的粒度
- 不适合并行计算的要求
线程的概念
解决问题的基本思路
- 把进程的两项功能——“独立分配资源”与“被调度分派执行”分离开
- 进程作为系统资源分配和保护的独立单位,不需要频繁地切换和保护资源
- 线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换,在这种知道思想下,产生了线程的概念
引入进程与线程的目的对比
- 操作系统中引入进程的目的是为了使多个进程并发执行,以改善资源使用率和提高系统效率
- 操作系统中再引入线程,则是为了减少程序并发执行时所付出的时空开销,使得并发粒度更细、并发性更好
多线程结构的进程
- 线程是进程的组成部分,每个进程内允许包含多个并发执行的实体(控制流)
- 线程作为处理器调度和分派的一级单位
- 线程的状态(运行态、就绪态、阻塞态)
线程组成
- 线程唯一标识符及线程状态信息
- 未运行时保存线程的上下文,可把线程看成是进程中一个独立的程序计数器在操作
- 核心栈,核心态下工作时,保存参数
- 用于存放线程局部变量及用户栈的私有存储区
并发多线程程序设计的优点
- 快速线程切换
- 减少(系统)管理开销
- (线程)通信易于实现
- 便于共享资源
- 并行程度提高
用户级线程 vs. 内核级线程
处理器调度
处理器调度算法衡量指标
- 吞吐量:每单位时间完成的进程数目
- 周转时间TT(Turnaround Time):每个进程从提出请求到运行完成时间
- **响应时间(Response Time):**从提出请求到第一次回应的时间
- **等待时间(Waiting Time):**每个进程在就绪队列中等待的时间
处理器调度算法
FCFS(先来先服务)
就像字面意思
RR(时间片轮转)
时间片轮转调度是一种最古老,最简单,最公平且使用最广的算法。每个进程被分配一时间段,称作它的时间片,即该进程允许运行的时间
SPN(最短进程优先)
预计执行时间最短的进程优先
SRT(最短剩余时间优先)
预计最短剩余执行时间优先
HHRF(最高相应比优先)
响应比=(等待时间+执行时间)/执行时间
Feedback(多级反馈调度)
传统Unix系统的调度(例)
- 多级反馈队列,每个优先级队列使用时间片轮转
- 每秒重新计算每个进程的优先级
- 给每个进程赋予最基本优先级的目的是把所有进程划分成固定的优先级区
- 可控调节因子
Unix SVR4调度算法(例)
- 多级反馈队列,每一个优先数都对应一个就绪进程队列
- 实时优先级层次:优先级和时间片都是固定的,在抢占点时执行抢占
- 分时优先级层次:优先数和时间片时可变的,从0优先数的100ms到59优先数的10ms
第三章 存储管理
寻址、分段与分页
寻址
进程在寻址方面的需求
重定位
地址转换与存储保护
程序的编译、链接、装入和执行
- 固定分区
- 动态分区
- 伙伴系统
分段
模块化程序设计的分段结构
程序的用户视图
分段(例)
分段的重定位
分页
- 主存被划分为大小固定相等的块,且块相对比较小,每个进程也被分成同样大小的小块
- 进程中称为页(page)的块可以指定到内存中称为页框(frame)或者页框的可用块
- 仅有一个简单的基址寄存器是不够的,操作系统需要为每个进程维护一个页表(page table)
- 页表给出了该进程的每一页对应的页框的位置
- 每个逻辑地址包括一个页号和在页中的偏移量