0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

总结进程、线程、进程池、同步、异步、并发、并行、串行

STM32嵌入式开发 来源:Shawn派大星 2023-02-09 14:52 次阅读

进程、线程

什么是进程?

开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程。

明白点: 当我们运行一个程序,那么我们将运行的程序叫进程。

精简重点

进程是申请一块内存空间,将数据放到内存空间中去,是申请数据的过程是最小的资源管理单元

进程是线程的容器

程序与进程的区别

程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中

进程是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程序的终止而销毁, 不会永久存在系统中

进程之间交互

进程之间通过 TCP/IP 端口实现

什么是线程

线程是操作系统能够进行运算调度的最小单位。

它被包含在进程之中,是进程中的实际运作单位。

一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

精简重点

是进程的一条流水线,只用来执行程序,而不涉及到申请资源,是程序的实际执行者最小的执行单元

线程之间交互

多个线程共享同一块内存,通过共享的内存空间来进行交互

进程与线程的关系

例子:

我们打开一个聊天软件,这就是开启了一个进程;当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置...,这些操作就是线程 所以可以说"进程"包含"线程","线程"是"进程"的子集

进程是线程的容器

工厂流水线例子:

fc954d02-a831-11ed-bfe3-dac502259ad0.png

fca5c1dc-a831-11ed-bfe3-dac502259ad0.png

进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。

线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。

进程要分配一大部分的内存,而线程只需要分配一部分栈就可以了.

一个程序至少有一个进程,一个进程至少有一个线程.

一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行.

并行、并发、串行

并发: 多个任务看起来是同时进行, 这是一种假并行

单核下使用多道技术实现

fcc90db8-a831-11ed-bfe3-dac502259ad0.png

并行: 多个任务同时进行

并行必须有多核才能实现,否则只能实现并发(伪并行)。

fce11fd4-a831-11ed-bfe3-dac502259ad0.png

串行: 一个程序完完整整的运行完,再运行下一个进程

fcfce14c-a831-11ed-bfe3-dac502259ad0.png

任务运行的三种状态

进程在运行的过程中不断地改变其运行状态。 通常一个运行的进程必须具有三种状态:就绪态,运行态,阻塞态。

就绪态 (Ready)

当进程已分配到除CPU以外的所有必要的资源后,只要再获得CPU, 便可执行程序, 进程这时的状态就称为就绪态,

在一个系统中处于就绪态的进程可能有多个, 通常将他们排成一个队列, 这就叫就绪队列

运行态 (Running)

当进程已经获得CPU操作权限, 其程序正在运行, 着就叫做运行态

在单核操作系统中, 只有一个进程处于运行态, 多核操作系统有多个进程处于运行态

阻塞态 (Blocked)(sleep)

正在执行的进程, 由于等待某个事件而无法执行时, 便被操作系统剥夺了cpu的操作时间, 这是就是阻塞态

引起阻塞的原因多种, 例如: 等待I/O操作, 更高优先级的任务抢走了CPU权限等.

进程三种状态 间的转换

一个进程在运行期间,会不断地在一种状态切换到另一只种状态 他可以是多次处于就绪态和运行态,也可以多次处于阻塞态,下图是三种状态的转换图

fd2186dc-a831-11ed-bfe3-dac502259ad0.png

就绪态➠➠运行态

处于就绪态的进程,当进程调度程序为之分配了CPU的时间片后,该进程就会由就绪态转变成运行态

运行态➠➠就绪态

处于运行态的进程在运行过程中,因为分配的时间片用完了,于是失去了CPU的使用权限,运行态就会重新转为就绪态

运行态➠➠阻塞态

正在运行的进程由于遇到I/O操作或被更高优先级的任务抢走CPU使用权限而无法继续执行,便从运行态转为阻塞态

阻塞态➠➠就绪态

处于阻塞态的进程,若其等待的事情已经处理完毕,于是进程从阻塞态转为就绪态

任务提交的两种方式

同步

同步是指发送方发送数据后, 等接收方发回响应后才发下一个数据报的通讯方式

同步是指两个程序的运行是相关的, 其中一个线程在阻塞需要等待状态, 那另一个线程才运行

异步

异步是指发送方发出数据后, 不等接收方发回响应, 接着就发下个数据报的通讯方式

异步是指两个线程毫无相关, 自己运行自己的

例子

同步:

你叫我去吃饭,我听到了就立即和你去吃饭,如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭 打电话好比同步,两边是同时进行不能再打给另一个人

异步:

你叫我去吃饭,然后自己去吃饭了,我得到消息后可能立即走,也可能过会儿走 发消息好比异步,和一个人发完消息就可能和另一个人发消息

