1、介绍

进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

我们简单总结下:

进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。

线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。

2、深入理解

2.1 进程(线程+内存+文件/网络句柄)

我们通过上面的图片进行进一步理解:

“内存”:我们通常所理解的内存是我们所见到的(2G/4G/8G/16G)物理内存,它为什么会在进程之中呢?实际上,这里的内存是逻辑内存。指的是内存的寻址空间。每个进程的内存是相互独立的。否则的话会出现一个问题:我们把指针的值改一改就指向其他进程的内存了,通过这样我们岂不是就可以看到其他进程中"微信"或者是"网上银行"的信息,这样的话,那我们的微信聊天记录或者是银行账户的信息就都被别人找到了,这是一个很危险的信号!显然这样是不可能的。

“文件/网络句柄”:它们是所有的进程所共有的,例如打开同一个文件,去抢同一个网络的端口这样的操作是被允许的。

“线程”:接下来,我们就要介绍一下我们的“线程”有关知识

2.2 线程(栈+PC+TLS)

2.2.1 栈

我们通常都是说调用堆栈,其实这里的堆是没有含义的,调用堆栈就是调用栈的意思。那么我们的栈里面有什么呢?我们从主线程的入口main函数,会不断的进行函数调用,每次调用的时候,会把所有的参数和返回地址压入到栈中。

2.2.2 PC

Program Counter 程序计数器,操作系统真正运行的是一个个的线程,而我们的进程只是它的一个容器。PC就是指向当前的指令,而这个指令是放在内存中。每个线程都有一串自己的指针,去指向自己当前所在内存的指针。计算机绝大部分是存储程序性的,说的就是我们的数据和程序是存储在同一片内存里的这个内存中既有我们的数据变量又有我们的程序。所以我们的PC指针就是指向我们的内存的。

2.2.3 TLS

全称:thread local storage 之前我们看到每个进程都有自己独立的内存,这时候我们想,我们的线程有没有一块独立的内存呢?答案是有的,就是TLS。可以用来存储我们线程所独有的数据。可以看到:线程才是我们操作系统所真正去运行的,而进程呢,则是像容器一样他把需要的一些东西放在了一起,而把不需要的东西做了一层隔离,进行隔离开来。

3、小结

  1. 进程要分配一大部分的内存,而线程只需要分配一部分栈就可以了.
  2. 一个程序至少有一个进程,一个进程至少有一个线程.
  3. 进程是资源分配的最小单位,线程是程序执行的最小单位。
  4. 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行.

原文链接:https://juejin.im/post/6844903801321685000

linux进程--进程与线程(十二)相关推荐

  1. Linux时间子系统之(十二):periodic tick

    专题文档汇总目录 Notes:TickDevice模式,以及clocckevent设备.TickDevice设备的初始化,TickDevice是如何加入到系统中的.周期性Tick的产生. 原文地址:L ...

  2. LINUX学习基础篇(十二)痕迹命令

    LINUX学习基础篇(十二)痕迹命令 系统痕迹命令 w命令 who命令 last命令 lastlog命令 lastb命令 系统痕迹命令 系统中有一些重要的痕迹日志文件,如/var/log/wtmp./ ...

  3. Kali Linux Web 渗透测试— 第十二课-websploit

    Kali Linux Web 渗透测试- 第十二课-websploit 文/玄魂 目录 Kali Linux Web 渗透测试- 第十二课-websploit..................... ...

  4. Linux攻关之基础模块十二 进程相关

    Linux系统进程管理 什么是进程 进程生命周期 监控和管理进程 静态监控进程 动态监控进程 信号管理进程 后台进程管理 1.什么是进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分分配内存 ...

  5. linux系统tick维护,Linux时间子系统之(十二):periodic tick

    Linux时间子系统之(十二):periodic tick 作者:linuxer 发布于:2014-12-11 18:59 分类:时间子系统 一.tick device概念介绍 1.数据结构 在内核中 ...

  6. 鸟哥的Linux私房菜(服务器)- 第十二章、网络参数控管者: DHCP 服务器

    第十二章.网络参数控管者: DHCP 服务器 最近更新日期:2011/07/27 想象两种情况:(1)如果你在工作单位使用的是笔记本电脑,而且常常要带着你的笔记本电脑到处跑, 那么由第四章.连上 In ...

  7. linux i2c adapter 增加设备_「正点原子Linux连载」第六十二章Linux SPI驱动实验(一)...

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南>关注官方微信号公众号,获取更多资料:正点原子 第六十二章Linux SPI驱动实验 上一 ...

  8. 【正点原子Linux连载】第六十二章 Linux SPI驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  9. 【正点原子Linux连载】第三十二章 U-Boot启动流程详解 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  10. 鸟哥的Linux私房菜(服务器)- 第二十二章、邮件服务器: Postfix

    第二十二章.邮件服务器: Postfix 最近更新日期:2011/08/10 在这个邮件服务器的架设中,我们首先谈论 Mail 与 DNS 的重要相关性,然后依序介绍 Mail Server 的相关名 ...

最新文章

  1. python列出文件夹所有文件_python-列出所有目录及子目录文件
  2. 获取服务器路径的方式 【记录】
  3. 作为一名程序员,最大的成就感来自哪里?
  4. 网元——就是网络中的元素,网络中的设备。总之,网元是网络管理中可以监视和管理的最小单位...
  5. 用Delphi实现Windows的鼠标钩子函数
  6. 关于MFC共享DLL的模块状态切换 .
  7. CODE[VS] 3411 洪水
  8. java如何使用类数组_java – 如何使用泛型与数组的类?
  9. python 勒索病毒 源码_python生成的exe被360识别为勒索病毒原因及解决方法
  10. Manjaro-KDE自定义应用列表
  11. Java中,异常处理try catch的作用域是局部的
  12. 浏览器嗅探器检测(BrowserDetect.js)程序神器使用
  13. PTA:计算正方体体积与表面积(c++,类)
  14. Linux C 语言内联汇编
  15. SREng 使用指南(一)SREng简介
  16. python判断素数程序_python判断素数程序_Python程序检查素数
  17. php 字符串编码方式转换,php字符串编码转换的常用几种方法_PHP教程
  18. 王城英雄无限钻石服务器,王城英雄无限钻石版
  19. 如何设计签名 我的名字
  20. 给入门程序员找培训班的一些建议

热门文章

  1. python学费多少-Python开发学费一般多少钱?
  2. python开发需要掌握哪些知识-学习Python应该掌握哪些知识点?
  3. 学python要多少钱-学习Python这门课程大概需要多久?费用是多少?
  4. python自动化测试看什么书-Python自动化测试入门,看这一篇就足以
  5. python实现文件下载-Python 实现文件下载
  6. 只学python能找工作吗-只学Python能找到工作吗?老男孩Python视频教程
  7. python教程课后答案-python从入门到实践课后习题第八章
  8. python学习手册视频教程-Python学习精品教程,视频书籍打包下载
  9. python基础知识资料-Python基础知识快速学习系列视频课程
  10. python判断是否为类的实例,是否为子类