OS Chapter 2 Processes and Scheduling

  • 进程描述与控制
  • 互斥与同步
  • 死锁与饥饿
  • 生产者与消费者问题;读者写者问题;哲学家用餐问题;
  • 进程通信;
  • 进程调度;

 

 进程描述与控制

进程映像:即逻辑进程; (Process image)

Process Control Primitives(原语):一些最基本的程序段,且不可以被中断(系统提供的).

Block数据结构; PCB块即数据结构;

 

OS提供的主要功能:

交替执行多个进程使处理器的利用率达到最大,同时提供合适的响应时间(交互式系统);

分配资源;

 

  • 程序顺序执行的特点:

  顺序性,封闭性,可再现性;

  • 并发执行的特点:

  间断性,非封闭性(),不可再现;

  • 并发执行的条件

  (事务处理) R(p1)&W(p2)|W(p1)&R(p2)W(p1)&W(p2) = {}; 即两个进程间的读写操作不难存在交集

 

进程 task:

Dynamic

Concurrency

Independent

Asynchronous

 

进程结构

程序,数据,PCB

 

进程5状态:

新的, 退出, 就绪, 等待, 执行

Runing: 正在执行(操作系统只能从就绪进程中选择一个进程执行)

Ready:准备执行

Blocked:等待某事件发生才能执行如I/O完成

New:已经创建,但还没被OS接纳为可执行进程

Exit:僵死状态

 

进程7状态:

New, exit, running, blocked, ready, blocked suspended, ready suspended

Swapping对换技术-- 把暂时不运行的进程或暂时不用的数据和程序Swapping out 以腾出一些内存空间, 相反则是Swapping in(换进换出)

进程挂起(Suspended):(进程挂起与阻塞不同, 一个在内存一个不在内存中) 将进程从内存换出到磁盘上会变成挂起状态,以释放内存空间

挂起进程的特征

  • 不能立即执行
  • 挂起前是阻塞时,如果阻塞条件与挂起条件独立,则即使阻塞事件发生,该进程也不能执行
  • 使之扶起的进程有:自身,父进程,OS
  • 只有扶起它的进程才能使它转换成其它状态

挂起与阻塞区别:

  • 只是优先挂起阻塞进程
  • 挂起:是否在内存
  • 阻塞:是否在等待事件发生

 

处理器可调度执行的进程有两种

  • 新创建的进程
  • 换入被挂起的进程(优先考虑)

 

OS通过不同的表来管理资源:

  • 内存表: 内存分配情况,外存分配情况;访问共享内存的保护信息;虚拟内存管理信息;等
  • I/O表: available or assigned; I/O操作状态; I/O传输的起始位置;等
  • 文件表: 存在的文件; 外存的位置; 当前状态; 属性; 文件管理系统;
  • 进程表: 进程的位置; 相关属性:ID, 状态, 内存位置; PCB; 进程映像(进程逻辑上的所有信息);

 

PCB:控制和管理进程的基本结构;

  • ID:进程ID, 父进程ID,用户ID;
  • 可见寄存器
  • 控制状态寄存器:程序计数器, 条件码, 状态信息(中断, 可用/不可用标记等)
  • 堆栈指针
  • 调度和状态信息:当前状态, 优先级, 与高度算法相关的信息, 事件
  • 进程间的关系信息
  • 进程间的通信:标记,信号,消息
  • 进程保护
  • 内存管理信息:如何划分:分段还是分页(segment, page)
  • ...

 

OS Kernel 的功能 (OS如何实现这些功能的?)

资源管理

进程管理: 创建, 终止, 调度,状态转换, 同步, 通信, 管理PCB

内存管理: 为进程分配地址空间,对换, 段/页管理

I/O管理: 缓冲管理,为进程分配I/O

支撑功能

中断, 时钟管理,  原语, 统计, 监测, 挂起与激活

 

原语

切换

  • 时间片结束中断
  • I/O中断
  • 存储访问失效
  • Trap

切换过程: 保存进程上下文, 将对应的PCB到对应的队列, 选择另一个进程执行, 更改执行的PCB, 更改内存, 恢复执行的进程状态

模式切换:进程内部执行,执行系统调用,从用户态到系统态,再回到用户态;不一定有进程切换;

进程切换中有模式切换;

 

创建进程(原语)

步骤

  • 分配ID
  • 为进程分配空间:用户地址, 栈, PCB, 链接共享空间;
  • 初始化PCB
  • 建立链接: 连接到相应的队列
  • 建立其它数据结构

 

终止进程(原语)

步骤

  • 根据进程ID,找到PCB,读取状态
  • 如果为执行状态,终止执行
  • 如果是子孙进程,则终止所有子孙进程
  • 将该进程的所有资源归还给父进程或是OS
  • 将终止进程的PCB从队列中删除,可能会成为僵死进程,等待被收集数据

 

