首页 > 系统相关 >进程、线程、并行、并发、串行、进程池

进程、线程、并行、并发、串行、进程池

时间:2022-12-07 15:24:18浏览次数:38  
标签:并发 程序 并行 串行 任务 线程 进程

进程

什么是进程?

开发时编写的代码,我们称为程序。

当我们运行一个程序,那么我们将运行的程序叫做进程。

进程是线程的容器。

程序与进程的区别

程序是数据和指令的集合,是静态的概念,就是一堆代码。

进程是程序运行的过程,是动态的概念,进程存在生命周期,会随着程序运行的终止而销毁。

进程之间通信

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


线程

什么是线程?

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

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

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

进程与线程的关系

进程包含线程,线程是进程的子集。

例子: 我们打开一个聊天软件,这就是开启了一个进程;当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置...,这些操作就是线程。

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

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

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


并行、并发、串行

并行

多个任务在同一时刻同时进行。

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

image

并发(伪并行)

一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用。

看起来是同时进行, 这是一种假并行。

单核下使用多道技术实现。

image

串行

同一时刻只能运行一个程序,如果存在多个程序,就要按照先后顺序执行。

如单核CPU,打开qq以后,就不能同时打开微信,只能等qq关闭之后,才可以打开微信。


进程池

什么是进程池?

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

为什么要有进程池?

如果成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?

创建进程需要消耗时间,销毁进程也需要消耗时间。即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率。

因此我们不能无限制的根据任务去开启或者结束进程。

那么我们要怎么做呢?

进程池的概念

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

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

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

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

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

资源进程

预先创建好的空闲进程。

管理进程

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

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

通过IPC,信号,信号量,消息队列,管道等进行交互。

标签:并发,程序,并行,串行,任务,线程,进程
From: https://www.cnblogs.com/luckest/p/16963141.html

相关文章

  • 理解Nodejs中的进程间通信
    前置知识文件描述符在Linux系统中,一切都看成文件,当进程打开现有文件时,会返回一个文件描述符。文件描述符是操作系统为了管理已经被进程打开的文件所创建的索引,用来指......
  • 理解NodeJS多进程
    序言一次面试中,我提到自己用过pm2,面试接着问:「那你知道pm2父子进程通信方式吗」。我大概听说pm2有cluster模式,但不清楚父子进程如何通信。面试结束后把NodeJS的多进程重新......
  • 多线程--面试题整理
    简述线程,程序、进程的基本概念线程:与进程相似,但线程是比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空......
  • 线程协作之生产者消费者模式
    线程协作生产者消费者模式管程法packagecom.deng.gaoji;//测试生产者消费者模型--》利用缓冲区解决:管程法//生产者,消费者,产品,缓冲区publicclassTestPC{......
  • 程序、进程、线程
    一、概述程序:存放在磁盘中的可执行文件,对于计算机来说它就是一系列的指令集合,是一个静态概念进程: 程序的一次执行过程,是一个动态的概念,进程由进程控制块、程序段......
  • Tomcat最大线程数、最大连接数、超时时间及高效配置
    一、前言Tomcat作为JavaWeb程序比较常用的Servlet容器实现,在Web开发中有比较重要的地位。二、Tomcat使用的IO模式Tomcat有三种IO模式,BIO、NIO、APR。在Tom......
  • php-fpm进程过多,导致CPU过高
    今天发现服务器的php-fpm进程突然过多,导致CPU过高,其他项目的访问受到影响。我通过以下三个基本步骤定位到了问题,发现了其原因。 基本步骤:先用top命令查看进程情况,找出......
  • springboot2 搭建日志收集系统存入mongodb + redis+mq+线程池+xxljobs
    我们看到了高效批量插入mongodb速度还不错,那么我们的系统日志收集怎么做呢。当然当前文件日志收集效果也不错,比如前面博文写的elkf搭建日志收集系统。但我们系统中总是有......
  • java线程研究---(6)暂停Thread:join
    暂停Threadjoin方法,会让线程线程暂停,具体如下:调用方法:Thread对象.join()比如,当前有一个线程对象son,当调用了son.join()方法之后(不是child.start()方法哦),会让线程对象son的父......
  • 剖析java中几种创建线程的几种方式
    文章目录​​继承Thread​​​​实现Runnable接口​​​​实现Callable接口​​​​newThread方式的缺点​​​​通过线程池创建​​​​newSingleThreadExecutor​​​​n......