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

程序

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

  • 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。新进程运行时是独立的。
  • 在进程里面创建一个新线程的时候,新的执行线程拥有自己的堆栈,当共享了全局变量、文件描述符、信号处理器和当前的子目录状态

优点

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenshida_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值