细说计算机中的进程与线程

简介: 1.进程的概念平时在使用电脑的过程中,可能会登陆QQ,一边开着网易云音乐,一边开着chrome浏览器或者火狐浏览器在网页上看视频,甚至还会打开word软件,编辑文档。假设现在电脑上同时打开这四个程序,QQ,网易云音乐,chrome浏览器,word软件,此时对电脑主机来说,CPU(中央处理器)会在这打开的四个程序中依次循环切换。

1.进程的概念

平时在使用电脑的过程中,可能会登陆QQ,一边开着网易云音乐,一边开着chrome浏览器或者火狐浏览器在网页上看视频,甚至还会打开word软件,编辑文档。

假设现在电脑上同时打开这四个程序,QQ,网易云音乐,chrome浏览器,word软件,此时对电脑主机来说,CPU(中央处理器)会在这打开的四个程序中依次循环切换。

现在一颗主流的CPU的主频为2.5Ghz,其意思就是说在1秒钟内,这颗CPU可以在上述四个程序中来回切换2.5乘以10的9次方次

所以在使用电脑的人看来,电脑是在同时执行这四个程序。

在CPU运行的过程中,每一个CPU时间点内,一核心cpu只能运行一个进程。

也就是说在某个CPU时间片上,一个CPU核心如果切换到QQ程序时,其余三个程序会被CPU暂停,也即阻塞,不过这个阻塞的时间间隔很短。

同样的,在某个时刻,当chrome浏览器在运行的时候,其余的三个程序也会被暂停。

当程序切换的时候,需要一个媒介来保存程序的运行,暂停,恢复等信息,这就个媒介就是进程。

进程的概念

  • 进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统的结构基础。
  • 进程是系统进行资源分配和调度的一个独立单位。
  • 进程一般由程序,数据集,进程控制块三部分组成:

    程序用来描述进程要完成哪些功能以及如何完成

    数据集是程序在执行过程中所需要使用的资源

    进程控制块用来记录进程的外部特征,描述进程的执行变化过程,操作系统可以利用它来控制和管理进程,控制块是系统感知进程存在的唯一标志

2.线程的概念

假设在用浏览器打开一个网页,这时浏览器一边把网页下载到硬盘上,浏览器一边对网页进行渲染,生成用户看到网页。

在这同时,浏览器还要与网页服务器保持连接。在这个过程中,浏览器会生成多个进程,同时会在这多个进程之间来回切换。

这多个进程的协作涉及到进程间通信问题,进程间不停的切换造成主机性能上的损失。

这时就需要一种机制来保存和恢复进程间的通信内容,减少通信所带来的性能损耗,这种机制就是线程

线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程在一个时间点只能服务一个程序的缺陷,拿到进程内并发成为可能。

线程也叫轻量级进程 ,是一个基本的CPU执行单元,也是程序执行过程中的最小单元

线程由线程ID,程序讲数器,寄存器集合和堆栈共同组成。

线程是进程的一个实体,是cpu调度和分派的基本单位,是比进程更小的能独立运行的基本单位。

线程的引入减小了程序 并发执行时的开销,提高了操作系统的并发性能。线程没有自己的系统资源。

3.进程与线程的关系

1.一个线程只能属于一个进程 ,而一个进程可以有多个线程,但至少有一个线程
2.资源分配给进程,同一个进程的所有线程共享该进程的所有资源
3.CPU的资源分给线程,即真正在CPU上运行的是线程
4.进程拥有它自己的独立空间。线程是通过进程创建的,在进程之间共享该进程的内存空间
5.线程直接访问进程的数据块,进程是将父进程中的数据再复制出一份使用
6.进程中的线程间是可以直接通信的,子进程与父进程不能直接通信,但可以通过队列管道相互交流数据
7.一个新的线程创建很容易,一个新的进程创建需要从父进程里重新拷贝父进程的所有数据,创建进程会耗费系统资源
8.一个进程中的多线程间可以控制其它进程,进程只能控制它的子进程 
9.改变主线程优先级会影响线程在进程中的行为,改变父进程不会影响子进程 

4.进程与线程的切换原则

首先要明白的是,进程的切换者是操作系统

4.1 CPU遇到时间片会切换进程

