磁盘调度:
主要作用:减少平均寻道时间
FCFS:先来先服务
SSTF:最短寻道优先(有可能造饥饿,一部分在一段时间未被访问)
SCAN:扫描/电梯(按当前方向进行)
C-SCAN:循环扫描按(当前方向进行)
.
软链接和硬链接:
设文件F1的当前引用计数值为1,先建立文件F1的符号链接(软链接)文件F2,再建立文件F1的硬链接文件F3,然后删除文件F1。此时,文件F2和文件F3的引用计数值分別是?
答案:1,1
解析:创建F2和F3时,F2和F3的计数器各加一,此时都是2。删除F1时,F2和F3的计时器都减一,最终F2和F3的计时器的值都为1。
.
饥饿(starvation)是指某个进程或线程由于长时间等待系统资源而无法执行或执行效率极低的状态。
.
动态分区匹配算法:
- 首次适应算法(First Fit)FF :找第一块满足的,从低址(首地址)开始
- 循环 / 邻近适应算法(Next Fit)NF :从上一块满足的往后找,从低址(首地址)开始,不断循环
- 最佳适应(Best Fit)BF :找最接近且满足的
- 最坏适应(Worse Fit)WF :找空闲区最大的
不管是什么算法,都是从低地址开始放:
.
单缓冲区:
T:外设 -> 缓冲区
M:缓冲区 -> 用户区
C:CPU 处理的时间(此时,缓冲区为空,也就是说:可以并行新的 T 操作)
处理顺序:T -> M -> C
处理时间:Max(T,C)+ M
双缓冲区:
T < C + M:
T > C + M:
总结:
单缓冲区:
双缓冲区:
.
用户态到内存态:
把 addr 处的内存数据放入寄存器 R0 中,当 addr 不存在时,会导致缺页异常
单处理机,并行与并发
并行:一块执行
并发:宏观上一块执行,微观上存在先后顺序
单核处理器:一次可以执行一次操作,多核处理器一次可以执行多个操作
处理机、设备、通道 两两之间可以相互并行
处理机和通道都是CPU资源
I/O系统的层次结构
系统调用,脱机命令接口之批处理
在记事本中写入:
ren *.txt *.bat
代码含义:将所有改记事本文件所在目录的所有 .txt 文件改为 .bat
然后将该记事本后缀改成 .bat 形成批处理文件
系统调用
信号量
当信号量大于零时,说明我没有等待资源的进程
临界区:在临界区内访问共享资源,并执行操作,一定程度上可以与信号量的数量化等号
最佳置换算法
找最晚要访问的(最右边)
当系统发生抖动时,可采取的有效措施是:撤销部分进程,目的是增加空闲物理块
编译,链接,装载
虚拟存储器,连续分配与非连续分配
连续分配:单一连续、固定分区、动态分区;一次调入在内存中驻留,不会被换出
非连续分配:分多次调入内存,内存中会被换出;分页、分段、段页式、请求分页、请求分段、请求段页式
其中 请求分页、请求分段、请求段页式 说明虚拟存储器对应的分配方式
虚拟存储容量 最大容量:32位 或 64位 实际存储容量 =min(外存+内存,32位或64位)
系统调用
所有的系统调用都会导致CPU从用户态切换到核心态
只有open参数才包含文件的名称
进程、线程
进程:资源分配的基本单位
线程:调度的基本单位
系统是可以不支持线程的
同一进程的不同线程拥有的都是同一个进程的地址空间
银行家算法
目的是避免死锁
位示图法
每行一个字,每行多个块
块被占用时置 1,未占用置 0
文件区和交换区
不够的第二种情况是:在外存修改地址,也通过交换区调入内存
能加快虚实地址转换的是:增大块表(TLB)容量、让页表常驻内存、
管道(pipe)通信系统
管道相当于一个共享文件,存在于内存中
管道是半双工,并且读的时候不能写,写的时候不能读,所以在读或写的时候都可能被阻塞;一个管道只能有一个读进程和多个写进程
半双工:可以相互传输数据,但不能同时传输
双向数据传输:一般指双方同时向对方传输数据
多级页表
多级页表可以减少页表所占的连续内存空间,有助于减少实现进程的虚拟空间所需的页表大小
翻译后备缓存(TLB)
TLB是一种高速缓存,用于缓存最常用的页表项
执行态、就绪态、阻塞态
从执行态变为就绪态:
- 时间片用完
- 被高优先级进程抢占
从执行态到阻塞态:
申请资源
磁盘缓冲区
减少磁盘I/O次数
磁盘容错技术:提高磁盘数据可靠性
设备独立性软件:实现设备无关性
请求分页内存分配策略
固定分配没有全局置换
中断
中断技术使得多道批处理系统和I/O设备可与CPU并行工作
关中断:不允许中断
分时系统
分时系统允许多个用户与计算机直接交互
批处理系统
批处理系统允许多个用户与计算机间接交互;作业运行时不能被干预,只能事先通过作业控制说明书间接操作作业
死锁
判断是否死锁只有通过化简资源分配图,银行家算法是判断不了死锁的,银行家算法只能判断当前系统是否处于安全状态,即使处于不安全状态也不代表死锁发生,不安全状态还是可能转回安全状态的,注意不安全状态和死锁不一样。
死锁的预防可以保证系统不会发生死锁。
改进型clock置换算法
让权等待
代码while(ture)循环时,不满足让权等待,同时,等待进入临界区的进程不会主动放弃CPU
异常
段缺失异常:段不在内存中
越界异常:地址不在段长范围内
越权异常:例如:只读权限却要进行修改
互斥
需要互斥执行的操作:对同一可变量进行修改
同步机制
管程
管程是由编程语言支持的进程同步机制
任何时候只能有一个进程在管程中执行
管程中定义的变量只能被管程内的过程访问