Q1:进程的概念
系统进行资源分配和调度的一个可并发执行的独立单位
Q2:进程的特性
动态性、并发性、独立性
Q3*:进程的组成
代码段:或叫共享正文段,在多个程序间可以实现共享。含代码和不变的数据。
进程控制块(PCB):I/O控制表、进程控制表、存储控制表、文件管理表、资源管理表、标识信息(PID、UID)【PCB分为常驻内存&交换区的】
数据上下文:
- 用户层:
- 数据区:外部变量和静态变量
- 工作区:即栈,包含局部变量,函数调用的现场。
- 操作系统层:执行现场和核心栈
- 寄存器层:控制寄存器和数据寄存器。
Q4:5(7)状态转换图
新建态的作用:便于限制进程数量(在辅存里面)
终止态的作用:便于其他应用程序分析统计操作系统的性能


导致挂起的原因:1、内存不足时,把部分阻塞进程交换到交换区;2、程序调试;3、周期较大的可预期进程、如审计及监控进程;4、父进程由于协调等原因,要求子进程挂起;5、其他OS原因,例如,挂起后台进程、挂起怀疑有问题的程序等。
两个挂起状态的好处:仅一个挂起态时,挂起的进程都是阻塞的,再次调度到内存时,要立即评估其是否已经获得所需资源。两个状态可以仅仅把挂起/就绪进程调度进内存,因为其已经获得了资源,不需再进行评估。
Q5: 进程创建的时机和过程
用户登录、程序运行、操作系统服务、批处理命令
- 为新进程分配唯一的进程标识号
- 为新进程分配PCB
- 分配进程各部分映像所需的内存空间
- 初始化进程控制块 进程的运行状态一般初始化为就绪状态 设置PC(程序计数)/SP(栈指针)
- 创建新进程系统映象
Q6: 进程的调度的时机
时钟中断(时间片用完)、I/O中断、缺页异常、软中断、系统调用
Q7:常用调度算法(公平性、针对性)
FCFS(不可剥夺)
时间片轮转RR(剥夺式、适合交互式分是系统)
SPN(最短优先)(非抢占、对对短进程有利)
SRT(预期最短剩余时间)(抢占)
HRRN(响应比最大)R=(w+s)/ s
w:等待处理的时间、s: 期待服务的时间
优先级调度:I/O繁忙进程获得CPU优先、系统优先、短作业优先、用户交互优先、等待长的优先
Feedback调度策略:系统中为各个队列中的进程分配的时间片大小不同,优先级最高的时间片最短,从优先级最高到优先级最低的队列其时间片依次增加。 一个新进程进入系统中时,被置于优先级最高的第一个就绪队列尾(首)部。没有完时间片,因资源等待转变为阻塞状态。待等待完成转为就绪态时,仍回原来的优先级队列; 若时间片用完还未完成任务,则降低优先级,进入下一优先级就绪队列尾部。高优先级队列中来了新进程,则高优先级进程抢占当前运行进程的处理机。被抢占进程仍在原就绪队列(抢占时机为时间片结束时)。
实时调度
静态表驱动(static table-driven scheduling) 用于周期性任务
静态优先级驱动抢占调度(static priority-driven preemptive scheduling) 速率单调算法:优先级最高的任务是周期最短的任务
基于动态规划的调度(dynamic planning-based scheduling)
动态尽力调度(dynamic best effort scheduling) 时限调度算法
最早截止时间优先调度:完成最后期限的最早最后期限调度
最小松弛时间优先调度:有启动最后期限的资源空闲时间调度(最晚启动时间):当前到截止时间的时间长度,减去处理事件所需要的时间。 选择松弛时间最小的进程占用CPU
Q8:什么是优先级逆转问题
T1:周期性地检查太空船和软件的状况 T2:处理图像数据 T3:临时地检测设备的状态 优先级:T1 > T2 > T3 依赖关系:T1 和 T3互斥地访问一个资源。如果T3占着资源,T1就没办法抢占
解决办法:
- 优先级低的任务继承与它共享同一资源的优先级较高的任务的优先级
- 优先级与资源关联,每个资源都对应一个优先级。 调度器动态地将资源的优先级分配给使用该资源的任务。 任务结束时,优先级恢复原来的值
Q9:紧耦合和松耦合的多处理器系统
松散耦合多处理器系统: 每个CPU拥有自己的主存和I/O通道
紧密耦合多处理器系统: 各个CPU共享主存和I/O通道
Q10: 多处理器进程调度
负载共享调度算法(选择一个就绪线程占有处理器运行。先来先服务 最少线程数优先 最少线程数优先(可抢占))
群(组)调度算法(把一组相关进程在同一时间一次性调度到一组处理器上运行)
处理器专派调度算法(给一个应用专门指派一组处理器,一旦一个应用被调度,它的每个线程被分配一个处理器并一直占有处理器运行直到整个应用运行结束。)
动态调度算法(CFS:vruntime)
Q11: PCB组织方式
对PCB的操作,遍历所有进程 根据PID查找进程 根据UID查找进程 查找就绪状态进程(调度时) 查找阻塞状态进程(事件发生时) 根据父子关系查找进程(UNIX/Linux)
组织方式: 链接所有PCB 的双向链表 ( #ps cmd) 根据进程 ID查找的Hash链表 根据进程优先级组织的ready链表 父子关系链表 阻塞进程链表 执行进行链表
Q12:模式切换
从核心态到用户态的转换是由操作系统程序执行后完成的,而用户态到核心态的转换则是由(硬件 )完成的。
发生模式切换并不一定发生进程切换;发生进程切换时,必然伴随着模式切换,因为,进程切换是核心功能,无法在用户模式下完成。
Q13: 线程
把进程视为资源分配的基本单位,把进程内部的每个执行线索看作是调度和执行的基本单位
Q14:多线程编程
用户级多线程(一个阻塞其他都G;不需要模式变换)

内核级多线程
混合级
2703

被折叠的 条评论
为什么被折叠?



