Linux进程那些事儿(持续更新)

本文深入解析了进程的概念,区分了进程与程序的区别,介绍了进程的内部组成如可执行二进制、内存区域、文件描述符及上下文等。此外,还探讨了进程间的通信方式包括文件、信号、socket和消息队列等,以及进程调度机制和状态变迁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程是啥

  • 进程 = 运行中的程序
进程和程序
  • 程序是代码编译链接后的二进制,存储在磁盘中,静态的
  • 进程是运行中的程序,运行在内存中,动态变化的

进程里有啥

  • 可执行的二进制:就是程序
  • 内存:分好几个区域,data/bss/堆/栈,记录临时计算结果等
  • 文件描述符:指向进程打开的文件
  • 进程上下文:寄存器,程序计数器
操作系统用PCB记录上面的这些信息

进程怎么通信(IPC)

下面几种适用大部分OS
  • 文件:同机器的进程访问本地磁盘的文件,不同机器的进程访问文件服务器的文件
  • 信号:同机器,不能传输数据
  • socket:通过网络接口传输数据,传输协议tcp/udp/sctp
  • 消息队列:是一种异步通信协议,是一种概念,UNIX有几种实现
下面适用遵循posix的OS
  • Unix domain socket:类似socket,通信不走网络协议,都在内核中发生
  • pipeline:标准数据流作为媒介的进程序列,前一个输出作为后一个输入
  • 命名pipe:用普通文件作为通讯媒介的管道,mkfifo
  • 共享内存:一段多个cpu均可以访问的内存

进程怎么调度

进程状态
  • created:把二进制从磁盘加载到内存
  • waiting:等待调度
  • running:执行指令阶段
  • blocked:等待资源
  • terminated:运行结束,从内存清除
进程调度:时间片轮询

进程父子关系

  • 进程fork儿子进程,儿子退出会给父进程发个信号,父亲退出不会给儿子发信号;
  • 僵尸进程:儿子退出后,没有被父亲回收;此时操作系统已经释放了僵尸进程的大部分资源,仅仅保留返回码和资源利用率;其实僵尸影响不大
  • 孤儿进程:父亲退后后,儿子还在。会被init进程领养。

参考资料

process-wikipedia
parent process

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值