linux知识(一) 程序、进程与线程

  • 程序
  • 进程
    • 程序如何变成进程?
  • 线程
    • 线程与进程
    • fork和创建新线程的区别
    • 优点

程序

程序:程序是已编译好的二进制文件,存储在磁盘中,不占用系统资源
程序包括:

  • RO段:只读代码段(code段.text段)和常量段(RO data段/.constdata段)
  • RW段:(.data段)已初始化成非0的变量段(全局变量和静态变量)
  • ZI段:(.bss段)未初始化的为0的变量段(全局变量和静态变量)

进程

进程: 进程是资源分配的最小单位,占用系统资源
进程主要包括:

  • RO段:只读代码段(code段.text段)和常量段(RO data段/.constdata段)
  • RW段:(.data段)已初始化成非0的变量段(全局变量和静态变量)
  • ZI段:(.bss段)未初始化的为0的变量段(全局变量和静态变量)
  • 栈:存储局部、临时变量,函数调用时,存储的函数返回指针,用于控制函数的调用和返回。程序开始时自动分配内存,结束时自动释放内存
  • 堆:存储动态内存空间,需要程序员手工分配,手动释放。

程序如何变成进程?

当我们启动程序的时候,由DMA模块将程序从磁盘中拷贝到内存中,同时启动DMA中断,让cpu来加载进程

线程

线程:线程是资源调度的最小单位

线程与进程

假设linux系统中有三个进程同时运行,cpu分配每个进程时间片分别是3s、2s、4s.进程A中有两个线程,一个线程对应一个cpu的核心,进程A就会在分配的2s的时间片中用两个线程来处理事情,提高处理的效率。

fork和创建新线程的区别

  • 当一个进程执行一个fork调用的时候,会创建出进程的一个新拷贝,新进程将拥有它自己的变量和自己的pid。新进程运行时是独立的。
  • 在进程里面创建一个新线程的时候,新的执行线程拥有自己的堆栈,当共享了全局变量、文件描述符、信号处理器和当前的子目录状态

优点

  • 创建一个新线程的代价要比创建一个新进 程小得多
  • 与进程之间的切换相比,线程之间的切换 需要操作系统做的工作至少在理论上要少很多
  • 线程占用的资源要比进程少很多

linux知识(一) 程序、进程与线程相关推荐

  1. Linux系统编程之进程与线程控制原语对比

    Linux系统编程之进程与线程控制原语对比 进程 线程 fork pthread_create exit pthread_exit wait pthread_join kill pthread_can ...

  2. 【Linux 内核】进程管理 ( 进程与操作系统 | 进程与程序 | 进程与线程 | 虚拟地址空间 )

    文章目录 一.进程与操作系统 二.进程与程序 三.进程与线程 四.虚拟地址空间 一.进程与操作系统 操作系统与硬件的关系 : 操作系统 使用 硬件 提供的资源 , 如 CPU , 内存 , 磁盘 , ...

  3. linux+kill+进程和线程,什么是程序,进程和线程?三者之间有何关系?

    进程 进程与线程的历史 进程与线程之间的关系 重点 进程 和 线程的概念 进程和程序关系 cpu在执行程序时什么叫进程 swap 内存的缺页异常 大的异常 小的异常 内存映射mmap 内存泄露 tas ...

  4. 【Linux系统编程】进程和线程的区别

    00. 目录 文章目录 00. 目录 01. 进程和线程区别 02. 附录 01. 进程和线程区别 在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需 ...

  5. linux+kill+进程和线程,在LINUX系统中 关于进程和线程终止的问题

    #include #include pthread_t thread; void *fun(void *arg) { printf("hell0n"); pthread_exit( ...

  6. linux查看进程中的线程名,linux 怎么样查看一个进程的线程

    一.linux系统支持的最大进程数 限制1:既然系统使用pid_t表示进程号,那么最大进程数不能超过pid_t类型的最大值吧 限制2:使用命令ulimit -u查看系统中限制的最大进程数,我的机器上是 ...

  7. Linux系统编程--守护进程、线程

    守护进程 Daemon(精灵)进程,是 Linux 中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或 等待处理某些发生的事件.一般采用以 d 结尾的名字. Linux 后台的一些系统服务 ...

  8. Linux 中统计一个进程的线程数

    如果你想看到 Linux 中每个进程的线程数,有以下几种方法可以做到这一点. 方法一: /proc proc 伪文件系统,它驻留在 /proc 目录,这是最简单的方法来查看任何活动进程的线程数. /p ...

  9. Linux 查看应用程序进程/端口号/内存/CPU使用情况

    1.查看运行的程序的pid(线程号) {appName}:应用程序名称 ps aux | grep {appName} 2.根据线程号查询正在运行的程序的port(端口号) {pid}:程序的线程号 ...

  10. linux 多进程 同步,Linux内核同步,进程,线程同步

    包括我自己在内,很多人对内核,进程,线程同步都不是很清楚,下面稍微总结一下: 内核同步: 主要是防止多核处理器同时访问修改某段代码,或者在对设备驱动程序进行临界区保护.主要有一下几种方式: 1. Mu ...

最新文章

  1. 基于springboot实现疫情管理系统
  2. Linux如何实现断点续传文件功能?
  3. linux设备驱动归纳总结(六):2.分享中断号【转】
  4. 收集经常使用的.net开源项目
  5. 百度地图得到两地点(通过经纬度)的距离、 通过经纬度获取详细地址
  6. 458. 可怜的小猪
  7. 分布式理论-CAP定理
  8. [Delphi]ListView基本用法大全
  9. mac 遇到的奇怪问题?
  10. 结对编程后传之做汉堡
  11. ADOQuery的locktype属性
  12. 几种常用设计模式的简单示例
  13. 播放量子计算机的声音,首次实现:用声音纠缠了两个量子比特!
  14. 反激式开关电源电路测试记录(二)
  15. 机器翻译技术的含义、发展和应用
  16. 一分钟解决“仅限中国大陆地区播放” (转)
  17. 解决Truffle搭建项目环境时候出现ExtendableError: Could not find suitable configuration file.
  18. eos安装区块链开发环境
  19. ios13 无法传参_iOS13.1 正式版来了,加入了降频功能
  20. 【软件测试-7】 自动化测试selenium篇(一)

热门文章

  1. android-铃声的设置与播放
  2. cocos2dx 3.x 蒙板 遮罩 点击圆功能
  3. iOS正则表达式(亲测,持续更新)
  4. 为什么django+mongo在windows上session能够获取到,同样的程序在linux上就会报session的变量错误,keyerror?...
  5. Daily Scrum 11.18
  6. [Json] C#ConvertJson|List转成Json|对象|集合|DataSet|DataTable|DataReader转成Json (转载)...
  7. java线程统一_Java线程结果不一致
  8. java空格键_Java KeyPressed-如果其他键也太旧,则无法检测是否按下了空格键
  9. java三大特性 继承_java基础(二)-----java的三大特性之继承
  10. android adb杀死服务,Android app是如何杀掉的