在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体。

为了让进程完成一定的工作,进程必须至少包含一个线程。

进程,直观点说,保存在硬盘上的程序运行以后,会在内存空间里形成一个独立的内存体,这个内存体有自己的地址空间,有自己的堆,上级挂靠单位是操作系统。操作系统会以进程为单位,分配系统资源,所以我们也说,进程是资源分配的最小单位

线程存在与进程当中,是操作系统调度执行的最小单位。说通俗点,线程就是干活的。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位线程是进程的一个实体,是 CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

如果说进程是一个资源管家,负责从主人那里要资源的话,那么线程就是干活的苦力。一个管家必须完成一项工作,就需要最少一个苦力,也就是说,一个进程最少包含一个线程,也可以包含多个线程。苦力要干活,就需要依托于管家,所以说一个线程,必须属于某一个进程。进程有自己的地址空间,线程使用进程的地址空间,也就是说,进程里的资源,线程都是有权访问的,比如说堆啊,栈啊,静态存储区什么的。
线程就是个无产阶级,但无产阶级干活,总得有自己的劳动工具吧,这个劳动工具就是栈,线程有自己的栈,这个栈仍然是使用进程的地址空间,只是这块空间被线程标记为了栈。每个线程都会有自己私有的栈,这个栈是不可以被其他线程所访问的。

进程所维护的是程序所包含的资源(静态资源)

如:地址空间,打开的文件句柄集,文件系统状态,信号处理handler,等;
线程所维护的运行相关的资源(动态资源),

如:运行栈,调度相关的控制信息,待处理的信号集,等;

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

Linux系统编程 -- 进程与线程之间差别 进程是系统资源分配的最小单位,线程是进程执行的最小单位相关推荐

  1. 黑马程序员--线程之间的通信,等待与唤醒机制,线程的终止方式,线程中的其他方法,优先级,toString() 守护线程,GUI图形化界面

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  2. 【Linux系统编程学习】C库IO函数与系统IO函数的关系

    此为黑马Linux课程笔记. 1. C标准IO函数工作流程 如图,以C库函数的fopen为例,其返回类型是FILE类型的指针,FILE类型包含很多内容,主要包含三个内容:文件描述符.文件读写指针的位置 ...

  3. Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)

    本篇博文转自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了 ...

  4. Linux系统编程总结

    day2 vim的三种工作模式 命令模式 vi hello.c zz 保存退出 2.编辑模式 i a o s (有大写)可以写东西 3.末行模式: 文本和末行模式不能直接切换 要切换回命令模式 再到末 ...

  5. Linux多线程编程:pthread线程创建、退出、回收、分离、取消

    文章目录 Linux线程 1.简单了解一下线程 2.线程创建:pthread_create 3.线程传参注意事项 4.线程退出:pthread_exit 5.线程回收:pthread_join 6.线 ...

  6. 攻克 Linux 系统编程

    课程亮点 完整学习路线图,系统掌握核心知识点 内核源码深入分析,知其然更知所以然 高频问题全面汇总,精准定位症结所在 八大主题商业案例,实操中获得拔高提升 专家推荐 曾与宇文拓共事五年,他对技术的钻研 ...

  7. 不占用系统资源的休眠linux c,Linux-c系统编程

    进程相关的概念 程序和进程 程序:二进制文件.占用磁盘空间 进程:运行着的程序,数据在内存中,占用系统资源,CPU,物理内存() PCB描述进程(进程控制块) 把描述进程的所有信息的那条记录叫做 PC ...

  8. linux应用编程之进程间同步

    一.描述 在操作系统中,异步并发执行环境下的一组进程,因为相互制约关系,进而互相发送消息.互相合作.互相等待,使得各进程按一定的顺序和速度执行,称为进程间的同步.具有同步关系的一组并发进程,称为合作进 ...

  9. 嵌入式Linux系统编程学习之十三信号概念

      信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件),是硬件中断的软件模拟(软中断),它是 UNIX 进程通信最古老的方法.信号可以直接进行用户空间进程和内核进程之间的交互,内核进程 ...

  10. Linux C 编程开发环境(工具链,编译,汇编,链接,库)基础知识与实践

    前言 本博文包括对下面书籍的学习笔记,以及实际上机编程练习,程序运行分析等的总结,作为日后工作的参考: <UNIX 环境高级编程(第三版)> <深度探索 Linux 操作系统:系统构 ...

最新文章

  1. Actipro WPF Studio破解
  2. maven 引入本地 jar
  3. hdu 2048 神、上帝以及老天爷
  4. 圆周率一千万亿位_圆周率是如何计算的?祖冲之的缀术居然失传了
  5. Java Web ServletResponse
  6. mysql索引统计信息更新_MySQL索引统计信息更新相关的参数
  7. Jmeter模拟多用户同时登陆
  8. mysql 数据导出语句_MySQL 数据导出
  9. 关于HP C7K的firmware management中的power policy理解
  10. SAP PP制造生产教程
  11. PCB设计流程图 思路清晰远比卖力苦干重要
  12. 吹捧导师师娘“神论文”的作者,被处理了
  13. oracle10安装完成之后测试,RHEL4U4和RHEL5安装oracle10g(测试过绝对可以成功)
  14. RecyclerView的canScrollVertically方法踩坑
  15. 数学建模对计算机考研有用吗,数学建模有必要参加吗
  16. 程序员的奋斗史(二十八)——寒门再难出贵子?
  17. 遇到oracle错误12514,【ORACLE】提示ORA-12514错误处理
  18. 数据结构与算法-三对角矩阵的压缩公式推导
  19. java爬取捧腹网段子
  20. git branch -a无法获取远程分支,git fetch依然无法获取的解决办法

热门文章

  1. L1-023 输出GPLT (20 分) — 团体程序设计天梯赛
  2. 创建设备文件节点_使用device_create实例分析
  3. C/C++中struct/union/class内存对齐
  4. C++全局函数与成员函数的区别
  5. 'WebElement' object is not iterable
  6. [序列化] SerializeHelper--序列化操作帮助类 (转载)
  7. 测试驱动开发与极限编程思想浅析
  8. HCIE-RS面试--STP选举原理,状态机和接口角色
  9. Security+ 学习笔记56 增强隐私保护的技术
  10. HCIE Security AC的准入技术 备考笔记(幕布)