阻塞进程(原语)

步骤(一对原语,要成对使用)

阻塞原语

  • 出现阻塞事件,进程调用阻塞原语将自己阻塞,进入阻塞状态和相应的队列

唤醒原语

  • 当事件完成时,相关进程调用唤醒原语将进程唤醒,进入就绪队列

 

挂起与激活

挂起原语

  • 系统利用挂起原语将指定进程或阻塞进程挂起

激活原语

  • 将进程从外存换入内存, 插入相应队列

 

线程

进程是资源分配单位,线程不要去分配与释放这些资源,减小系统开销, 线程是最小的调度单位,无需申请资源,只是去共享进程的资源

 

特点

  • 也有相应的状态
  • 切换线程时也有上下文, 会被保存, 恢复
  • 有自己的堆栈
  • 有少量的私有局部变量空间

 

优点

  • 更少的创建时间: 更少的资源, 无需分配地址空间等
  • 更少的终止时间: 终止线程无需释放进程内的共享资源
  • 更少的上下文切换时间(同一进程内的线程切换)
  • 共享进程的内存, 文件, 线程间通信无需OS内核参与(用户级切换), 没有模式切换,减小开销

挂起一个进程会挂起里面的所有线程

 

用户级线程

  • 内核中没有TCB
  • 线程管理在用户级管理
  • 相关描述,  控制原语在用户态下完成

内核级线程

  • 内核中创建线程和管理TCB
  • 调度是基于线程本身
  • 描述与控制的原语是在核心子系统中实现

 

进程调度

按调度层次划分:长程调度(Long-term),中程调度(Mid-term),短程调度(short-term);

长程调度(Long-term):即高级调度、作业调度,只有在支持作业的系统里(批处理系统)才有,为被调度作业或用户程序创建进程,分配必要的系统资源,并将新进程插入到就绪队列等待短程调度。(PC系统里没有作业调度)

中程调度(Mid-term):调度换出到磁盘上的进程到内存进行执行(换入),配合对换技术使用(可能会有多个进程被调度)。

短程调度(short-term):即进程调度或低级调度,调试就绪状态的进程执(只有一个进程被调度)。

 

对调度的要求

  • 面向用户

响应时间(提交命令到产生结果,产生第一个响应的时间);

周转时间(进程从提交到进程到完成所有时间之和包含:进入内存、队列等待时间、CPU上执行、I/O时间);

截止时间:必须开始的时间或必须完成的时间;

  • 面向系统

吞吐量(批处理系统):单位时间内完成的进程数量;

处理器利用率:CPI忙碌的比例,有效的和高效的使用;

资源的平衡使用:

公平性:没有进程处于饥饿状态

调度算法

FCFS:对短进程不公平,一般系统很少使用单独的FCFS算法,而与混合其它算法使用。适用于CPU繁忙的系统,进程一直执行直到阻塞或结束;

SJF:最短作业优先

轮转法:用于分时系统,类似于FCFS,增加了抢占与切换进程,为CPU分配时间片;(主要为响应时间)

优先级队列:先执行优先级高的进程;可能会出现饥饿进程,可以采用动态改变优先级,进程随时间增加优先级提高。

 高响应比优先:实际中很难实现(不能每次调用都计算,也很难确定时间)

 

抢占(Preemptive):可以被中断,回到下一次调用,可以及时处理高优先级的进程,主要用于实时性要求高的实时系统;

非抢占:主要用于批处理系统;

 

实时调度

结果与时间都非常关键;实时响应外部事件;

实时系统

确定性:在时间点或是某时间段内完成;对于外部操作有一个确定的延迟响应它的中断;

响应性:获得中断后处理中断所用的时间;

 

中断处理时会屏蔽其它中断,但如果这样就无法做到实时性,Linux对此进行了改进,支持实时任务。

Linux:中断处理

  • top: 收中断,分析哪类中断(无法接收新的中断)
  • bottom:中断处理全程,(重新开始接收新的中断)

 

实时操作系统

  • 快速切换
  • 对外部响应快
  • 文件(数据)存储速度快
  • 基于优先级的抢占方式
  • 固定延迟要求

实时调度

  • 实时调度
  • 截止时间调度

时间片轮转:秒级;

基于优先级的非剥夺调度(实时任务放到队首):数百毫秒~数秒;

基于优先级的剥夺调度(在可以被剥夺的时间点):几十毫秒或几毫秒;

立即剥夺调度(只要不在临界区):几百us;

静态表驱动调度法(根据表来决定下一个执行行哪个任务):用于调度周期性的实时任务;(非实时多道系统)

静态表优先级调度

动态优先级高度

截止时间调度:最早截止时间优先调度,降低截止时间错过;

 

posted on 2014-10-30 22:47  He2Li  阅读(90)  评论(0)    收藏  举报