处理机管理/进程管理
进程
进程是进程实体的运行过程,是系统资源分配和调度的独立单位<br>注:通常所说创建进程是创建进程实体中的PCB<br>
进程的创建、撤销、切换需要消耗较大的系统<b>时空开销</b>
进程组成
程序段
数据
进程控制块PCB<br>(Process Control Block)
内容
进程表<br>Process Table Entry
进程标识符<br>PID
用户标识符<br>UID
进程和U区在内外存的地址<br>
核心利用这些信息做上下文切换
进程大小
核心为进程分配存储空间时的依据,包括正文长度和栈长度等<br>
P_Link指针<br>
指向就绪队列中下一PCB块
指向U区进程正文、数据及栈在内存区域的指针<br>
U区
真正用户标识符u-ruid
有效用户标识符u-euid
默认与ruid相同,可通过系统调用setuid改为其<br>他用户标识符,以获得该用户对文件的操作权限<br>
内部I/O参数
记录要传输的数据量、源(或目标)数据的地址、文件的输入/输出偏移量<br>
信号处理数组
指示在接收到每一种信号时的处理方式<br>
系统区表
区的类型和大小
区的状态
锁住
请求中
装入中<br>
有效(区以装入内存)<br>
区在物理存储器中的位置<br>
指向文件索引节点的指针
进程区表
进程调度信息
进程状态
进程优先级
相关信息<br>如:已等待、已执行的时间总和等信息
触发状态转换的事件
进程控制信息
程序和数据的地址
进程同步和通信机制
资源清单
链接指针<br>注:指向链表中下一PCB的首地址
进程镜像<br>Process Image<br>
寄存器上下文
程序寄存器
处理机状态寄存器
栈指针
通用寄存器
进程状态
创建状态
进程以获取PCB及标识等信息,但未获得内存等资源
就绪状态<br>(Ready)
准备就绪,但未获得CPU执行资源
就绪队列
处于就绪状态等待获取CPU执行资源的进程队列
阻塞状态
挂起状态
终止状态(僵尸)
进程停止并已释放资源但状态信息有待提取
进程控制
1、对进程的创建、撤销、运行协调、运行状态转换、信息交换等进行管理<br>2、为进程创建、撤销线程
fork调用
为新进程分配一个进程表和进程标识符
检查同时运行的进程数目是否超过限制
拷贝父进程表中数据到子进程表中,并置状态为“创建”<br>
继承父进程的所有文件
继承父进程上下文的静态部分,并创建上行下文的动态部分
子进程执行并将U区计时字段初始化为0<br>
exec调用
检查可执行文件
回收进程原有的存储空间
重新分配存储空间
将命令参数拷贝到栈区<br>
exit调用
关闭软中断<br>
回收资源<br>
将记账信息写入全局记账文件<br>
置进程状态为“僵死”状态
wait调用
用于将调用进程挂起,直至其子进程因暂停或中止而发来软中断信号为止<br>注:wait挂起进程释放资源,sleep进程睡眠不释放资源
进程优先级<br>
核心优先级
可中断优先级
等待输入
等待终端输出
等待子进程退出
不可中断优先级
Swap
等待磁盘I/O
等待缓冲区
用户优先级
优先数=最近CPU使用时间/2 + nice值<br>
0级最高,n级最低
进程同步
原则
空闲让进
当临界资源处于空闲状态时,允许请求进入临界区的进程进入自己的临界区
忙则等待
当临界资源正被访问时,请求进入自己临界区的进程需等待以保证临界资源的互斥访问
有限等待
对请求访问临界资源的进程,保证在有限时间内进入自己的临界区,防止陷入“死等”
让权等待
当进程无法进入自己的临界区应立即释放处理机,以免陷入“忙等”
方式
信号量<br>Semaphore
锁<br>Lock
管程<br>Monitor
进程/线程调度
高级调度<br>High Level Scheduling
低级调度<br>Low Level Scheduling
抢占式<br>Preemptive Mode
基于一定规则的,以争抢的方式获得处理机的使用权
非抢占式<br>Nonepreemptive Mode
进程执行完才释放处理机,除非因某事件使进程放弃处理机
中级调度<br>Intermediate Level Scheduling
死锁<br>Dead Lock
产生的必要条件
请求和保持条件
进程已获得一个资源,同时请求其他资源,但其他资<br>源已被占用,此时进程阻塞但是不会释放已获得的资源
不剥夺条件
进程已获得的资源未使用完之前不能被剥夺
环路等待条件
必然存在进程-资源环形链<br>P0...Pn以单向链路的形式请求另一个进程的资源
存储器管理
<b>目的:</b>为程序运行提供环境,提高存储器利用率,逻辑上扩充内存
内存分配
目的:用于记录内存空间的使用情况,作为内存分配的依据<br>按照一定的内存分配算法为程序分配内存空间<br>对使用完成的内存进行回收<br>
存储管理方式
单一连续分配
固定分区分配
动态分区分配
伙伴系统
哈希算法
可重定位分区分配
交换区<br>Swap
虚拟存储器
指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统<br>
特征
可将作业多次调入内存
可将作业置换出内存
逻辑上扩充内存容量
内存保护
确保各个程序都仅在自己的内存空间中运行,互不干扰
保护机制:设置两个界限寄存器,分别用于存放正在运行程序的上界和下界
<b>地址映射</b>
Notions: <br>1、源程序进过编译后生成目标程序,目标程序经过链接形成可装入程序。<br><b>程序的地址</b>从“0”开始,程序中的其它地址都是相对于起始地址计算的。<br>这些地址称为<b><font color="#c41230">逻辑地址</font></b>,其形成的<b>地址范围</b>称为<b><font color="#c41230">地址空间</font></b>。<br>2、内存中一系列<b>单元的地址</b>称为<b><font color="#c41230">物理地址</font></b>,其所限定的<b>地址范围</b>称为<b><font color="#c41230">内存空间</font></b>。<br>3、使用重定位寄存器进行地址转换
将<b><font color="#c41230">地址空间</font></b>中的<b><font color="#c41230">逻辑地址</font></b>转换为<b><font color="#c41230">内存空间</font></b>中对应的<b><font color="#c41230">物理地址</font></b>
内存扩充
利用虚拟存储技术,从逻辑上扩充内存容量
<b>请求调入</b>:允许在装入部分程序和数据的情况下启动<br>程序运行,并在后续运行中继续调入部分程序和数据
<b>置换</b>:当内存空间不足时将暂时闲置的程序与数据<br>调至磁盘上以腾出空间,将需要的程序与数据载入
文件管理
文件存储空间
文件目录
为每个文件建立一个<b>目录项</b>
目录项:文件名、文件属性、文件在磁盘上的物理地址等
数据一致性
事务
特性
原子性<br>Atomicity
一致性<br>Consistency
隔离性<br>Isolation
持久性<br>Durability
检查点<br>Check Point