进程、线程、管程与协程

1.进程

1) 什么是进程

程序:就是一个指令序列
进程:是动态的,是程序的一次执行过程 {PCB、程序段、数据段三部分组成了进程实体(进程)} 进程是资源分配的基本单元
PCB:进程控制块,系统为每个运行的程序配置了一个数据结构,用来记录进程的各种信息,是进程存在的唯一标志,是给操作系统用的。

2) 进程的状态和转换

三种基本状态:运行态(占有CPU,并在CPU上运行)、就绪态(已经具备运行条件,但没有空闲的CPU,而暂时不能运行)、阻塞态(因等待某一事件而暂时不能运行)
在这里插入图片描述
3) 进程控制

本质:实现进程状态转换 利用原语实现;
原语:原子性,执行过程不允许被中断(运行在核心态)

4) 进程通信
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立;为了保存安全,一个进程不能直接访问另一个进程的地址空间。

  • 共享存储:两个进程对共享空间的访问必须是互斥的

  • 管道通信:其实就是在内存中开辟一个大小固定的缓冲区(半双工通信,各进程互斥访问管道、如果没写满,就不允许读;如果没读空,就不允许写;读进程最多只有一个)

  • 消息传递:以格式化的消息为单位,利用原语进行数据交换

  • 消息队列(Message Queue)

  • 套接字(Socket)

2.线程

引入线程以后,线程成为了程序执行流的最小单位 是CPU调度的基本单位

3.管程

信号量机制的引入解决了进程同步的描述问题,但信号量的大量同步操作分散在各个进程中不便于管理,还有可能导致系统死锁。所以把所有进程对某一种临界资源的同步操作都集中起来,这里简记为A(所有进程对另一种临界资源的同步操作都集中起来记作B)。管程相当于围墙,它把共享变量和所有进程对共享变量的同步操作(A,B等等)围了起来,所有的进程要访问临界资源时,都必须经过管程才能进入,而管程每次只允许一个进程进入管程,从而实现了进程的互斥。

管程是为管理临界资源而建立的,被进程调用,管程和调用它的进程不能并行工作。

4.协程

协程,是一种比线程更加轻量级的存在,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)。

协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其它地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

协程在子程序内部是可中断的,然后转而执行别的子程序,在适当的时候再返回来接着执行

协程的特点在于是一个线程执行,那和多线程比,协程有何优势?

  • 极高的执行效率:因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显;
  • 不需要多线程的锁机制:因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。

5.进程和线程之间的区别和联系

区别:

  • 进程是对运行时程序的封装,是系统进行资源分配和调度的基本单元,而线程是进程的子任务,是CPU分配和调度的基本单元;

  • 一个进程可以有多个线程,但是一个线程只能属于一个进程;

  • 进程的创建需要系统分配内存和CPU,文件句柄等资源,销毁时也要进行相应的回收,所以进程的管理开销很大;但是线程的管理开销则很小;

  • 进程之间不会相互影响;而一个线程崩溃会导致进程崩溃,从而影响同个进程里面的其他线程;

联系

  • 线程是存在进程的内部,一个进程中可以有多个线程,一个线程只能存在一个进程中;
  • 资源分配给进程,同一进程的所有线程共享该进程的所有资源;
  • 处理机分给线程,即真正在处理机上运行的是线程;
  • 不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行;

参考:
https://blog.csdn.net/daaikuaichuan/article/details/82951084?spm=1001.2014.3001.5502
https://blog.csdn.net/weixin_41539756/article/details/95305926

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值