操作系统笔记六(线程管理和调度)

1.为什么提出线程
为了让实体之间可以并发执行
实体之间共享相同的地址空间
这个实体呢就是线程

2.线程(thread)的定义:进程当中的一条执行流程
进程由资源管理和线程组成
进程=线程+共享资源
线程的优点就是提出线程的目的
线程的缺点是:一个线程崩溃,会导致其所属进程的全部线程崩溃

进程和线程的比较
1.进程是资源分配单位,线程是CPU调度单位
2.进程拥有一个完整的资源平台,而线程只独享必不可少的资源
3.线程同样具有就绪,阻塞,执行三种状态
4.线程能减少并发执行的时间和空间开销

3.线程的实现
用户线程:OS看不到
OS不得参与用户线程的调度,
内核线程:OS能看到
用户线程的缺点:1.如果一个线程发起系统调用而阻塞,则整个进程在等待(因为OS看不到线程,只能理解进程,所以会将整个进程阻塞) 2.当一个线程正在运行时,除非他主动交出CPU使用权,否则他所在的进程当中的其他线程将无法执行
用户多线程时间可能会慢

内核线程:是在OS的内核中实现的一种线程机制,由内来完成线程的创建,终止和管理
在一个进程中,如果某个内核线程发起系统调用而阻塞,并不会影响其他内核线程的运行
时间片分配给线程,所以多线程就更多CPU时间

轻量级进程:OS控制的用户线程

7-11 (进程的)上下文切换
停止当前运行进程,并且调度其他进程
需要存储的上下文内容是 寄存器,CPU状态,等

进程控制-等待和终止进程
wait()系统调用时被父进程用来等待子进程的结束, 至于为什么要等待它的结束呢,就是
当子进程exit()以后 由OS通知父进程,去帮助子进程完成资源释放(尤其是PCB)

处理器CPU调度
不可抢占:调度程序必须等待事件结束
可以抢占:调度程序在中断被响应后执行
当前运行的程序可以被换出
当前的进程从运行切换到就绪,或者一个进程从等待切换到就绪

8.2 调度原则
执行模型:程序在CPU突发和I/O中交替
当一个程序I/O繁忙时切换到其他进程运行

FCFS先来先服务
优点:简单
缺点:平均等待时间波动较大
花费时间少的任务可能排在花费时间长的任务后面
可能导致I/O和CPU之间的重叠处理

SPN/SRT 短进程优先
选择下一个最短的进程(短任务优先) 按照预测的完成时间来将任务入队

可以是可抢占或者不可抢占的: 可抢占:最短剩余时间
平均等待时间最短
连续的短任务流会使得长任务饥饿
短任务可用时任何长任务的CPU时间都会增加平均等待时间

round robin:轮流占用CPU来执行
将上下文切换的开销控制在1%以内

CPU密集型任务的优先级下降很快(计算量大)
I/O密集型任务停留在高优先级(交互性高)

8.5 实时调度
定义:确保某些任务在规定时间内完成
强实时系统:需要在保证的时间内完成重要的任务,必须完成
弱实时系统:要求尽量完成,非必须

RM(rate monotonic)速率单调调度:通过周期安排优先级
EDF(earliest deadline first):最早期限调度 deadline越早优先级越高

8.6 多处理器调度和优先级反转
多处理器的CPU调度更加复杂:负载共享
对称多处理器:每个处理器运行自己的调度程序,且需要在调度程序中同步

发布了44 篇原创文章 · 获赞 9 · 访问量 3394

猜你喜欢

转载自blog.csdn.net/puying1/article/details/96726551
今日推荐