进程、线程、协程

进程是资源分配的基本单位,是一个程序的执行过程,程序是静态的,进程是动态的,它有着创建、就绪、运行、堵塞、结束的状态,还有就绪挂起、阻塞挂起的状态(这是因为内存中就绪队列和阻塞队列满了,需要将一些不常用的进程交换到磁盘,在操作系统中,因为是部分原则,因此会将部分页交换到磁盘,当需要用的时候才通过io swap回内存(页面置换),这期间又涉及到预读失效、缓存污染、lru、lfu、页调度算法)。每个进程都有自己对应的PCB(进程描述信息、进程控制和管理信息、资源分配清单、cpu相关信息),里面就是它的各种信息,包括分配的资源()

线程是cpu调度的基本单位,有自己独立的栈和寄存器。共享进程的代码段、数据段、文件资源、页表等。

线程被划分分内核线程和用户线程,而用户线程就是轻量级线程也就是协程。

为了使cpu时刻都在共作,提高它的使用率,因此出现了进程的概念,当一个进程堵塞时,cpu不会干等着,而是会通过操作系统进行进程间的调度,提高cpu的工作效率。然而进程创建时所需要的资源太多了,进程间切换花销太大,因此科学家想在进程中再做点事情,线程出来了,一个进程可以拥有多个线程,因此线程就是轻量级进程,同一个进程中的线程可以共享进程的页表、数据段等资源。每一个线程也会有唯一的一个TCB来表示自己,它等同于PCB也需要记录自己的工作信息,以用来进行工作的切换调度,因为线程可以共享进程中的某些资源(临界区),因此就会有多个线程同时竞争某一个资源的时候,这个时候需要信号量机制或者锁机制来同步资源情况。而在cpu调度线程的时候还是会有着内核态和用户态之间的切换,这也会导致一定的开销,这个时候。协程(用户态线程)出现了,协程的调度只会出现在用户态空间中,用户态不需要操作系统的干预,完全是由用户操作的,同时它也有自己的寄存器上下文和栈,一个线程也可以拥有多个协程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值