操作系统(进程调度、线程)相关知识点

1.线程

线程:现代计算机模型中CPU执行任务调度的最小单元;在操作系统中,线程是进程当中的⼀条执⾏流程。同⼀个进程内多个线程之间可以共享代码段、数据段、打开的⽂件等资源,但每个线程各⾃都有⼀套独⽴的寄存器和栈,这样可以确保线程的控制流是相对独⽴的。
在这里插入图片描述

1.1 线程私有空间

每一个线程都有其自己的栈空间:
在这里插入图片描述

1.2 POSIX线程函数

			为了实现可移植的线程程序,IEEE在IEEE 1003.1c中定义了线程的标准,它定义线程包叫

pthread,现在大部分UNIX系统都支持这个标准。

线程调用描述
pthread_create创建一个新线程
pthread_exit结束调用的线程
pthread_join等待一个特定的线程退出
pthread_yield释放CPU来运行另一个线程
pthread_attr_init创建并初始化一个线程的属性结构
pthread_attr_destory删除一个线程的属性结构

1.3 用户空间和内核空间的线程实现

在这里插入图片描述

1.4 用户线程和内核线程混合

        - 一对一
        - 一对多
        - 多对一

1.4.1 混合模式(多对一)

在这里插入图片描述

1.5 线程上下文切换

     - 当两个线程不是属于同一个进程,则切换的过程就跟进程上下文切换一样;
     - 当两个线程是属于同一个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据;

所以,线程的上下文切换相比进程,开销要小很多。

2.进程调度

调度程序:在多道程序操作系统中,通常会有多个进程同时竞争CPU计算资源,只要有2个或2个以上的进程处于就绪状态,就会发在调度问题,为了完成这一调度任务,操作系统提供了一套程序逻辑支持,叫做调度程序,使用的算法称之为调度算法

2.1 调度原则

     - CPU利用率
     - 系统吞吐量
     - 周转时间
     - 等待时间
     - 响应时间

2.2 进程调度算法

非抢占式调度:CPU执行进程运行直到被阻塞,或者直到该进程退出,才会调用另外一个进程。
抢占式调度:CPU采用时间片机制,进程只运行某段时间,如果在该时段结束时,该进程仍然在运行时,则会把它挂起,接着调度程序从就绪队列挑选另外一个进程运行。

2.2.1 先来先服务

属于非抢占式算法,进程按照他们请求CPU的顺序来进行依次排队执行,这种算法最易理解,但是缺点较多,CPU的利用率不高。

2.2.2 最短作业优先 SJF(饥饿问题)

在这里插入图片描述

2.2.3 轮转调度

这是一种最简单最公平的调度算法,但是有可能会存在问题。由于进程的切换,需要耗费时间,如果时间片太短,频繁进行切换,会影响效率。如果进程时间片太长,有可能导致排后面的进程等待太长时间。因此时间片的长度,需要有大致合理的数值。(《现代操作系统》的观点是建议时间片长度在20ms~50ms)

2.2.4 最短剩余时间优先

2.2.5 优先级调度

每一个进程都赋予一个优先级,优先级高的进程可优先运行,但是容易造成饥饿问题。

2.2.6 多级反馈队列

多级反馈队列调度基于时间片轮转和优先级调度,设置多个就绪队列,赋予每个就绪队列优先级,优先级越高的队列进程的时间片越短。第1级就绪队列优先级最高,进程的时间片长度最短,第2级就绪队列次之,以此类推。
在这里插入图片描述

2.2.7 多级队列、最短进程、保证调度、彩票调度、公平分享调度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Minor王智

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值