在现代操作系统中,不可能只运行一个程序。当操作系统中运行了多个程序的时候,CPU不可能一直执行某一个程序,

CPU会在操作系统运行的多个程序间来回进行切换,这个CPU的时间片是非常短的。

4.2 程序遇到IO操作的时候

例如,在系统上运行了两个程序,程序A和程序B,当程序A在请求某个网页的时候,由于网络的延迟,网页从服务器上响应到本地缓存中需要一些时间

这个时间相对于CPU来说是很长的,此时CPU就会切换到程序B运行,

4.3 程序优先级切换

在操作系统中,通常每生成一个进程,这个进程都会有一个执行的优先级。

例如在linux系统中,可以使用renice命令来调整进程的运行优先级。

在某一个时刻,操作系统中运行多个程序时,哪个进程的运行优先级越高,这个进程就先执行。

目录
相关文章
|
7天前
|
存储 消息中间件 资源调度
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
该文章总结了操作系统基础知识中的十个关键知识点,涵盖了进程与线程的概念及区别、进程间通信方式、线程同步机制、死锁现象及其预防方法、进程状态等内容,并通过具体实例帮助理解这些概念。
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
|
6天前
|
资源调度 算法 调度
深入浅出操作系统之进程与线程管理
【9月更文挑战第29天】在数字世界的庞大舞台上,操作系统扮演着不可或缺的角色,它如同一位精通多门艺术的导演,精心指挥着每一个进程和线程的演出。本文将通过浅显的语言,带你走进操作系统的内心世界,探索进程和线程的管理奥秘,让你对这位幕后英雄有更深的了解。
|
10天前
|
Java
直接拿来用:进程&进程池&线程&线程池
直接拿来用:进程&进程池&线程&线程池
|
11天前
|
负载均衡 Java 调度
探索Python的并发编程:线程与进程的比较与应用
本文旨在深入探讨Python中的并发编程,重点比较线程与进程的异同、适用场景及实现方法。通过分析GIL对线程并发的影响,以及进程间通信的成本,我们将揭示何时选择线程或进程更为合理。同时,文章将提供实用的代码示例,帮助读者更好地理解并运用这些概念,以提升多任务处理的效率和性能。
|
21天前
|
开发者 Python
深入浅出操作系统:进程与线程的奥秘
【8月更文挑战第46天】在数字世界的幕后,操作系统扮演着至关重要的角色。本文将揭开进程与线程这两个核心概念的神秘面纱,通过生动的比喻和实际代码示例,带领读者理解它们的定义、区别以及如何在编程中运用这些知识来优化软件的性能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技巧。
|
6天前
|
数据采集 消息中间件 并行计算
进程、线程与协程:并发执行的三种重要概念与应用
进程、线程与协程:并发执行的三种重要概念与应用
16 0
|
6天前
|
数据采集 Linux 调度
Python之多线程与多进程
Python之多线程与多进程
12 0
|
29天前
|
存储 Java 数据处理
进程中的线程调度
进程是应用程序运行的基本单位,包括主线程、用户线程和守护线程。计算机由存储器和处理器协同操作,操作系统设计为分时和分任务模式。在个人PC普及后,基于用户的时间片异步任务操作系统确保了更好的体验和性能。线程作为进程的调度单元,通过覆写`Thread`类的`run`方法来处理任务数据,并由系统调度框架统一管理。微服务架构进一步将应用分解为多个子服务,在不同节点上执行,提高数据处理效率与容错性,特别是在大规模数据存储和处理中表现显著。例如,利用微服务框架可以优化算法,加速业务逻辑处理,并在不同区块间分配海量数据存储任务。
|
10天前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
15 0
|
14天前
|
并行计算 API 调度
探索Python中的并发编程:线程与进程的对比分析
【9月更文挑战第21天】本文深入探讨了Python中并发编程的核心概念,通过直观的代码示例和清晰的逻辑推理,引导读者理解线程与进程在解决并发问题时的不同应用场景。我们将从基础理论出发,逐步过渡到实际案例分析,旨在揭示Python并发模型的内在机制,并比较它们在执行效率、资源占用和适用场景方面的差异。文章不仅适合初学者构建并发编程的基础认识,同时也为有经验的开发者提供深度思考的视角。

热门文章

最新文章

相关实验场景

更多
下一篇
无影云桌面