00. 目录

文章目录

  • 00. 目录
  • 01. 进程和线程区别
  • 02. 附录

01. 进程和线程区别

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

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

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

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

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

**如果说进程是一个资源管家,负责从主人那里要资源的话,那么线程就是干活的苦力。**一个管家必须完成一项工作,就需要最少一个苦力,也就是说,一个进程最少包含一个线程,也可以包含多个线程。苦力要干活,就需要依托于管家,所以说一个线程,必须属于某一个进程。进程有自己的地址空间,线程使用进程的地址空间,也就是说,进程里的资源,线程都是有权访问的,比如说堆啊,栈啊,静态存储区什么的。

线程就是个无产阶级,但无产阶级干活,总得有自己的劳动工具吧,这个劳动工具就是栈,线程有自己的栈,这个栈仍然是使用进程的地址空间,只是这块空间被线程标记为了栈。每个线程都会有自己私有的栈,这个栈是不可以被其他线程所访问的。

进程所维护的是程序所包含的资源(静态资源), 如:地址空间,打开的文件句柄集,文件系统状态,信号处理handler,等;

线程所维护的运行相关的资源(动态资源),如:运行栈,调度相关的控制信息,待处理的信号集,等;

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

最后总结一句话:进程是CPU分配资源的最小单位,线程是CPU调度的最小单位。

02. 附录

2.1 参考博客: 关于Linux的进程和线程

【Linux系统编程】进程和线程的区别相关推荐

  1. Linux 系统编程 -进程概念篇

    Linux系统编程-进程篇 冯诺依曼体系结构 冯诺依曼的两个重要思想 当代计算机的三级缓存 操作系统 操作系统的概念 操作系统的组成 操作系统作用 Linux下的操作系统体系 进程 进程概念 进程特性 ...

  2. Linux系统编程——进程基础知识

    Linux系统编程--进程基础知识 1.程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁-) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程 ...

  3. Linux系统编程——进程

    一.进程概念 基础 程序:死的.只占用磁盘空间. --剧本 进程:活的.运行起来的程序.占用内存,cpu等系统资源. --戏 并发 并发的出现基于CPU的发展.然后有了多道程序设计(多进程并发执行). ...

  4. Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)

    线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread). 更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 线程在进程内部运行,本 ...

  5. Linux系统编程 进程控制

    文章目录 01. 学习目标 02. 进程和程序 (理解) 03. 单道.多道程序设计(了解) 3.1 单道程序设计 3.2 多道程序设计 04. 并行和并发(理解) 05. MMU(了解) 06. 进 ...

  6. Linux系统编程---13(线程控制函数,创建线程,循环创建多个线程,线程间共享全局变量)

    线程控制 操作系统并没有提供创建线程的系统调用接口,因此大佬们封装了一个线程的接口库实现线程控制.意为着用户创建线程都使用的是库函数(所以有时候我们说创建的线程是一个用户态线程,但是在内核中对应有一个 ...

  7. linux怎么创建5个线程,简明Linux系统编程_5_创建线程(总第238期)

    这节课为大家讲解一个进程如何创建线程,创建线程的函数pthread_create(),如果通过手册查找该函数的作用,参数和返回值,并通过代码运行来理解进程和线程之间的关系. 有如下几点需要着重说明一下 ...

  8. Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)

    对比 进程 线程 fork pthread_create exit (10) pthread_exit (void *) wait (int *) pthread_join (,void **)阻塞 ...

  9. Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)

    同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两 个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容 ...

  10. Linux系统编程——进程替换:exec 函数族

    在 Windows 平台下.我们能够通过双击运行可运行程序.让这个可运行程序成为一个进程:而在 Linux 平台.我们能够通过 ./ 运行,让一个可运行程序成为一个进程. 可是,假设我们本来就执行着一 ...

最新文章

  1. 创建oracle数据库有哪些方法,oracle11g创建数据库的方法-Oracle
  2. python在线翻译脚本_python写一个翻译的小脚本
  3. SAE帮助「海底小纵队学英语」全面拥抱Serverless
  4. Spring MVC测试框架入门–第2部分
  5. JS将指定的时间戳转为UTC时间
  6. java找不到符号类socket,编译报错+解决方法:错误: 找不到符号
  7. 视觉SLAM笔记(23) 图像
  8. 如何降低前端代码圈复杂度?
  9. 机器人“病患”会流血会休克,魔鬼训练从斯坦福医院开始 |准医生的噩梦
  10. 《构建之法》8、9、10
  11. ajax标准完整写法
  12. 虎胆龙威5java7723,汉米尔顿腕表联手《虎胆龙威5》再度演绎热血豪情
  13. java拼图游戏(带文档资料)
  14. 步进电机基础(2.6)-直线步进电机
  15. NRF52832之蓝牙MAC地址修改
  16. 【案例 4-2】饲养员喂养动物
  17. 逍遥模拟器配合fiddler爬取抖音视频!开源免费!
  18. C++实现first集follow集
  19. python 爬虫 豆瓣电影一周口碑榜
  20. 博客之星活动改进建议

热门文章

  1. ios url缓存策略——NSURLCache、 NSURLRequest
  2. DotnetCharting
  3. 交流电机数字控制系统_敲黑板!新型变频调速控制系统对交流电动机设计的特殊要求...
  4. Game of Hyper Knights LightOJ - 1315
  5. 怎么会执行sql 懒加载 没用_太神奇的 SQL 查询经历,group by 慢查询优化!
  6. python打开360浏览器_python selenium使用360浏览器出现新皮肤设置怎么办?
  7. 直角三角形的边角关系_华师大版九年级第四章解直角三角形,知识点讲解加经典例题分析...
  8. bzoj 1031 [JSOI2007]字符加密Cipher 后缀数组
  9. mysql查询缓慢原因和解决方案
  10. mybatis(mapper映射文件)