首页 > 系统相关 >进程与线程

进程与线程

时间:2022-10-30 22:36:16浏览次数:60  
标签:并行 CPU 线程 进程 cpu 运行

进程

  • 概念
    • 被执行的程序的实例就是一个进程(类似docker的镜像与容器)
    • 每个进程拥有它自己的虚拟CPU。当然,实际上真正的CPU在各进程之间来回切换。但为了理解这种系统,考虑在(伪)并行情况下运行的进程集,要比我们试图跟踪CPU如何在程序间来回切换简单得多。正如在第1章所看到的,这种快速的切换称作多道程序设计。

进程表面看是同时运行的,但是微观看一瞬间只有一个进程在运行
现在的芯片是多核,芯片包含cpu,
现在考虑简单,只考虑一个cpu

每个进程的运算速度不能确定,及时同一进程再次运行

并行:
在任何多道程序设计系统中,CPU由一个进程快速切换至另一个进程,使每个进程各运行几十或几百个毫秒。严格地说,在某一个瞬间,CPU只能运行一个进程。但在1秒钟期间,它可能运行多个进程,这样就产生并行的错觉。有时人们所说的伪并行就是指这种情形,以此来区分多处理器系统(该系统有两个或多个CPU共享同一个物理内存)的真正硬件并行。

2.1.2创建进程

有4种主要事件导致进程的创建:

  • 1)系统初始化。
  • 2)执行了正在运行的进程所调用的进程创建系统调用。
  • 3)用户请求创建一个新进程。
  • 4)一个批处理作业的初始化。

进程分类
前台进程,也就是同用户(人类)交互并且替他们完成工作的那些进程
后台进程与特定的用户没有关系,相反,却具有某些专门的功能
守护进程
(什么是系统调用:)

进程的终止

方式:

  • 1)正常退出(自愿的)。
  • 2)出错退出(自愿的)。
  • 3)严重错误(非自愿)。
  • 4)被其他进程杀死(非自愿)。

2.1.7多道程序设计模型

I/O操作时间比上在内存的时间P,当内存种有多个程序 则

\[cpu利用率=1-P^n \]

解释:为什么是\(p^n\)

2.2线程

什么是线程

首先程序运行叫做进程

一个进程有一片地址空间和控制线程,但是一般现在又多个控制线程

每个程序有多个活动,每个活动就是线程

经常

线程的好处

如果线程都是密集型cpu就不能获得性能的提升,cpu密集型

大概就是运算或者处理很巨大,cpu用的时间很多,换线程还需要时间,还不然之间单线程

线程好像也有进程的三态

  • 运行态
  • 就绪态
  • 阻塞态

2.2经典的线程模型

  • 同一进程内的不同线程: 独立性低, 因为同一进程内的不同线程是为了提高并发性和相互之间的合作而创建的,他们共享进程内的地址空间和资源。
  • 不同进程内的不同线程: 独立性高,为了防止进程之间彼此干扰和破坏,每个进程都拥有一个独立的地址空间和其他资源,除了共享全局变量以外,不允许其他进程访问。

多线程的单cpu运行情况

  • 进程的多道程序是伪并行,只是快速切换,而线程也是如此
  • 支持多处理机系统
    单线程进程: 在多处理机系统中,进程只能运行在1个处理机上。
    多线程进程: 在多处理机系统中,进程可以在多个处理机上并发运行,无疑加速了进程了完成。

线程与进程的空间共享

  • 一个进程的多个线程是在同一片内存区,共享同一内存的资源,

标签:并行,CPU,线程,进程,cpu,运行
From: https://www.cnblogs.com/tsqo/p/16842498.html

相关文章

  • Java线程实现/创建方式
    Java线程实现/创建方式继承Thread类:Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。st......
  • java多线程-线程安全集合
    CopyOnWriteArrayListCopyOnWrite思想就是将原来的数据copy一份出来修改,然后把修改后的数据替换原来的数据。在setArray之前并发读到的还是旧数据,弱一致性。publi......
  • 驱动开发:内核监控进程与线程回调
    在前面的文章中`LyShark`一直在重复的实现对系统底层模块的枚举,今天我们将展开一个新的话题,内核监控,我们以`监控进程线程`创建为例,在`Win10`系统中监控进......
  • Linux--多线程(二)
    线程的同步和互斥基本概念概述:现在操作系统基本都是多任务的操作系统,同时有大量可以调度的实体在运行。在多任务操作系统当中,同时运行的多个任务可能:都需要访问/使用同......
  • Java多线程(6):锁与AQS(中)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ Java中的AQS(AbstractQueuedSynchronizer,抽象队列同步器)是用来实现锁及其他同步功能组件的Java底层技术基础,java.util.co......
  • JavaScript – event loop 事件循环, 单线程, Web Worker
    前言因为要写RxJS系列,有一篇要介绍scheduler.它需要基础的JS执行机制,于是就有了这里篇. 顺带也介绍以下WebWorker呗. 参考知乎–详解JavaScript中的......
  • Python multiprocessing 多进程间通信传递DataFrame的方法
    进程是资源的集合,是最小的资源单位。是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。多进程适合执行计算密集型任务(如:视频......
  • 进程通信机制总结
    文章目录​​一、什么是进程通信​​​​二、管道​​​​1.匿名管道​​​​2.有名管道​​​​三、消息队列​​​​四、共享内存​​​​五、信号量和PV操作​​​​......
  • 聊一聊如何优雅的停下线程,除了这两种还有其他的吗?
    前言今天主要来聊一聊如何优雅的停下线程。在开始之前,我们可以思考一下,如何能够让线程停下?通过查阅JDK,我们不难发现Thread为我们提供了一个stop方法,只要使用stop方法,就立即......
  • Linux--多线程(一)
    线程线程的概念线程:线程是OS能够进行运算调度的基本单位。线程是一个进程中的一个单一执行流,通俗地说,一个程序里的一个执行路线就叫做线程。可以知道的是,一个进程至少......