进程和线程的区别 | 学习笔记

简介: 快速学习进程和线程的区别,介绍了进程和线程的区别系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Python 入门 2020年版进程和线程的区别】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10471


进程和线程的区别

 

内容介绍:

一、线程和进程


一、线程和进程

1.功能

(1)进程,能够完成多任务,比如在一台电脑上能够同时运行多个 QQ。

(2)线程,能够完成多任务,比如一个 QQ 中的多个聊天窗口。

2.定义的不同

(1)进程是系统进行资源分配和调度的一个独立单位。

(2)线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

理解:在一个进程里可以有多个线程,线程在操作系统层面是看不到的,线程的分配资源更少,同一进程间的不同线程可以共享全局变量,就是多线程开发的卖票,申请的资源 ticket=20在进程里,线程不存储 ticket=20,当你有多个线程时,它们可以同时访问同一个全局变量。

多个进程能不能共享变量,全局变量是不是同一个呢?

如果再多一个进程2也是 ticket=20,进程1和进程2是两个不同的全局变量。不同的进程间不能共享全局变量。

一个程序里至少要有一个主进程,一个主进程里至少要有一个主线程。主进程里可以开子进程,在子进程里可以开子线程,这是多进程+多线程。

3.区别

(1)一个程序至少有一个进程,一个进程至少有一个线程。

(2)线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高。

(3)进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率

理解:线程的效率相对要比进程高,因为进程分享管理的资源多一些,cpu在切换时不止要切换做任务,还要切换上下文。携带的资源越少切换越快。同一个进程里线程共享全局变量,会有线程安全问题。

(4)线线程不能够独立执行,必须依存在进程中

(5)可以将进程理解为工厂中的一条流水线,而其中的线程就是这个流水线上的工人

理解:比如做锤子的流水线,假设最开始是一块铁和一根木头,这条流水线操作的都是同一个的资源,可以把这条线想成一个进程,流水线上有很多工人在操作,把一个人想象成一个线程,人多的时候效率就高了,进程就是一条流水线,再开一条,占用的资源就越多。

进程是越多越好吗?

不是,进程开多了忙不过来时,还是需要等待。就想有一个洗衣机只能洗一件衣服,洗得很快,但有500件衣服,是要同时有100个洗衣机还是少一点比如50个,应该50个比较好。进程的开销,占用的资源大一些。

4. 优缺点

线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。

进程可以在任务管理器详细信息中看到每一个进程的 pid 和运行情况。

相关文章
|
20天前
|
消息中间件 并行计算 安全
进程、线程、协程
【10月更文挑战第16天】进程、线程和协程是计算机程序执行的三种基本形式。进程是操作系统资源分配和调度的基本单位,具有独立的内存空间,稳定性高但资源消耗大。线程是进程内的执行单元,共享内存,轻量级且并发性好,但同步复杂。协程是用户态的轻量级调度单位,适用于高并发和IO密集型任务,资源消耗最小,但不支持多核并行。
38 1
|
3天前
|
Linux 调度 C语言
深入理解操作系统:进程和线程的管理
【10月更文挑战第32天】本文旨在通过浅显易懂的语言和实际代码示例,带领读者探索操作系统中进程与线程的奥秘。我们将从基础知识出发,逐步深入到它们在操作系统中的实现和管理机制,最终通过实践加深对这一核心概念的理解。无论你是编程新手还是希望复习相关知识的资深开发者,这篇文章都将为你提供有价值的见解。
|
1天前
|
Java
java小知识—进程和线程
进程 进程是程序的一次执行过程,是系统运行的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。简单来说,一个进程就是一个执行中的程序,它在计算机中一个指令接着一个指令地执行着,同时,每个进程还占有某些系统资源如CPU时间,内存空间,文件,文件,输入输出设备的使用权等等。换句话说,当程序在执行时,将会被操作系统载入内存中。 线程 线程,与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间做切换工作时,负担要比
6 1
|
6天前
深入理解操作系统:进程与线程的管理
【10月更文挑战第30天】操作系统是计算机系统的核心,它负责管理计算机硬件资源,为应用程序提供基础服务。本文将深入探讨操作系统中进程和线程的概念、区别以及它们在资源管理中的作用。通过本文的学习,读者将能够更好地理解操作系统的工作原理,并掌握进程和线程的管理技巧。
16 2
|
7天前
|
调度 Python
深入浅出操作系统:进程与线程的奥秘
【10月更文挑战第28天】在数字世界的幕后,操作系统悄无声息地扮演着关键角色。本文将拨开迷雾,深入探讨操作系统中的两个基本概念——进程和线程。我们将通过生动的比喻和直观的解释,揭示它们之间的差异与联系,并展示如何在实际应用中灵活运用这些知识。准备好了吗?让我们开始这段揭秘之旅!
|
18天前
|
Python
Python中的多线程与多进程
本文将探讨Python中多线程和多进程的基本概念、使用场景以及实现方式。通过对比分析,我们将了解何时使用多线程或多进程更为合适,并提供一些实用的代码示例来帮助读者更好地理解这两种并发编程技术。
|
20天前
|
消息中间件 并行计算 安全
进程、线程、协程
【10月更文挑战第15天】进程、线程和协程是操作系统中三种不同的执行单元。进程是资源分配和调度的基本单位,每个进程有独立的内存空间;线程是进程内的执行路径,共享进程资源,切换成本较低;协程则更轻量,由用户态调度,适合处理高并发和IO密集型任务。进程提供高隔离性和安全性,线程支持高并发,协程则在资源消耗和调度灵活性方面表现优异。
43 2
|
27天前
|
算法 安全 调度
深入理解操作系统:进程与线程的管理
【10月更文挑战第9天】在数字世界的心脏跳动着的,不是别的,正是操作系统。它如同一位无形的指挥家,协调着硬件与软件的和谐合作。本文将揭开操作系统中进程与线程管理的神秘面纱,通过浅显易懂的语言和生动的比喻,带你走进这一复杂而又精妙的世界。我们将从进程的诞生讲起,探索线程的微妙关系,直至深入内核,理解调度算法的智慧。让我们一起跟随代码的脚步,解锁操作系统的更多秘密。
34 1
|
12天前
|
Linux 调度
探索操作系统核心:进程与线程管理
【10月更文挑战第24天】在数字世界的心脏,操作系统扮演着至关重要的角色。它不仅是计算机硬件与软件之间的桥梁,更是管理和调度资源的大管家。本文将深入探讨操作系统的两大基石——进程与线程,揭示它们如何协同工作以确保系统运行得井井有条。通过深入浅出的解释和直观的代码示例,我们将一起解锁操作系统的管理奥秘,理解其对计算任务高效执行的影响。
|
21天前
|
缓存 算法 Java
Java 中线程和纤程Fiber的区别是什么?
【10月更文挑战第14天】
51 0