进程
概念
进程是操作系统资源分配的最小单元。一个进程拥有的资源有⾃⼰的堆、栈、虚存空间(页表)、文件描述符等信息。 从编程的角度来理解进程,可以把它看作是⼀个类或一个 PCB(Process Control Block,进程控制块的结构体)。
进程是操作系统对一个正在运行的程序的一种抽象,可以把进程看作程序运行的一次运行过程。
特点
-
进程是程序的一次执行过程。若程序执行两次甚至多次,则需要两个甚至多个进程。
-
进程是是正在运行程序的抽象。它代表运行的CPU,也称进程是对CPU的抽象。(虚拟技术的支持,将一个CPU变幻为多个虚拟的CPU)
-
系统资源(如内存、文件)以进程为单位分配。
-
操作系统为每个进程分配了独立的地址空间
-
操作系统通过“调度”把控制权交给进程。
问题:为什么引入线程?
首先我们引入了进程这个概念,虽然进程有利于资源的管理和保护。然而在实际应用中,进程有这样的问题:
-
进程切换的代价、开销比较大;
-
在一个进程内也需要并行执行多个程序,实现不同的功能。
-
进程有时候性能比较低。
引入线程有以下三个方面的考虑
-
应用的需要。比如打开一个浏览器,我想一边浏览网页,一边下载文件,一边播放音乐。如果一个浏览器是一个进程,那么这样的需求需要线程机制。
-
开销的考虑。在进程内创建、终止线程比创建、终止进程要快。同一进程内的线程间切换比进程间的切换要快,尤其是用户级线程间的切换。线程之间相互通信无须通过内核(同一进程内的线程共享内存和文件)
-
性能的考虑。多个线程中,任务功能不同(有的负责计算,有的负责I/O),如果有多个处理器,一个进程就可以有很多的任务同时在执行。
线程
概念
线程是操作系统能够进行运算调度的最小单元。它被包含在进程中,是进程中实际运行的单位。一个进程中可以并发多个线程,每个线程执行不同的任务 。
虽然多进程也能实现并发编程,但是线程比进程更轻量。
优势
-
创建线程比创建进程更快
-
销毁线程比销毁进程更快
-
调度线程比调度进程更快
进程与线程的区别
-
根本区别:进程是操作系统进行资源分配的最小单元,线程是操作系统进行运算调度的最小单元。
-
从属关系不同:进程中包含了线程,线程属于进程。
-
开销不同:进程的创建、销毁和切换的开销都远大于线程。
-
拥有资源不同:每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。
-
控制和影响能力不同:子进程无法影响父进程,而子线程可以影响父线程,如果主线程发生异常会影响其所在进程和子线程。
-
CPU利用率不同:进程的CPU利用率较低,因为上下文切换开销较大,而线程的CPU的利用率较高,上下文的切换速度快。
-
操纵者不同:进程的操纵者一般是操作系统,线程的操纵者一般是编程人员。
转载至
https://blog.csdn.net/qq_42437577/article/details/100766768
https://blog.csdn.net/weixin_48271092/article/details/123649795
标签:开销,操作系统,区别,线程,切换,进程,CPU From: https://www.cnblogs.com/galo/p/16803826.html