操作系统学位考
第一章:引论
计算机系统的概述
计算机系统由软件和硬件2部分组成
硬件部分: 处理器, 存储器(主存,辅存), 输入输出设备, 通信装置
软件部分: 计算机硬件执行完成一定任务的所有程序和数据
裸机 扩充 操作系统, 应用程序
硬件- 系统软件(操作系统) - 应用软件
计算机的硬件组织: 运算器, 控制器, 存储器, 输入设备, 输出设备
什么是操作系统: 一个大型的程序系统, 负责计算机全部软,硬件资源的分配, 调度工作,控制和协调并发活动, 实现信息的的存取和保护 管家婆
提供用户接口, 使用户获得良好的工作环境, 操作系统使整个计算机系统实现了高效率, 高度自动化,高利用率和高可用性 桥梁
操作系统的形成和发展
第一代计算机: 主要元器件电子管 , 运算速度较慢 ,无操作系统, 用户一个一个轮流的使用计算机, 人机矛盾
第二代计算机: 批处理(早期),执行系统
第三代计算机: 操作系统形成一批处理操作系统,,分时操作系统
第四代计算机: 个人计算机操作系统, 网络操作系统, 分布式操作系统
多道程序设计的概念
把一个以上的作业存放再主存钟, 并且同时处于运行状态, 这些作业共享处理器时间和外部设备等其他资源
根本目的: 提高cpu利用率, 充分发挥并行性。
多道程序运行的特征
多道: 主存同时存放几道相互独立的程序
宏观上并行: 他们先后开始了各自的运行, 但都未运行完毕
微观上串行: 任何一个时间点,只有一个程序使用处理器,轮流交替执行
用文字描述2道作业并行运行, 一道作业A 使用处理器, 分析cpu利用率多少 cpu忙的时间/整个运行时间
单处理器系统中,有两道程序,A 的执行过程为:计算 50 毫秒,打印 100 毫秒,再 计算 50 毫秒,打印 100 毫秒,结束;B 的执行过程为:计算 80 毫秒,打印 50 毫秒,结 束。如果采用多道程序设计,让A、B 两道并行处理,A 先开始,处理机的利用率为 ______%。
答案是:60%。
操作系统的功能和特性
用户和计算机之间的接口
计算机系统资源的管理者
处理器管理
存储器管理
输入输出设备管理
信息管理
操作系统的类型
批处理系统
分时系统: 把处理器时间划分很多时间片, 多个作业轮流使用时间片, 多路性, 交互性, 独占性。
实时系统: 对外部事件做及时的响应和处理。需要高可靠性和高安全性
网络操作系统: 处理器管理, 存储管理, 设备管理, 文件管理, 网络功能, 用户明确知道有多台计算机存在
分布式操作系统: 每个计算机都有自己内存, 用户看来就像一个单处理器系统, 具体任务再哪台计算机执行, 用户不知道
多处理器操作系统: 可靠性, 高度平行性 对称式多机系统,(所有处理器处于平等地位, 每一个处理器都可以执行系统功能和用户程序, 所有处理器共享主存)
非对称式的多机系统、(主从式的) 只有主理器可以运行操作系统, 接收设备中断,进行IO操作,执行内核代码, 而从处理器仅可执行用户程序 主处理器负载过高
第二章:操作系统的运行环境
硬件环境
中央处理器 处理器个数, 分为单机系统, 多机系统
特权指令: 那些只有操作系统使用, 不允许一般用户使用的的指令, 如: 启动某设备, 设置时钟, 控制中断, 清内存指令, 建立存储保护指令
非特权指令
处理器的状态 : 管理状态(核心态) 可以执行全部指令
目标状态(用户程序态) 只能执行非特权指令
程序状态字 PSW pragram status word 一个专门用来指示处理器状态的寄存器
程序状态字的内容: 标号13 S(0,1) 1是管态, 0是目态
EMWP p(0,1)
内存
多级存储器体系: 寄存器
高速缓冲存储器
主存储器
辅存储器
操作系统对内存管理: 进行存储保护, 对主存信息严格的保护,是操作系统正确运行的基本条件之一
常用的存储保护机制
界地址寄存器(界限寄存器): 在CPU中设置一对界限寄存器来存放该作业在主存中的下限和上限地址 寄存器是最昂贵的, 系统开销大。
存储键
每个存储块有一个与其相关的5位二进制组成的存储保护键
左边四位 - 存储保护键 是一把锁
最右边一位- 取保护位
判断方法: CPU的PSW里会有一把4位的钥匙, 访问内存空间的时候, 用cpu钥匙取开锁,钥匙,锁匹配的, 程序是可以访问存储块A的内容, 对存储块A可读可写
钥匙,锁不匹配的话,是对B不可改写的, 是否可读看取保护位, 1 对读取加以保护, 不可读, 0 对读不保护, 可读的
PSw有一把万能钥匙0000, 拿到0000都所有的程序块可读可写
缓冲技术
CPU处理数据速度与设备传输数据速度不相匹配, 用缓冲区解决这种速度矛盾。
缩短等待用户输入的时间
缓冲区可以供多个用户共同和反复使用。
中断技术
CPU对系统中发送异步事件(随机发生的事件)的响应。什么时候响应中断? 会在一条指令执行结束, 下一条指令执行之前, 一条执行过程中有中断到达,也不会影响这条指令执行, 一个指令周期执行的最后时刻响应中断
中断屏蔽:一条执行过程中不希望被任何中断打扰 比如对临界资源的互斥访问。
中断处理:保护现场,保护正在执行程序的现场, 处理中断, 恢复现场
时钟的分类 绝对时钟: 记录系统当前的事件, 间隔时钟, 相对时钟
地址转换
绝对地址, 相对地址, 重定位
绝对地址, 物理地址, 实地址 :存储控制部件能够识别的主存单元编号
相对地址, 逻辑地址 虚地址: 相对于某个基准量编址时所使用的地址。
重定位:把程序的相对地址变换位绝对地址
静态重定位: 程序装入主存时,由连接程序进行重定位 马上进行地址转换, 访问时间缩短, 对地址映射机构压力比较大, 多次转换
动态重定位: 在处理器每次访问主存时, 由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。访问速度会变慢。
第三章:进程管理
进程的概念
提高并行性,程序A执行时间停下来, 等待输入, B程序执行
程序之间走走停停状态的描述, CPu来回的切换,
进程的定义:程序在处理器上的执行(跑起来的程序, 可调度的实体)
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
进程和程序的区别
进程是程序的执行, 属于动态概念, 而程序是一组指令的有序集合, 属于静态概念
进程的存在是暂时的,而程序的存在是永久的
进程的组成包括程序和数据, 还由进程控制块(PCB)组成
一个程序可能对应多个进程,一个进程可以包含多个程序
进程是动态的,程序是静态的,生命周期一短一长 ,包含范围一大一小,进程和程序不是一一对应的
进程的状态
运行状态(Running): 正在处理器上运行的状态
就绪态(Ready): 万事俱备, 只差cPU调度,一个进程获得了除处理器外的一切所需资源, 一旦得到处理器即可运行态
等待/阻塞状态(Blocked): 一个进程正在等待某一事件发生而暂时停止运行状态
状态转换: 阻塞态不能直接道运行态。
进程的描述和管理
process control block
进程的描述 - 进程控制块 PCB : 进程标识信息: 本进程ID,父进程ID
: 进程控制信息:
: 处理器状态信息
对进程管理就是对PCB结构管理, 进程结束PCB块也消失
把所有不同状态的PCB组织放在一个表格中
分别把有相同状态的PCB组织放在一个表格里
分别把有相同状态的PCB组织放在一个队列, 每个队列按照优先级排序
进程控制
进程控制原语(原子操作)
建立一个进程原语
所有的进程只能由父进程建立, 不是自生自灭的,供进程调用,以建立子进程使用
算法 create
输入: 新进程的符号名, 优先级, 开始执行地址
输出: 新创建进程的内部标识符pid
{
在总链队列上查找有无同名进程
if(有同名进程)
return(错误码)
从PCB资源池申请一个空闲的PCB结构
if(无空闲PCB结构)
return(错误码)
用入口参数设置PCB内容:
置进程为就绪状态
将新进程PCB入就绪队列
将新进程PCB入总链队列、
return (新进程的pid)
}
撤销一个进程原语
当一个进程完成其任务后, 应将其撤销, 以便及时释放出它所占用的资源
撤销原语采取的策略
只能撤销一个具有指定标识符的进程
撤销它的一个子进程及该子进程的所有子孙
命令形式 kill或exit
算法 kill
输入:无
输出:无
{
有运行指针得到当前进程的pid
释放本进程所占用所有资源给父进程
该进程从总链队列里删除
释放此PCB结构
转进程调度程序
}
进程间通信
经典IPC问题
哲学家就餐问题
睡眠的理发师问题
读者-写者问题
进程调度
时间片轮转调度
分时调度算法:每个进程被分配一个时间段,称它作时间片即该进程运行的时间,如果时间片结束时进程还在运行, 则CPU被剥夺并分配给另一个进程使用,如果进程在时间片结束前阻塞或结束,cpu会当即切换其他进程
时间片的长度通常设为100ms(时间片划分太长不好, 太短也不好)
优先级调度
每个进程被赋予一个优先级,优先级最高的就绪进程被率先执行, 每一个优先级一个队列, 队列内采用时间片轮转
最短作用优先
多线程
线程的概念 : 进一步提高系统的并行性。
进程切换开销比较浪费资源。
进程是拥有自己资源的单元体
进程是被调度分派再处理器运行的基本单位
线程是进程内的一个执行单元, 进程内的一个可调度实体
进程是一个团队, 线程是每个人
线程的性质:操作系统的基本调度单元, 进程中至少有一个线程。线程也可以创建其他线程
多线程机制的优点:在进程内创建多线程,可以提高系统的并行处理能力
首先创建和撤销线程的开销比进程的创建和撤销的开销小
线程的状态: 就绪, 运行, 等待/阻塞状态, 一个线程阻塞了, 其他线程不受影响的
有了线程后, 进程状态分为活动态, 非活动态
线程的管理对线程TCB的管理。
线程控制原语:建立线程原语, 撤销线程原语, 对于线程的控制通过线程控制原语实现的。
引入线程后操作系统的分类
单进程单线程系统
多进程单线程系统
单进程多线程系统
多进程和多线程系统
第五章:互斥与同步
进程间交互
进程之间存在2中基本关系:协作关系和竞争关系
临界区: 进程中访问共享变量(临界资源)的代码段(程序段) 一次只允许一个进程使用的资源。(选择题)
实现对临界区的互斥访问。
互斥,是一种特殊的同步, 逐次的使用共享资源
互斥的硬件方法 中断屏蔽法: 单机系统中, 使得当前运行进程交出处理器的唯一原因就是中断,
硬件指令法: 一条指令周期执行结束, 下一条指令执行之前,检测是否有中断到达, 就是指令执行中是不会被打断的。 会造成忙等待, 某个进程正在临界段执行的时候, 另一进程就不断的尝试执行指令
信号量 3 可以被用户进程使用的资源个数 3个苹果
一个信号量被定义一个整型变量
可以被初始化一个非负数
Wait操作(P操作)将信号量值减1后, 若该值为负,则执行wait操作的进程进行等待 消费者
Signal操作(V操作)将信号量值增1后, 该该值非正, 则执行singal操作的进程唤醒等待进程 生产者
PV操作实现进程间互斥
对于2个并发进程, 互斥信号量的值仅取 1, 0 , -1 三个值(选择题)
若mutex = 1 表示没有进程进入临界区
若mutex = 0 表示有一个进程进入临界区(另一个进程没有想要使用临界资源)
若mutex = -1 表示一个进程进入临界区, 另一个进程等待进入
进程间通信(写算法描述, 用PV操作)
哲学家就餐问题
forki array 【0,-4】
processi
cobegin
forki = 1;
P(fork[i])
p(fork[(i + 1) mod 5])
吃同心面
V(fork[i])
V(fork[(i + 1) mod 5])
coend
睡眠的理发师问题
读者-写者问题
rc = 0
Sempore R = 1 W = 1
process reader:
P(R);
rc = rc + 1;
if(rc == 1) P(W);
V(R);
读文件
P(R);
rc = rc - 1;
if(rc == 0) R(W);
V(R);
process writer:
P(W);
写文件;
R(W);
吃苹果, 一个水果盘, 爸爸放放水果, 可以放苹果, 可以放橘子, 儿子专等吃苹果, 女儿专等吃橘子
int s =1;
int sa = 0;
int so = 0;
main(){
cobegin
father();
daughter();
son();
}
process father(){
P(S);
向盘子里放水果;
if(放苹果) V(sa);
else V(so);
}
process son(){
P(sa)
从盘中取出苹果
V(S)
吃苹果;
}
process daughter(){
P(so);
从盘中取出橘子
V(S)
吃橘子
}
并发进程之间交往本质上是互相交互信息
共享文件通信机制: 管道通信(单向的 发送者只能写, 接收者只能读)
消息传递的方式: 直接通信, 间接通信-信箱通信 优点通信方式灵活, 可以一对一, 一对多, 多对多。
第6章:处理器调度及死锁
处理器调度算法
单机系统为列子 考核点
调度性能的衡量: 平均周转时间:多个作业周转时间的平均值, 平均带权周转时间
周转时间 = 运行时间(执行时间) + 等待时间 = 完成时间 - 提交时间
带权周转时间 多个进程竞争处理器资源, 权值 = 周转时间 / 运行时间 = 1 + 等待时间/运行时间
先进先出调度算法
FCFS 先进先出
作业 开始时间 执行时间 开始时间 完成时间 周转时间 带权周转时间
1 8 2 8:00 10:00 21 1
2 8.5 0.5 10:00 10.5 2 4
3 9 0.1 10.5 10.6 1.6 16
4 9.5 0.2 10.6 10.8 1.3 6.5
平均周转时间 = (21 + 2 + 1.6 + 1.3)/4
最短进程优先调度算法 8点只要一个进程进入系统别无选择, 只能1先运行
作业 开始时间 执行时间 开始时间 完成时间 周转时间 带权周转时间
1 8 2 8:00 10:00 21 1
2 8.5 0.5 10.3 10.8 2.3 4.6
3 9 0.1 10 10.1 1.1 11
4 9.5 0.2 10.1 10.3 0.8 4
最高响应比优先算法
第一道作业优先进入系统,先执行, 到了10点就有2,3,4 三道作业进入系统
最高响应比 10点假设让第二道作业运行 响应比 = (10.5-8.5)/0.5 = 4
10点假设让第三道作业运行 响应比 = (10.1 -9)/0.1 = 11
10点假设让第四道作业运行 响应比 = (10.2 - 9.5)/0.2 = 3.5
r3 > r2 > r4 第三道作业先执行
作业 开始时间 执行时间 开始时间 完成时间 周转时间 带权周转时间
1 8 2 8:00 10:00 21 1
2 8.5 0.5 10.1 10.6 2.1 4.2
3 9 0.1 10 10.1 1.1 11
4 9.5 0.2 10.6 10.8 1.3 6.5
死锁必要条件 原因,系统资源严重不足,共同进展的路径不恰当。
互斥条件: 一个资源只能被一个进程使用
不可抢占条件:
请求又保持条件:
循环等待条件:系统中存在若干进程形成环球链
死锁预防 考核点
互斥,和不可抢占是资源本身性质决定的, 不太容易破坏
破环部分分配条件: 预先静态分配法: 开始运行前, 一次性分配所有需要的资源, 如果不能满足全部资源, 就不干活等待, 防止了死锁的发生。缺点造成资源严重浪费。改进策略:把程序分成相对独立的程序块
破环循环等待条件: 有序资源使用法: 系统设计把系统所有资源一个唯一的序列号, 要求每个进程均严格按照递增次序请求资源 (破环循环等待条件) 缺点给资源编号反应大多数进程对资源使用顺序, 增加减少资源需要操作线性表
死锁的避免
单种资源的银行家算法, 分析系统状态是否安全
Has Max
A 0 8
B 0 5
C 0 4
D 0 7
Free:10 安全
多种资源银行家算法
2个向量, 2个矩阵
总的资源数 E =(6342)
资源1 资源2 资源3 资源4
A 3 0 1 1
B 0 1 0 0
C 1 1 1 0
D 1 1 0 1
E 0 0 0 0
已分配的资源矩阵
已分配的资源 P=(5322)
资源1 资源2 资源3 资源4
A 1 1 0 0
B 0 1 1 2
C 3 1 0 0
D 0 0 1 0
E 2 1 1 0
每个进程还需的资源矩阵
还剩的资源 A=(1020)
首先满足进程D的要求 分给D 以后 还剩1010 + D1111(任务完成) A = 2121 A1020看满足哪行的要求 1020 + D1101(已分配)
死锁的检测
死锁的模型 - 有向图
画有向图 :圆形代表进程, 矩形框代表资源, 箭头指向代码资源与进程的关系
从资源指向进程箭头 表示把资源R分给了进程A
从进程指向资源箭头 表示进程B申请使用资源S
有向图形成闭合回路会出现死锁。
死锁的恢复
剥夺方法恢复: 把某个资源从一个进程强行抢占过来给另一个进程使用
回退法恢复: 周期性对进程状态进行检查, 记录进程的安全点。 系统重启恢复前一个安全点。
杀死进程法恢复:杀掉环中的一个进程
第七章 实存储器管理技术
主存储器管理功能
主存分配 :可以使多个程序驻留在主存中
地址转换和重定位
存储保护和共享
存储扩充:使用有效的存储管理技术来实现逻辑上的扩充-即虚拟存储技术
固定分区存储管理
把主存分成若干固定大小的存储区(存储块), 每个存储区分给某个作业使用, 直到该作业完成后才把该存储区归还系统。
单道作业
多道作业
管理方法简单, 分区大小固定, 不一定相等, 会存在分区内的碎片
存储分块表 记录信息 大小:存储块的大小 位置:主存的起始地址 状态:表明该存储块是否被使用
存储保护功能 :一对 界地址寄存器 实现, 系统硬件自动将该单元地址与界限寄存器内容比较, 判断是否合法, 不合法以中断形式报告
可变分区存储管理
可变分区, 指主存事先为划分一块块分区,而是在作业进入主存是, 按该作业的大小建立分区, 分给作用使用, 可以离散的
分区之间有碎片, 分区个数是可变的, 分区大小也是不固定的。
存储分配算法
最佳适应法 : 从所有未分配的分区中, 挑选一个最接近的作业的分区 大于等于这个分区 使得分区内碎片尽可能少
最先适应法: 按照分区的序号, 按照地址递增顺序找,把最先找到大于等于作业分配给, 让分配速度尽可能块
最坏适应法: 从空闲分区挑选最大的分区分给这个作业, 让分配以后,该空间剩余空间尽可能的大
分区外的碎片
解决碎片的问题: 有一个大的作业, 把100k的作业拆成几部分放入碎片空间, 带来管理复杂性, 执行的复杂性(界限寄存器变多)
存储器的紧缩(程序的浮动):把小碎片集中起来使之成为一个大分区 (选择题)
多重分区存储管理
单对界地址寄存器
每个用户只占据主存的一个分区, 存储保护只需要一对界地址寄存器
多对界地址管理技术
简单分页存储管理
分页存储管理技术
等分物理主存(等分页架, 页框, 帧)
用户逻辑地址空间的分页(页)
逻辑地址的表示(数对(p,d) 逻辑地址p 页号, d 页内偏移量, 物理地址 页架号, d 页内偏移量)
页表 页号 - 页架号 的对应关系
地址转换过程(考点) 根据页号查页表找出页架号 然后页袈号 + 偏移量
没有页内碎片,只是每个进程的最后一页中会有页内碎片
用户的逻辑地址严格按照页架的大小拆分
简单分段存储管理
简单分段没有段内碎片, 每一段都是一个完整用户逻辑结构
当进程交换出主存时, 段表或页表页需随进程一起撤出。
分段与分页的比较
分段时信息的逻辑单位,有源程序的逻辑结构所决定, 用户可见, 段长可根据用户需要来规定
分页时信息的物理单位, 与源程序结构无关,用户不可见, 页长有系统确定, 页面只能以页大小的整数倍存放
第八章 虚拟存储管理
虚拟存储的基本概念
实存管理: 作业运行时, 整个作业的逻辑地址空间必须全部装入主存, 当作业尺寸大于主存可用空间时, 该作业无法运行
虚拟地址:运行进程访问的地址。
实际地址:cpu可以访问的主存地址
虚拟存储: 一种实际上并不以物理形式存在的虚假的存储器。操作系统内核只把当前要用部分放在主存中。
由动态地址机构实现虚地址到实地址的转换
请求分页式存储管理
分页系统主要目的: 让程序能在它的虚拟地址空间中运行并实现由虚拟地址到主存物理地址的转换。
几种地址转换方法 实存管里 (P, d) p + d 就是逻辑地址 p根据p查页表找到页架号p’ p’ + d 就是物理地址
直接映像的页地址转换 书上136页
页表地址寄存器: 页表长度 L 页表起始地址b
b(第0页) + p(第p页) = p的位置,页表中根据p的位置查到 p’ 访问一次主存, 物理地址就是p’ + d 读物理地址 需要访问主存一次
缺点 第一次查页表, 第二次访问真正的物理地址, 影响CPU的执行速度
多级页表的地址转换
一个程序非常大, 页表本身需要占很大存储空间。 对页表进行分页形成二级页表
反向页表的地址转换
快表的地址转换
把常用p p’的对应关系放在高速缓冲区中, 快表的访问速度比主存访问速度高一个数量级
快表中包含:虚页号已经虚地址属于那个进程, 物理页架号, 页面访问权限等
根据页号p 匹配快表中的所有项目, 同时更b + p查页表, 快表中找到,停止页表的查找, 如果快表没找到,页表中有 快表中还要空闲的空间, 会把当前p, p’关系放入快表, 方便下一次的读取 , 页表中页没有发送缺页中断
虚拟分页的地址转换过程即缺页中断处理流程 : 页表没有数据 发送中断 保护现场, 装入页表, 恢复现场
请求分段式存储管理
虚拟分段: 可以任意增长和收缩数据段的管理。分段便于进程间共享过程和数据, 存在段外碎片
每个虚拟地址有一个数对(段号, 段内偏移量)组成, 每个进程一个段表
(s,w) 段的大小不等, s段 起始段b b + 第一段长 + 第二段长 + s 段长
段页式存储管理
物理主存等分成若干页架子
进程的地址空间采用分段
进程的每一段又采用分页的方法
(s, p, d) s 段号, p页号, d偏移量 第几段, 这一段第几页, 第几页的偏移量
优点 提高了主存利用率, 段长可动态改变, 缺点增加了硬件成本,软件的复杂性
页面置换算法(重要)
页表中没有p p’的对应关系, 产生缺页, 当系统中没有空闲页时, 就要进行页面置换。
最佳置换算法: 淘汰将来不会被访问到的页面
最近未使用置换算法
先进先出置换算法(考核点) FIFO
最早进入主存的页面置换出去
页面访问 A B C D A B E A B C D E
1 A B C D A B E E E C D D
2 A B C D A B B B E C C
3 A B C D A A A B E E
是否发生缺页 是 是 是 是 是 是 是 没 没 是 是 没
A最先进来的所以把A换出去 不缺页顺序不变
缺页率 = 9/12
如果4个页架发生了10次中断, 理论上页架愈多,中断越少, 这个序列就是异常现象(抖动)
二次机会置换算法
先进先出 + 访问位标志(0,1) 访问位0,踢出去, 访问位1 把这一页移动队列尾部
时钟页面置换算法
最近最少使用置换算法(考核点) LRU
分页环境中程序的行为特性: 时间局部性: 最近被访问了,将来可能访问的可能性更大, 空间局部性: 一旦某个位置被访问了, 离它近的位置被访问的可能性大一些。
页面访问 A B C D A B E A B C D E
1 A B C D A B E A B C D E
2 A B C D A B E A B C D
3 A B C D A B E A B C
是否发生缺页 是 是 是 是 是 是 是 没 没 是 是 是
发生缺页把最先进来的(最近最少访问)换出去, 不发生缺页的时候,调整页面次序, 把刚刚访问的移动到链头去, 没访问的往下压
缺页率 = 10/12
列题
可变分区存储管理, 一下作业序列96k, 20K ,200K 分别首次适应法(第一个碰到的能装的下的), 最佳适应法(所有空间遍历一遍, 找到最适合自己的)处理是否满足需求
分区号 大小 起始地址
1 32K 100K
2 10K 150K
3 5K 200K
4 218K 220K
5 96K 530K
最佳适应法满足要求
分页存储管理系统中, 逻辑地址长度16位, 页面大小4096个字节, 现有一逻辑地址2F6AH 而且第0, 1, 2页依次放在物理块5, 10, 11中, 问物理地址多少(选择, 填空题)
4096 = 2的12次方, 页号为2, 12是页内偏移 11 BF6AH
注意:分页系统地址转换, 假如放问第8页 页表没有就越界了产生中断了, 访问逻辑地址超过段长 访问越界了
第9章 设备管理
概述
计算机外围设备,存储型设备,磁带机, 磁盘机 IO型设备,显示器,打印机
IO设备分类
按输入输出信息交换单位分 字符型设备, 块设备(定长的, 可随机访问的)
实现IO
直接存储访问DMA :由硬件执行I/O功能的方式。优点:速度块, 不需要CPU参与, 缺点:硬件线路复杂些
I/O子系统控制主存与外围设备之间的数据传输。I/O子系统设计目标: 有效性, 通用性。
设备分类
输入输出型的设备多为字符设备,与内存进行信息交换的单位是字节
存储型外围设备一般为块设备, 一次与内存交换一个或几个块信息。
存储型外围设备分为, 顺序存取的存储设备, 直接存取型的存储设备
磁盘的硬件特性, 磁道(同心圆),扇区
重要 磁盘调度
先来先服务
最短时间优先
扫描算法
循环扫描算法
虚拟设备
第10章 文件系统
文件系统是用来保存数据的
文件的类型: 按用途分 系统文件, 库文件, 用户文件。 按文件中的数据分, 源文件, 相对地址形式文件, 可执行的目标文件, 按操作保护分, 只读文件, 读写文件, 不保护文件
文件目录存放着每个文件的有关信息
目录结构: 整体式目录:目录中的每个文件都有一个表目, 分体式目录: 文件目录包括文件名,指针, 指针指向另外一个结构(包含文件的所有属性)
文件分配方法: 连续分配, 链接分配 ,索引分配, I节点分配
磁盘空间的管理, 位示图: 位 1 被分配, 0 未使用
某文件为链接文件, 由5个逻辑记录组成, 每个逻辑记录的大小与磁盘块大小相等,均为512字节, 并依次存放在50,121,75, 80, 63号磁盘块上, 若要存取文件的第1569逻辑字节处的信息,问要访问哪一个磁盘块
1569 = 512 * 3 + 33 要访问的逻辑记录号是3, 对应物理盘块80.(下标重0开始)
linux常用命令
ln 生成链接文件
useradd 添加新用户
passwd 设置用户密码
who 查看登录用户信息
ping 测试网络连通性。
netstat 显示网络相关信息
shutdown 关机命令
mail 查看发送电子邮件
last 列出目前与过去登录的用户信息
write 给用户发信息
wall 发广播信息
w 查看登录用户详细信息
traceroute 显示数据包到主机间的路径
进程创建与控制
fork函数创建子进程
系统启动时, 内核创建一个进程init, 所以进程都由init进程通过fork机制创建
进程pid 0-32767之间重复使用 ps -A 查看id号
fork()函数, linux进程由代码段, 数据段, 堆栈段构成, 新进程共享代码段, 复制数据段, 堆栈段, 想父进程返回值子进程的ID号, 向子进程的返回值时0 ,值为-1进程创建失败
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
main(){
int p1, p2;
while((p1= fork()) == -1);
if(p1 == 0){
puthchar('b');
}else {
while((p2 = fork()) == -1);
if(p2 == 0){
putchar('c');
}else{
putchar('a');
}
}
}