进程池

什么是进程池?

进程池是资源进程,管理进程组成的技术的应用.

为什么要有进程池?

忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。 那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么? 首先,创建进程需要消耗时间,销毁进程也需要消耗时间。 第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率。 因此我们不能无限制的根据任务去开启或者结束进程。那么我们要怎么做呢?

进程池的概念

定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来处理任务

等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待任务

如果有很多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空闲进程才能继续执行。

也就是说,进池中进程的数量是固定的,那么同一时间最多有固定数量的进程在运行

这样不会增加操作系统的调度难度,还节省了开关进程的时间,也一定程度上能够实现并发效果。

资源进程

预先创建好的空闲进程,管理进程(好比池子)会把工作分发到空闲进程来处理。

管理进程

管理进程负责创建资源进程,把工作交给空闲资源进程处理,回收已经处理完工作的资源进程。

资源进程与管理进程的交互

管理进程如何有效的管理资源进程,分配任务给资源进程? 通过IPC,信号,信号量,消息队列,管道等进行交互。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 串行
    +关注

    关注

    0

    文章

    230

    浏览量

    33533
  • 线程
    +关注

    关注

    0

    文章

    489

    浏览量

    19495
  • 进程
    +关注

    关注

    0

    文章

    193

    浏览量

    13876

原文标题:总结进程、线程、进程池、同步、异步、并发、并行、串行

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    进程线程的区别

    是资源分配和拥有的单位,同一个进程内的线程共享进程的资源(3)线程是处理器调度的基本单位,但进程不是.4)二者均可
    发表于 12-12 09:28

    进程线程区别

    工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。进程线程是操作系统的两种不同软件技术,目的是实现宏观上的并行
    发表于 11-30 14:06

    线程进程、程序的区别

    分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度
    发表于 03-23 13:09

    进程线程的区别和联系介绍

    发生了变化:它只是资源分配的单位,而不再是调度运行的单位 。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程线程概念   
    发表于 07-04 00:18

    Linux系统进程的知识总结

    对象(CMutex)、信号量对象(CS emaphore)和事件对象(CEvent)。在这些对象中,临界区对象使用起来最简单,它的缺点是只能同步同一个进程中的线程。另外,还有一种基本的方法,本文称为
    发表于 09-06 12:00

    进程互斥、同步概念

    进程同步与通信,进程线程同步的区别,进程线程
    发表于 06-05 06:24

    Java进程线程

    Windows等操作系统均支持多线程进程并发处理机制。操作系统支持多线程,使多个程序能够并发执行,以改善资源使用率和提高系统效率;操作系统
    发表于 07-31 15:10

    线程进程和程序有什么区别

    我对于线程进程的概念一直都是比较模糊,最近整理了一下。总结起来就是,线程进程的一部分,进程
    发表于 08-05 08:17

    操作系统 : 进程线程

    本文为《现代操作系统》的读书笔记目录程序顺序执行与并发执行进程的定义进程的状态转换进程控制块进程控制程序顺序执行与
    发表于 07-01 10:49

    嵌入式的进程线程具有哪些优缺点

    :①进程拥有自己的PID和变量,独立的内存单元进行调度,执行(几乎)独立于父进程。②新线程拥有自己独立的栈(eg.局部变量),但与创建者共享全局变量、文件描述符、信号句柄、当前目录状态。③独立
    发表于 10-28 09:24

    如何使用多线程异步操作等并发设计方法来最大化程序的性能

    的DMA操作。  线程的本质  线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以
    发表于 08-23 16:31

    进程线程定义

    线程是CPU调度的最小单位(程序执行流的最小单元),它被包含在进程之中,是进程中的实际运作单元。一条线程进程中一个单一顺序的控制流,一个
    的头像 发表于 11-20 10:23 2394次阅读

    线程进程的关系与区别

    线程是CPU调度的最小单位(程序执行流的最小单元),它被包含在进程之中,是进程中的实际运作单元。一条线程进程中一个单一顺序的控制流,一个
    的头像 发表于 11-29 11:01 1.3w次阅读

    Linux下线程进程的区别

    线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序
    的头像 发表于 08-24 15:37 1630次阅读
    Linux下<b class='flag-5'>线程</b>与<b class='flag-5'>进程</b>的区别

    mcu线程进程的区别是什么

    MCU线程进程是嵌入式系统中常见的并行执行的概念,它们之间有许多区别,包括线程进程的定义、资源管理、通信机制、执行方式等等。下面将详细介
    的头像 发表于 01-04 10:45 268次阅读