计算机系统概述
操作系统的定义?
操作系统能够进行工作调度和资源分配,为上层提供接口。
- 操作系统是计算机资源的管理者:处理机管理、存储器管理、文件管理、设备管理
- 为上层提供接口:命令接口、程序接口(系统调用)、GUI接口
Linux创建文件的命令
touch 或者直接 vim
操作系统目录
- 处理机管理:进程管理
- 存储器管理
- 文件管理:一切皆文件
- 设备管理:I/O
操作系统的作用
- 工作调度
- 资源分配
- 为用户提供接口
操作系统的运行机制
两种状态:内核态,用户态
两种程序:内核程序,应用程序
两种指令:特权指令,非特权指令
在内核态下运行的程序叫内核程序,只有内核程序可以使用特权指令
在用户态下运行的程序叫应用程序,应用程序只能使用非特权指令
原语
- 原子性,执行过程不可被打断
- 构造原语的最简单方式就是开关中断
原语原子性被破坏的后果
导致程序执行紊乱。可能会发生读后写之类的
中断和异常
中断:CPU暂停当前执行的程序,转而去执行中断服务程序,中断处理结束后,返回执行原程序。
中断,外中断,狭义中断。中断源来自CPU外部
异常,内中断。中断源来自CPU内部,如陷入、故障、终止
系统调用
- 操作系统给程序员提供的接口
- 是用户态与硬件交互的接口
- 使用户以固定的方式访问资源。
进程管理
进程
系统资源分配和调度的基本单位。
进程与程序
- 进程是戏,程序是剧本。进程动态,程序静态。
- 进程由程序控制块,代码段和数据段组成。
进程的特征
- 动态性
- 独立性
- 异步性
- 并发性
进程的工作状态
二状态:未运行态,运行态 五状态:创建态,就绪态,运行态,阻塞态,终止态
如何使计算机优先处理任务
- 任务调度算法
- 多线程:优先交给单独的线程处理
- 负载均衡:分配强算力服务器
进程间通信方式
- 共享内存
- 管道
- 消息传递。分为直接通信(指名道姓)和间接通信(需要邮箱)
进程和线程
进程是资源分配的基本单位,线程是调度的基本的单位
进程调度的定义
按照一定策略分配CPU
同步和互斥
互斥:同一资源只允许一个访问者进行访问
同步:在互斥的基础上,按照某种机制实现访问者的有序访问
优先级反转
低优先级任务占用高优先级任务的共享资源,低优先级任务得不到CPU时间无法执行,高优先级任务得不到共享资源无法执行,导致中优先级任务反而执行。
解决办法:提高低优先级任务的优先级。
- 优先级继承:提高到(当前)需要该共享资源的任务的优先级。
- 优先级天花板:提高到(所有)可能需要该共享资源的任务中的最高优先级。
优先级算法
- 非抢占式优先级调度:系统等待当前进程执行完才会将处理机分配给高优先级
- 抢占式优先级调度:一旦出现高优先级任务,会直接抢占低优先级级的处理机资源
银行家算法
每个客户要声明最大资金量,在满足所有贷款要求时,客户能及时归还。基本原理就是能借的先借,用还的钱继续借给别人。
系统的资源是非剥夺好还是剥夺好
非剥夺,若是打印机被剥夺,那么接下来打印出来的就错了。
死锁
- 概念:多个进程争用同一个共享资源而造成的相互等待的现象
- 条件:互斥、不可剥夺、请求与保持(每次只申请一部分资源,并且没运行完毕之前不释放)、循环等待
- 预防:破坏四大条件
饥饿和死锁
- 饥饿概念:某一进程无限等待资源。
- 死锁等待不会被释放的进程
- 饥饿等待会被释放,但是永远不会分配到自己的资源(嗷嗷待哺)
进程调度算法
- 先来先服务(顺序)
- 短作业优先算法(短作业)
- 高响应比优先算法(响应比)
- 最短剩余时间有限算法(剩余时间)
- 时间片轮转调度算法
- 最高优先级调度算法(优先级)
- 多级反馈队列调度算法
内存管理
内存管理方法
- 连续分配:单一连续分配,固定分区分配,动态分区分配
- 非连续分配:页式管理、段式管理、段页式管理
覆盖和交换
- 覆盖定义:内存分为覆盖区和固定区。只在程序段要执行时才将程序段放入覆盖区。
- 交换定义:磁盘分为对换区和文件区。内存紧张时,将进程暂时换出到对换区。
- 区别:交换技术主要在进程之间进行,覆盖技术在进程内执行
内存连续分配方式
一个分区只能装入一个作业
- 单一连续分配:分为系统区和用户区,相当于能用的只有用户区这一个分区
- 固定分区分配:预先分为大小固定的分区,不同分区的大小可以不同
- 动态分区分配:要用的时候再分区。
什么是调度
按照某种规则按顺序处理任务
页表和快表的定义及其作用
- 页表是逻辑地址中页号和主存块号的映射。
- 快表是相联存储器,类似于cache,满足了空间局部性。
- 页面过大,换页速度下降,页面过小,换页过于频繁。
分页管理和分段管理的区别
分页管理是按照物理空间大小划分(多大空间一个页),地址空间一维,只需要给出一个地址,有内部碎片,无外部碎片 分段管理是进程代码逻辑划分(一个功能一个段),地址空间二维,给出段号和段内地址(每个功能段大小又不一样,没办法像分页那样搞),有外部碎片,无内部碎片
虚拟内存的作用
解决内存不足的问题。
虚拟内存的为什么可以实现
多级存储系统的作用
多级存储系统中包含cache-主存层次和主存-辅存存层次,能够实现成本低,容量大,速度快的存储系统。
页面置换算法
先进先出(FIFO),最近最少使用(LRU),clock置换算法
操作系统标记已被占用的内存的数据结构
- 固定分区分配:内存分配表
- 动态分区分配:空闲分区表或者空闲分区链
- 分页管理:页表
- 分段管理:段表
CLOCK置换算法
使用循环队列
- 每个页面设置一个引用位,被访问时置为1
- 扫描队列,若引用位为1,则置为0,若引用位为0,则淘汰
- 若找不到则继续循环
中断处理过程
- 中断判优
- 中断响应:关中断,保存断点,执行中断隐指令
- 中断服务:保护现场,开中断,执行中断服务程序,关中断,恢复现场。
- 中断结束
文件管理
I/O管理
I/O控制方式
程序控制方式(一直轮询)、中断控制方式(等数据准备好)、DMA方式(等传满一块数据)、通道方式
DMA方式和中断控制方式的区别
- 中断控制方式传送每个数据都需要中断处理。
- DMA方式只有传满一批数据才发出中断请求。
spooling技术
假脱机,解决cpu运行速度和I/O设备速度不匹配的问题。将低速I/O设备的数据先放在高速的存储设备。
设备独立性
将所有外部设备都当作文件对待。