读书笔记:操作系统概念 - Chapter4-6 - Threads,CPU Scheduling
2017-03-15 16:22
471 查看
4.线程
线程的创建
A context must be created, including a register set storage location for storage during context switching, and a local stack to record the procedure call arguments, return values, and return addresses, and thread-local storage.进程的两个角色
1.resource ownership–virtual address space to hold the process image2.execution—follows an execution path (also called instruction 序列?)
进程和线程
进程:资源所有者
have a virtual address spaceprotected access to resources
线程:unit of execution
an execution state (running, ready etc.)Save thread context
static storage for local variables (stack per thread)
individual access to resources
每个Thread都有自己的stack, register, PCB。
以Windows XP线程为例,它具有:
- thread id
- register set
- stacks
- private data storage area
其中,
register set,
stacks,
private storage area组成了线程的上下文(context)。
Multithreading
优势
提高响应速度实现线程之间的资源共享
创建线程比创建进程更加经济,节省分配内存和资源的overhead。
发挥多处理器的性能。多个线程可以在多个处理器上并行运行。
用户进程
由thread library管理的、user-level的进程。主要有:
POSIX Pthreads
Win32 threads
Java threads
Thread Library的实现方式
完全在用户空间实现,不使用内核支持。implement a kernel-level lib. supported by the OS.
多线程模型
多对一(JAVA,Solaris Green)
多个用户线程链接一个内核线程。由内核线程等待CPU时间,获得后分配给用户线程。好处:容易实现。可以通过只修改thread library来控制线程优先级从而分配CPU时间。
坏处:
1. 当某个用户线程发出阻塞的system call时就会阻塞。
2. 即使在多处理器环境下也无法实现多线程并行。
一对一(Windows, Linux)
好处:当前线程阻塞时可以创建别的线程执行,不会阻塞;可以实现多处理器上的多线程并行。坏处:overhead太高。
多对多
好处:用户可以创建任意多线程。也可以实现多线程并行。也不会阻塞。拓展:Two-level Model
允许多对多,也允许一个或多个用户线程只绑定一个内核进程。
HyperThreading
在nanosecond级别上进行线程切换。
线程池 Thread Pools
在进程启动时就创建大量线程并放置在pool中,让它们等待被唤醒。当一个线程完成了它的工作,就回到pool中继续等待。
优点
用已存在的线程提供服务比创建线程要快。pool控制了服务的规模。
5. CPU调度
CPU Scheduling 是多道程序(multiprogrammed)操作系统的基础。什么是Multiprogramming
多道程序 是指多个进程可以同时运行,多个进程根据一定的调度策略轮流使用CPU。它的目标在于最大化CPU的使用(Maximum CPU utilization)。
影响调度策略的因素:Burst Cycle
进程的运行是由一连串的CPU burst和I/O burst组成的。每个进程都由CPU burst开始,由CPU burst结束。根据统计结果,总体上大部分的都是较短的CPU burst,长的CPU burst比例较少。
一个 I/O bound的程序会有很多短的CPU burst;而一个 CPU bound的程序会有一些长的CPU burst。
每个程序的CPU burst的不同比例影响了CPU调度策略。
CPU调度的执行者:CPU scheduler
CPU scheduler(short-term scheduler)在CPU空闲时,从就绪队列(ready queue)中选择一个进程,将CPU资源分配给它。CPU调度发生的场景
1. 某个进程 从running切换到waiting(如等待IO操作时)
2. 某个进程从running切换到ready(发生IO中断;时间片到期)
3. 某个进程从waiting到ready(IO操作完成)
4. 进程终止(Terminates)
其中1&4属于非抢占式调度,2&3属于抢占式调度(preemptive)。
非抢占式调度
cpu会被当前进程一直占用,直到进程终止释放CPU,或者进程切换到waiting状态。CPU scheduler重要组成:Dispatcher
Dispatcher是将CPU的控制权移交给被选中的进程的模块。它有以下功能:
- Switching Context(保存&恢复现场)
- 切换到用户模式
- 根据PC 的值,跳到重启程序的正确位置。
Dispatch latency:从暂停一个进程到启动另一个进程所需时长。
调度准则 Scheduling Criteria
CPU utilization
CPU使用的百分比。Throughput:吞吐量
单位时间内完成执行的进程数量。Turnaround Time 轮转时间
一个进程的submission到它的完成所需的时长。Waiting time
进程在就绪队列中等待的总时长。Response time
进程从submission到第一次响应的时间。CPU uitilization和throughput都应该越高越好,其他越低越好。
调度策略 Scheduling Algorithm
FCFS:First-Come, First-Served 先到先得
该策略的进程平均等待时间会受到进程的CPU burst time的极大影响。若一个大进程排在首位,会出现车队效应(convoy efect),小进程要等大进程的完成,等很久。这会降低CPU和设备的使用率。
SJF:Shortest-Job-First 最短优先
它有两种实现方案:1. 非抢占式:正在使用CPU的进程不会被抢占。
2. 抢占式:如果一个新到达的进程需要的CPU burst长度小于当前进程剩余的执行时间,当前进程就会被强占。这个方案也叫SRTF(shortest-remaining-time-first)最小剩余优先。
该策略对于一组已知执行时长的进程花费的平均等待时间是最小的,因而是最优策略。
但实际情况中,进程的长度往往是未知的,需要进行预测(predict)。
Priority Scheduling 优先级
也分为两种实现:抢占式&非抢占式。Starvation问题
指在该策略下低优先级的进程可能永远不会被执行。解决:Aging。让进程的优先级随等待时间变长而提高。
RoundRobin(RR)轮转法
每个进程都执行指定时长,这个时长称为time quantum,时间到了就要移到就绪队列的尾部(当然,若当前进程在time quantum内执行完毕,则调度器会选择下一个进程)(此时也会发生context switch)。若有n个进程,time quantum为q,则进程最大等待时间为q*(n-1)。
该策略的性能基本由q的取值决定。若q太大,RR就会退化成FCF
bc4f
S。
若q太小,上下文切换太多,overhead太高。
应该选择恰好大于较高频率出现的CPU周期的长度,让大部分进程能在一个time quantum 内完成CPU burst。
该策略中进程的轮转时间可能大于SJF,但进程的响应更频繁。
更复杂的Multilevel Queue Scheduling
基本概念:将进程分类。比如,根据响应时间的要求分成foreground/interactive和background/batch。foreground进程的优先级比background的高。这之后,将就绪队列 分成多条不同的队列。每个进程所处的队列是固定的,不同的队列使用不同的调度策略。比如,foreground进程的队列使用RR,以获得更好的响应;而background 进程的队列使用FCFS,以保持稳定。
队列之间也要排序,通常以priority作为标准,使用Fixed priority scheduling。当然,该策略也可能出现starvation的问题。
另外一个队列调度(排序)的策略是time-slice。每个队列分配到固定的CPU时间,队列将这些时间分配给进程。
Multilevel Feedback Queue
指一个进程可以在多个队列中进行移动。这个策略也可以作为Aging的一个实现。它有多个属性:
队列的数量;
每个队列各自的调度策略;
将队列upgrade(升级)或demote(降级)的策略;
为进程选择队列的策略。
它的核心思想是根据进程的CPU burst来将进程分类。使用CPU较频繁的进程,会被移动到低优先级的队列中。这是为了让那些CPU burst较短的进程能够快速地在较短的CPU时间(某个给定的time quantum )内执行完毕,从而达到更高的吞吐量。
而等待时间过长的进程也会被移动到高优先级的队列中。
Real-Time Scheduling 实时调度
Hard real-time systems在该类系统中,某些任务被硬性要求在给定时间内完成,如导弹发射的轨道计算。
Soft real-time computing
只能保证某些重要进程的优先级较高。
Thread Scheduling
Local Scheduling –How the threads library decides
which thread to put onto an available LWP
由线程库进行的对线程的调度。
Global Scheduling – How the kernel decides which
kernel thread to run next
由内核执行的对内核线程的调度。
示例:Windows XP:多任务·抢占式调度
对于实时任务(real-time)进程,它们拥有高于其他所有进程的优先级。相关文章推荐
- 操作系统概念 --- 读书笔记 第5章:CPU调度
- [操作系统概念]第三部分——CPU调度
- 操作系统概念学习笔记三 cpu调度算法
- 嵌入式操作系统的基本概念_读书笔记_1
- 操作系统概念--读书笔记之第一章导论(一)
- 操作系统概念 --- 读书笔记 第12章:磁盘调度
- 线程的概念-操作系统读书笔记
- 操作系统概念 --- 读书笔记 第6章:进程同步
- 手机操作系统知识整理(一):CPU相关概念详解
- 读书笔记之:操作系统概念(第6版)-第一部分 概述(导论,计算机系统结构,操作系统结构)
- 深入解析Windows操作系统(Windows Internals) 4th Edition 读书笔记 - 第一章 概念和工具(一)
- 读书笔记之: 操作系统概念(第6版)-第三部分 存储管理2(文件系统接口, 文件系统实现)
- 操作系统概念学习笔记 10 CPU调度
- 读书笔记 - 深入解析Windows操作系统 - C1. 概念和工具
- 读书笔记之: 操作系统概念(第6版)-第四部分 IO系统(I/O系统, 大容量存储结构)
- 读书笔记之: 操作系统概念(第6版)-第五部分 分布式系统(分布式系统, 保护与安全)+历史概览
- 操作系统概念 --- 读书笔记 第3章:进程
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Windows 2000
- 操作系统概念(第六版) 读书笔记6
- 读书笔记之: 操作系统概念(第6版)-第七部分 案例研究-Windows XP