计算机进程和线程

一、进程

从系统层面看就是系统调用资源的最小单位,换句话就是手机上跑的App就是一个进程。

如果频繁切换不同App 会让用户感觉到他们都是在同时运行的,其实不是这样,本质上CPU给不同进程分配了很短的时间去运行,机会让用户有这样的错觉。

进程之间切换上下文会耗时很多的原因是寄存器(CPU里的一个flash)和程序计数(保存在当前指令的位置以及下一个指令的位置),就好比说开着BYD但是你还得开BMW,那么是不是得来回切换不同操作流程。进程是内核管理和调度。准备-运行-阻塞-运行-挂起。。。。

二、线程

线程就是进程当中一条执行流程,同一个进程多个线程之间可以共享代码段,数据段,打开文件等资源,但是每个线程都有独立一套寄存器和栈,以确保线程的控制流式相对独立的。

多线程的好处有就是一个进程可以同时存在多个线程,线程之间可以并发执行,线程之间可以共享地址空间和文件等资源。但是缺点就是一个线程出问题会影响其他关联线程。

线程上下文切换:

两个线程不属于同一个进程,则切换过程和进程上下文切换一样的代价。

当两个线程属于同一个进程,因为虚拟内存是共享的,上下文切换时,只需要切换私有数据,寄存器等不共享的数据。

线程有三种:

用户线程:用户态线程。

每个进程都需要有它私有的线程控制块(TCB)列表,用来跟踪记录它各个线程状态信息,TCB由用户级线程函数来维护;切换通过线程库函数来完成,无需用户态和内核态切换,速度快。

缺点:

  • 由于操作系统不参与线程的调度,如果一个线程发起了系统调用而阻塞,那进程所包含的用户线程都不能执行了。
  • 当一个线程开始运行后,除非它主动地交出 CPU 的使用权,否则它所在的进程当中的其他线程无法运行,因为用户态的线程没法打断当前运行中的线程,它没有这个特权,只有操作系统才有,但是用户线程不是由操作系统管理的。
  • 由于时间片分配给进程,故与其他进程比,在多线程执行时,每个线程得到的时间片较少,执行会比较慢;

内核线程:内核实现的线程。内核线程是由操作系统管理的,线程对应的 TCB 自然是放在操作系统里的,这样线程的创建、终止和管理都是由操作系统负责。一对一的关系,即一个用户线程对应一个内核线程。

某个内核线程发起系统调用而被阻塞,并不会影响其他内核线程的运行;给配给线程,多线程的进程获得更多的CPU运行时间。同时缺点也明显,内核来维护进程和线程上下文信息,线程的创建终止和切换都是通过系统调用的方式来进行,因此对于系统来说,系统开销比较大。

轻量级进程:内核中来支持用户的线程。

一个进程可有一个或多个 LWP,每个 LWP 是跟内核线程一对一映射的,也就是 LWP 都是由一个内核线程支持。用户线程和内核线程有多对一 一对一 多对多

三、调度程序

选择哪个进程功能在OS中完成

 

在进程的生命周期中,当进程从一个运行状态到另外一状态变化的时候,其实会触发一次调度。

比如,以下状态的变化都会触发操作系统的调度:

  • 从就绪态 -> 运行态:当进程被创建时,会进入到就绪队列,操作系统会从就绪队列选择一个进程运行;
  • 从运行态 -> 阻塞态:当进程发生 I/O 事件而阻塞时,操作系统必须另外一个进程运行;
  • 从运行态 -> 结束态:当进程退出结束后,操作系统得从就绪队列选择另外一个进程运行;

因为,这些状态变化的时候,操作系统需要考虑是否要让新的进程给 CPU 运行,或者是否让当前进程从 CPU 上退出来而换另一个进程运行。

另外,如果硬件时钟提供某个频率的周期性中断,那么可以根据如何处理时钟中断
,把调度算法分为两类:

  • 非抢占式调度算法挑选一个进程,然后让该进程运行直到被阻塞,或者直到该进程退出,才会调用另外一个进程,也就是说不会理时钟中断这个事情。
  • 抢占式调度算法挑选一个进程,然后让该进程只运行某段时间,如果在该时段结束时,该进程仍然在运行时,则会把它挂起,接着调度程序从就绪队列挑选另外一个进程。这种抢占式调度处理,需要在时间间隔的末端发生时钟中断,以便把 CPU 控制返回给调度程序进行调度,也就是常说的时间片机制
  • CPU 利用率:调度程序应确保 CPU 是始终匆忙的状态,这可提高 CPU 的利用率;
  • 系统吞吐量:吞吐量表示的是单位时间内 CPU 完成进程的数量,长作业的进程会占用较长的 CPU 资源,因此会降低吞吐量,相反,短作业的进程会提升系统吞吐量;                              
  • 周转时间:周转时间是进程运行和阻塞时间总和,一个进程的周转时间越小越好;
  • 等待时间:这个等待时间不是阻塞状态的时间,而是进程处于就绪队列的时间,等待的时间越长,用户越不满意;
  • 响应时间:用户提交请求到系统第一次产生响应所花费的时间,在交互式系统中,响应时间是衡量调度算法好坏的主要标准。

三、调度算法

先来先服务;最短作业优先调度;高响应比;时间片轮转调度;最高优先级,

多级反馈队列调度;

链接

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值