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

简介: 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命令来调整进程的运行优先级。

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

目录
相关文章
|
1月前
|
调度 开发者 Python
深入浅出操作系统:进程与线程的奥秘
在数字世界的底层,操作系统扮演着不可或缺的角色。它如同一位高效的管家,协调和控制着计算机硬件与软件资源。本文将拨开迷雾,深入探索操作系统中两个核心概念——进程与线程。我们将从它们的诞生谈起,逐步剖析它们的本质、区别以及如何影响我们日常使用的应用程序性能。通过简单的比喻,我们将理解这些看似抽象的概念,并学会如何在编程实践中高效利用进程与线程。准备好跟随我一起,揭开操作系统的神秘面纱,让我们的代码运行得更加流畅吧!
|
3月前
|
消息中间件 并行计算 安全
进程、线程、协程
【10月更文挑战第16天】进程、线程和协程是计算机程序执行的三种基本形式。进程是操作系统资源分配和调度的基本单位,具有独立的内存空间,稳定性高但资源消耗大。线程是进程内的执行单元,共享内存,轻量级且并发性好,但同步复杂。协程是用户态的轻量级调度单位,适用于高并发和IO密集型任务,资源消耗最小,但不支持多核并行。
59 1
|
1月前
|
消息中间件 Unix Linux
【C语言】进程和线程详解
在现代操作系统中,进程和线程是实现并发执行的两种主要方式。理解它们的区别和各自的应用场景对于编写高效的并发程序至关重要。
62 6
|
1月前
|
调度 开发者
深入理解:进程与线程的本质差异
在操作系统和计算机编程领域,进程和线程是两个核心概念。它们在程序执行和资源管理中扮演着至关重要的角色。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
62 5
|
1月前
|
算法 调度 开发者
深入理解操作系统:进程与线程的管理
在数字世界的复杂编织中,操作系统如同一位精明的指挥家,协调着每一个音符的奏响。本篇文章将带领读者穿越操作系统的幕后,探索进程与线程管理的奥秘。从进程的诞生到线程的舞蹈,我们将一起见证这场微观世界的华丽变奏。通过深入浅出的解释和生动的比喻,本文旨在揭示操作系统如何高效地处理多任务,确保系统的稳定性和效率。让我们一起跟随代码的步伐,走进操作系统的内心世界。
|
1月前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
59 4
|
2月前
|
并行计算 数据处理 调度
Python中的并发编程:探索多线程与多进程的奥秘####
本文深入探讨了Python中并发编程的两种主要方式——多线程与多进程,通过对比分析它们的工作原理、适用场景及性能差异,揭示了在不同应用需求下如何合理选择并发模型。文章首先简述了并发编程的基本概念,随后详细阐述了Python中多线程与多进程的实现机制,包括GIL(全局解释器锁)对多线程的影响以及多进程的独立内存空间特性。最后,通过实例演示了如何在Python项目中有效利用多线程和多进程提升程序性能。 ####
|
2月前
|
Linux 调度 C语言
深入理解操作系统:进程和线程的管理
【10月更文挑战第32天】本文旨在通过浅显易懂的语言和实际代码示例,带领读者探索操作系统中进程与线程的奥秘。我们将从基础知识出发,逐步深入到它们在操作系统中的实现和管理机制,最终通过实践加深对这一核心概念的理解。无论你是编程新手还是希望复习相关知识的资深开发者,这篇文章都将为你提供有价值的见解。
|
2月前
|
Java
java小知识—进程和线程
进程 进程是程序的一次执行过程,是系统运行的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。 线程 线程,与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间做切换工作时,负担要比
32 1
|
2月前
深入理解操作系统:进程与线程的管理
【10月更文挑战第30天】操作系统是计算机系统的核心,它负责管理计算机硬件资源,为应用程序提供基础服务。本文将深入探讨操作系统中进程和线程的概念、区别以及它们在资源管理中的作用。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程和线程的管理技巧。
46 2