进程与线程的关系,线程执行任务的方式

目录

    • 进程与线程
      • 多线程并发执行
        • 多道技术
      • 多线程串行执行
      • 多线程并行
      • 一个任务运行的三种状态:
      • 线程执行任务:同步或异步


进程与线程

  1. 进程(资源单位):一个正在运行的程序,操作系统中正在运行的应用程序。进程之间是相互物理隔离的。因为如果未进行隔离的话,如果这一个程序被植入病毒入侵,那么就可以通过这个进程进而入侵其它的进程,所以进程之间是互相隔离的。进程之间无法直接通信,需要通过特定的技术

  2. 线程(执行单位):操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程执行不同的任务。
    进程与线程的关系,线程执行任务的方式_第1张图片

  • 进程内必须有一条线程,一个进程内也可以包含多个线程
  • 每条线程执行不同的任务

多线程并发执行

  • 看起来是同时运行的,因为如果电脑只存在一个CPU,多个任务需要复用一个CPU时间片,通俗的讲就是一个CPU在多个任务之间来回切换实现 看起来是同时执行的效果

进程与线程的关系,线程执行任务的方式_第2张图片
只是表面上带给了我们是一起执行的效果,这是因为有了多道技术

多道技术

在没有多道技术之前,一个计算机只能运行一个程序(指的是CPU只能给一个程序享受资源),而有了多道技术则可以让我们的计算机运行多个程序,它分为两个步骤:

1、空间上的复用:可以同时将多个应用程序载入内存,放入内存的进程之间都是物理隔离的,进程间通信需要基于IPC(队列、管道等)
2、时间上的复用:CPU可以在多个应用程序之间来回切换,如果某个程序遇到I/O操作,那么CPU不再等待,继续去执行其它的程序,由于CPU切换过快,给我们呈现出的效果就是多个程序在同时运行。

多线程串行执行

  • 一个任务执行完毕后、执行下一个任务
    进程与线程的关系,线程执行任务的方式_第3张图片
    我们可以想到的是,并发要快于串行。事实上并不是这样,如果在处理I/O上,并发确实快于串行,而如果只是进行运算,那么并发不会快于串行,因为并发在任务切换的过程中也会耗时,而串行则是一个执行完毕,执行下一个,没有进行CPU反复切换的操作。

多线程并行

  • 当系统有一个以上 CPU 时(多核CPU),则线程的操作可以并行。当一个 CPU 执行一个线程时,另一个 CPU 可以执行另一个线程,两个线程互不抢占 CPU 资源,他们同时进行,这种方式我们称之为并行。

进程与线程的关系,线程执行任务的方式_第4张图片

一个任务运行的三种状态:

进程与线程的关系,线程执行任务的方式_第5张图片
也可分为两种状态:

  • 非阻塞态(就绪态、运行态)
  • 阻塞态

需要说明的是:串行时等待任务并不是阻塞态,也有可能是正在进行运算


线程执行任务:同步或异步

消息通信机制

同步:当执行完毕一个任务后才能去执行其它任务,如果任务遇到阻塞也会等待任务的完成。

异步:运行一个任务后,不会等待该任务完毕,而是继续去运行其它任务,当任务是被异步调用后且完成了,那么就会通过状态来通知调用者,或者通过回调来处理。

分析:

同步:类似点外卖一样,如果是同步的话,点了外卖需要原地等待外卖送到你手上才能去做下一件事情。
异步:比如外卖到了,当你点完外卖以后,你可以去做其它事情(玩手机、打游戏等),外卖到了,会有外卖员打电话通知你,然后下去拿就可以了。


这里的你充当的是

以上就是笔者所了解关于进程与线程相关的内容,如有错误的地方,还请评论留言,谢谢阅读!


技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞 收藏+关注 子夜期待您的关注,谢谢支持!

你可能感兴趣的:(基础,CPU,进程与线程,线程执行任务的方式)