美文网首页
进程与线程,堆与栈

进程与线程,堆与栈

作者: 蜘蛛鱼 | 来源:发表于2021-03-16 20:00 被阅读0次

进程与线程

对于操作系统来说,一个任务就是一个进程(Process),其中的“子任务”称为线程(Thread)。
在运行中,多个线程共享进程的资源,进程是资源分配的基本单位,线程是独立运行和调度的基本单位。
进程之间是相互独立的,而线程之间没有单独的地址空间,一个线程死掉等于整个进程死掉。

Python的多进程/多线程实现:

  1. 多进程的程序可以用multiprocessing模块,它提供了一个Process类来代表一个进程对象。如果要启动多个子进程,可以使用Pool的方式来批量创建子进程。
  2. 多任务可以由多进程完成,也可以由一个进程内的多线程完成。python的线程可以用threading模块实现。但在多线程中,所有变量是由所有线程共享的,而多进程中变量是互不影响的。此外,由于python的GIL锁(Global Interpreter Lock),多线程并不能有效利用多核,多核人物需要用多进程实现。

堆与栈

  1. 栈(stack)像一个装数据的桶,后存放的先取,先存放的后取。它是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的
    空间分配是由操作系统自动分配释放且自动回收,存放函数的参数值,局部变量的值等。所以栈数据的生存周期只在函数的运行过程中,运行后就释放掉,不可以再访问。
  2. 堆(heap)像一棵倒过来的树,是一个经过排序的树形数据结构,每个结点都有一个值。它是一种运算受限的线性表。堆的存取是随意的。
    空间分配一般由程序员分配释放,若程序员不释放,程序结束时可能由os回收。

参考:
http://www.cleey.com/blog/single/id/776.html
https://www.jianshu.com/p/52b5a1879aa1
https://buptjz.github.io/2014/04/23/processAndThreads

相关文章

  • 面试常见问题03 - 操作系统(施工ing)

    目录 堆内存与栈内存进程和线程同步与异步阻塞与非阻塞... 1. 内存区域 区域划分 堆区与栈区的区别 2. 进程...

  • 进程与线程,堆与栈

    进程与线程 对于操作系统来说,一个任务就是一个进程(Process),其中的“子任务”称为线程(Thread)。在...

  • Java 线程安全 与 锁

    Java 线程安全 与 锁 多线程内存模型 线程私有栈内存每个线程 私有的内存区域 进程公有堆内存同一个进程 共有...

  • # iOS基础 # iOS面试题一

    基础部分 1、线程和进程有什么区别 那么,线程和进程与堆、栈之间的关系? 2、线程之间的通信 3、几个线程问题 4...

  • iOS开发——面试题1

    基础部分 1、线程和进程有什么区别 那么,线程和进程与堆、栈之间的关系? 2、线程之间的通信 3、几个线程问题 4...

  • 2018-05-08

    线程、进程、协程的区别 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。 线程拥有自己独立的...

  • MS(9):操作系统及网络篇

    一、操作系统 1、堆栈 问题:分别从操作系统的内存角度与进程线程角度解释分析堆,栈二者的区别 问题:堆,栈上面都存...

  • golang技术笔记之goroutine

    进程、线程和协程: 1.进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发...

  • 并发编程

    01 进程和线程 02 并行和并发 03 Java线程 04 栈与栈帧 05 线程上下文切换 06 线程常见方法 ...

  • C# 值类型与引用类型

    基本概念 区别 线程栈与托管堆 Stack 栈:线程栈,由操作系统管理,存放值类型、引用类型变量。栈是基于线程的,...

网友评论

      本文标题:进程与线程,堆与栈

      本文链接:https://www.haomeiwen.com/subject/hmzdcltx.html