进程与线程

进程与线程

进程与线程

进程

  • 程序由指令和数据组成。进程是运行的程序的一个实例,是系统进行分配和调度的基本单位。每个进程都有独立的地址空间(即有自己的内存空间,包括代码段、数据段、堆和栈等)

  • 进程之间相互隔离。(除非它们通过进程间通信(IPC)机制共享资源

  • 进程的创建、调度、销毁通常都由操作系统内核控制,并创建和销毁进程的开销较大,因为它们涉及到资源的分配与回收。

线程

  • 线程是进程内部的一个执行单元,是CPU调度与执行的基本单位。一个进程包含一个或多个线程,这些线程共享所属进程空间与资源(包括内存、文件等)。所以线程之间通信较容易,可以直接读写同一块内存区域

  • 每个线程都有自己的程序计数器、栈(用于存储函数调用和局部变量)和一组寄存器,但不拥有自己独立的地址空间

  • 线程的创建和切换相较于进程更为轻量级,因为它们不需要重新分配资源,这使得线程成为实现并发处理和提高程序响应速度的有效手段。

  • 线程之间需要协调访问共享资源,以避免竞态条件和数据不一致的问题,常见的同步机制包括互斥锁、信号量和条件变量等。

二者对比

  • 进程基本相互独立;线程存在一个进程中,是进程的一个子集

  • 进程拥有共享资源,如内存空间,供其内部线程共享

  • 进程间通信较复杂

    • 同一计算机的进程间通信称IPC(Inter-process communication)

    • 不同计算机间通信,需要通过网络,并遵循共同的网络协议,如HTTP

  • 线程通信相对简单,因为它们共享线程,如多个线程可访问同一个共享变量

  • 线程更轻量,线程上下文切换成本比进程上下文切换低。

并行与并发

并行:多核 cpu下,每个 核(core) 同时调度运行线程

并发:线程轮流使用CPU的做法称为并发。

如果判断并行与并发:看看是不是同一时刻在执行。同一时刻执行,并行;否则是并发。

并发:

单核 cpu 下,线程实际还是 串行执行 的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片(windows 下时间片最小约为 15 毫秒)分给不同的程序使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感 觉是 同时运行的 。总结为一句话就是: 微观串行,宏观并行 ,一般会将这种 线程轮流使用 CPU 的做法称为并发

并行:

多核 cpu下,每个 核(core) 都可以调度运行线程,这时候线程可以是并行的。

总结

进程与线程:

  1. 地址空间:

    • 进程是程序的一个实例,有子集独立的地址空间;

    • 线程是进程的子集,虽然有自己的程序计数器、栈、一组寄存器,但不拥有自己独立的地址空间

  2. 分配:

    • 进程创建、调度、销毁由系统内核控制,创建销毁开销大

    • 线程创建与切换较进程更为轻量,不需重新分配资源

  3. 通信

    • 进程之间相互隔离,除非通过一些机制进行通信

    • 线程之间通信较容易,可直接读写同一块内存区域

并行与并发

  • 并行:多核 cpu下,每个 核(core) 同时调度运行线程(同时执行)

  • 并发:线程轮流使用CPU的做法称为并发。(非同时执行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值