学习笔记——进程

进程

一、基本概念

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. 进程调度是操作系统的核心功能,确保系统高效运行

相关推荐
Risk Actuary2 小时前
磁道优化分布的一道题
linux·运维·服务器
云计算小黄同学2 小时前
【最详细】Kubernetes探针介绍、应用与最佳实践
运维·云原生·容器·kubernetes
天赐学c语言2 小时前
12.11 - 最长回文子串 && main函数是如何开始的
c++·算法·leetcode
CoovallyAIHub2 小时前
AI模型训练有哪些关键步骤与必备工具?从概念到可运行的智能模型
深度学习·算法·计算机视觉
亚控科技2 小时前
亚控KingWater+DeepSeek让湖南常德水厂“智”变升级
运维·智慧水务·kingscada·亚控科技
程序员-King.2 小时前
day122—二分查找—完成旅途的最少时间(LeetCode-2187)
算法·leetcode·二分查找·双指针
暗之星瞳2 小时前
线性回归+实例
算法·回归·线性回归
little~钰2 小时前
整体二分——上
算法
Swift社区2 小时前
LeetCode 447 - 回旋镖的数量
linux·算法·leetcode