-
定义方面
-
进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。例如,当你打开一个文本编辑器软件,操作系统就会为这个软件创建一个进程。这个进程包含了该软件运行所需要的各种资源,如内存空间、文件句柄等。
-
线程:是进程中的一个执行单元,是进程内的可调度实体。一个进程可以包含多个线程,它们共享进程的资源。比如在一个文本编辑器进程中,可能有一个线程负责接收用户的键盘输入,另一个线程负责将输入的文字显示在屏幕上。
-
-
资源分配方面
-
进程:拥有独立的地址空间,这意味着不同的进程之间不会相互干扰。每个进程都有自己的代码段、数据段和堆栈段。操作系统为每个进程分配系统资源,如内存、I/O 设备等。例如,同时打开两个不同的游戏进程,它们分别占用不同的内存区域,有各自独立的游戏场景数据等。
-
线程:线程共享所属进程的资源,包括内存地址空间、打开的文件等。因为共享资源,所以线程之间的通信相对容易。不过这也可能带来资源竞争的问题,例如两个线程同时访问和修改同一个共享变量时,可能会导致数据不一致。
-
-
调度和执行方面
-
进程:进程的切换开销较大。因为进程切换时,需要保存当前进程的各种状态信息,如程序计数器、寄存器内容等,并且要加载下一个进程的状态信息。操作系统的调度器会根据一定的算法(如先来先服务、时间片轮转等)来选择下一个要执行的进程。
-
线程:线程的切换开销相对较小。由于线程共享进程的地址空间等资源,在切换时只需要保存和恢复少量的寄存器和栈指针等内容。在多处理器系统中,多个线程可以同时执行,从而提高程序的执行效率。例如,在一个多核心的 CPU 上,一个支持多线程的计算程序可以让多个线程同时在不同的核心上进行计算,加快计算速度。
-
-
并发性和并行性方面
-
进程:多个进程可以并发执行,在单处理器系统中,所谓的并发是通过操作系统快速地在多个进程之间切换来实现的,看起来像是多个进程同时在运行。在多处理器系统中,不同的进程可以真正地并行运行在不同的处理器核心上。
-
线程:线程同样可以实现并发和并行。在一个进程内部,多个线程可以并发地执行任务。并且在多处理器系统中,线程可以更好地利用多核处理器的优势,实现真正的并行计算,比进程在并行处理方面更轻量级。
-
-
独立性方面
-
进程:进程具有较强的独立性。一个进程的崩溃通常不会直接影响其他进程的运行,除非它们之间存在特殊的通信机制(如进程间通信)。例如,一个浏览器进程崩溃了,一般不会导致正在运行的音乐播放器进程停止。
-
线程:线程的独立性较弱,因为它们共享进程的资源。一个线程出现问题,如发生死锁或者访问非法内存地址,可能会导致整个进程崩溃。例如,如果在一个多线程的服务器程序中,一个线程出现死锁,那么整个服务器进程可能会停止响应。
-
-
系统开销方面
-
进程:创建和销毁进程的系统开销较大。因为在创建进程时,操作系统需要为其分配大量的资源,包括内存空间、I/O 设备等初始化工作;在销毁进程时,也需要回收这些资源。
-
线程:创建和销毁线程的系统开销较小。线程共享进程的资源,创建线程主要是分配一些栈空间和线程控制块等少量资源,销毁时回收这些资源即可。所以在需要频繁创建和销毁执行单元的场景中,使用线程比使用进程更高效。
-
7. 通讯
-
-
进程:不同进程之间的通信(IPC)相对复杂,如使用管道、共享内存、Socket等方式。
-
线程:同一进程内的线程可以通过共享内存直接交换数据,通信效率更高。
-
8. 稳定性
应用场景
1. 进程的应用场景:
-
-
进程:进程之间是相互独立的,一个进程崩溃不会影响其他进程。
-
线程:线程间的错误可能导致整个进程崩溃,因为所有线程共享相同的内存空间。
-
-
独立的应用程序:如浏览器、文本编辑器等,每个应用运行在不同的进程中,以最大程度地隔离和保护应用。
-
服务和后台作业:服务器通常会为每个服务或请求创建独立进程,保证服务的稳定性和安全性。
-
需要资源隔离的场景:在需要对资源进行严格隔离的场合,例如运行不同的应用程序时。
-
-
线程的应用场景:
-
高并发服务器:例如Web服务器可以为每个请求创建一个线程,从而提高并发处理能力。
-
实时应用:如在线游戏或视频处理,使用多个线程来同时处理不同的任务,以提高响应速度。
-
GUI应用程序:在用户界面响应与后台处理工作分开时,可以使用线程来保证界面流畅性,避免因耗时的操作而阻塞用户界面。
-
-
-
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。