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

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

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

目录
相关文章
|
18天前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
30 1
|
4天前
|
存储 调度 C++
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
【操作系统】进程与线程的区别及总结(非常非常重要,面试必考题,其它文章可以不看,但这篇文章最后的总结你必须要看,满满的全是干货......)
25 1
|
7天前
|
分布式计算 JavaScript 前端开发
多线程、多进程、协程的概念、区别与联系
多线程、多进程、协程的概念、区别与联系
18 1
|
13天前
|
存储 网络协议 算法
【进程与线程】最好懂的讲解
【进程与线程】最好懂的讲解
18 1
聊聊python多线程与多进程
为什么要使用多进程与多线程呢? 因为我们如果按照流程一步步执行任务实在是太慢了,假如一个任务就是10秒,两个任务就是20秒,那100个任务呢?况且cpu这么贵,时间长了就是浪费生命啊!一个任务比喻成一个人,别个做高铁,你做绿皮火车,可想而知!接下来我们先看个例子:
|
5天前
|
安全 Java Python
GIL是Python解释器的锁,确保单个进程中字节码执行的串行化,以保护内存管理,但限制了多线程并行性。
【6月更文挑战第20天】GIL是Python解释器的锁,确保单个进程中字节码执行的串行化,以保护内存管理,但限制了多线程并行性。线程池通过预创建线程池来管理资源,减少线程创建销毁开销,提高效率。示例展示了如何使用Python实现一个简单的线程池,用于执行多个耗时任务。
18 6
|
1天前
|
算法 API 调度
|
8天前
|
数据挖掘 调度 开发者
Python并发编程的艺术:掌握线程、进程与协程的同步技巧
并发编程在Python中涵盖线程、进程和协程,用于优化IO操作和响应速度。`threading`模块支持线程,`multiprocessing`处理进程,而`asyncio`则用于协程。线程通过Lock和Condition Objects同步,进程使用Queue和Pipe通信。协程利用异步事件循环避免上下文切换。了解并发模型及同步技术是提升Python应用性能的关键。
33 5
|
7天前
|
Java 程序员
Java多线程编程是指在一个进程中创建并运行多个线程,每个线程执行不同的任务,并行地工作,以达到提高效率的目的
【6月更文挑战第18天】Java多线程提升效率,通过synchronized关键字、Lock接口和原子变量实现同步互斥。synchronized控制共享资源访问,基于对象内置锁。Lock接口提供更灵活的锁管理,需手动解锁。原子变量类(如AtomicInteger)支持无锁的原子操作,减少性能影响。
18 3
|
7天前
|
数据采集 自然语言处理 调度
【干货】python多进程和多线程谁更快
【干货】python多进程和多线程谁更快
12 2

热门文章

最新文章

相关实验场景

更多