学习笔记——进程

进程

一、基本概念

1. 进程定义

  • 进程:程序执行的过程,需要分配内存资源和CPU资源

  • 程序:静态存储在硬盘中的代码和数据的集合

2. PCB(进程控制块)

  • 结构体:process control block

  • 系统用于描述正在运行的进程的所有信息

  • 包含内容

    • PID(进程标识符)

    • 当前工作路径 chdir

    • umask(默认0002)

    • 进程打开的文件列表

    • 信号相关设置(处理异步IO)

    • 用户ID、组ID

    • 其他状态信息

3. 进程资源限制

  • 打开文件个数:1024

  • 栈大小:8M

二、进程与程序的区别

方面 程序 进程
状态 静态(硬盘存储) 动态(执行过程)
存在时间 永久 暂时
状态变化 有创建、调度、消亡
并发性 可以并发执行
资源竞争 存在竞争计算机资源
对应关系 可运行多次→多个进程 可运行一个或多个程序

执行流程

复制代码
.c文件 → 编译 → a.out(可执行文件) → 执行 → process(进程,有PID)

三、虚拟内存与进程空间

1. 虚拟内存作用

  • 隔离性:A进程不能访问B进程的内存空间

  • 安全性:通过权限控制访问内核(Linux系统运行在内存上)

2. 进程分类

  1. 交互式进程:需要用户输入,给出对应输出

  2. 批处理进程:Shell脚本,批量执行命令

  3. 守护进程:自动运行,默认不需输入,休眠状态,特定条件触发运行

    • 示例:更新进程、杀毒软件

四、并发与进程调度

1. 并发

  • 定义:在一个时间段内同时运行多个任务的能力

  • 宏观并行:时间段内每个进程都在运行

  • 微观串行:某一时刻只有一个进程在运行

2. 进程调度

  • 原因:多个进程想运行,但CPU只有一个

  • 常见调度算法

    • 时间片轮转

    • 短任务优先

    • 进程优先级

    • 完全公平调度算法(CFS)

3. 进程上下文切换

  • 场景:A进程CPU时间片耗尽,需运行B进程

  • 过程

    1. A进程将状态信息(PCB、寄存器、PC、内存数据)缓存到硬盘

    2. A进程释放内存

    3. B进程将缓存数据读入内存

    4. B进程开始运行

五、Linux进程相关命令

命令 功能
ps aux 显示所有进程相关信息
top Linux任务管理器
kill -9 pid 强制关闭指定PID的进程
killall -9 a.out 关闭所有名为a.out的进程

六、进程相关函数

1. fork() 函数

复制代码
pid_t fork(void);
  • 功能:从当前进程克隆一个同名新进程(子进程)

  • 特点

    • 一次调用,返回两次

    • 执行顺序不确定(子进程或父进程可能先运行)

    • 变量不共享(各自独立的内存空间)

    • 子进程复制父进程的0-3G空间和PCB(PID不同)

    • 子进程从fork()之后开始执行

  • 返回值

    • 父进程中:成功返回子进程PID(>0),失败返回-1

    • 子进程中:成功返回0

2. getpid() 函数

复制代码
pid_t getpid(void);
  • 功能:获得调用进程的PID

  • 返回值:进程PID

3. getppid() 函数

复制代码
pid_t getppid(void);
  • 功能:获得调用进程的父进程PID

  • 返回值:父进程PID

七、重要概念总结

  1. 进程状态:包括创建、就绪、运行、阻塞、终止等状态

  2. 进程关系:父子进程关系,一个父进程可以有多个子进程

  3. 进程独立性:每个进程有独立的地址空间,互不干扰

  4. 进程复制:fork()创建的子进程是父进程的拷贝

  5. 进程生命周期:从创建到终止的完整过程

八、理解要点

  1. 进程是动态的,程序是静态的

  2. PCB是进程的核心,记录了进程的所有信息

  3. 并发是通过调度实现的,不是真正的并行

  4. 父子进程共享代码段,但数据段是独立的

  5. 进程调度是操作系统的核心功能,确保系统高效运行

相关推荐
sdm07042719 分钟前
yum和开发工具vim/gcc
linux·服务器·centos
仰泳的熊猫2 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
Leinwin6 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382506 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
无极低码6 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
漠北的哈士奇6 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7596 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
软件算法开发6 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
Thera7776 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++