1. 程序与进程1.1 程序Program程序是存放在磁盘上的指令和数据的有序集合通常以文件形式存在。它是静态的是代码和数据的物理载体。1.2 进程Process进程是执行一个程序所分配的资源的总称是程序的一次执行过程。它是动态的具有生命周期包括创建、调度、执行和消亡。核心区别程序是静态的代码文件进程是动态的执行实体一个程序可以对应多个进程如同时打开多个浏览器窗口进程拥有系统分配的资源内存、CPU时间片、文件描述符等2. 进程的内存布局一个进程在内存中通常包含以下几个部分2.1 代码段Text Segment存放程序执行代码的区域大小在程序运行前就已确定通常是只读的防止程序意外修改自身指令可能包含一些只读的常数变量如字符串常量2.2 数据段Data Segment存放程序中已初始化的全局变量和静态变量在程序加载时分配并初始化2.3 BSS段Block Started by Symbol存放程序中未初始化的全局变量和静态变量在程序加载时分配但初始值全为0或空指针不占用磁盘空间只在内存中分配2.4 堆Heap用于动态内存分配的区域当调用malloc、calloc、realloc等函数时从堆中分配内存当调用free函数时将内存释放回堆堆的大小可以动态增长或缩减需要程序员手动管理内存分配和释放2.5 栈Stack存放函数调用时的局部变量、函数参数、返回地址等不包括static声明的变量这类变量在数据段中采用先进后出LIFO原则适合保存/恢复调用现场由系统自动管理函数调用时压栈返回时弹栈注意代码段、数据段、BSS段属于程序本身的内容在程序加载时确定而堆和栈是在进程运行时动态管理的。3. 进程控制块PCB进程控制块是操作系统管理进程的核心数据结构每个进程都有一个对应的PCB。3.1 PCB包含的主要信息进程标识符PID唯一标识一个进程进程状态运行、就绪、阻塞等程序计数器下一条要执行的指令地址CPU寄存器进程切换时需要保存的寄存器值CPU调度信息进程优先级、调度队列指针等内存管理信息基址寄存器、界限寄存器、页表等记账信息CPU使用时间、时间限制等I/O状态信息分配给进程的I/O设备列表、打开文件列表等3.2 PCB的作用作为进程存在的唯一标志保存进程切换时的现场信息提供进程调度所需的信息实现进程间的通信和同步4. 进程类型4.1 交互式进程Interactive Processes在shell下启动与用户交互可以在前台运行占用终端也可以在后台运行示例文本编辑器、终端命令等4.2 批处理进程Batch Processes与终端无关通常被提交到作业队列中顺序执行不需要用户交互自动完成任务示例编译任务、数据分析任务等4.3 守护进程Daemon Processes系统启动时启动一直在后台运行不与任何终端关联为系统或其他进程提供服务通常以d结尾如httpd、sshd、cron等生命周期长直到系统关闭5. 进程状态进程在其生命周期中会经历多种状态变化5.1 运行态Running进程正在CPU上执行单核CPU任一时刻只有一个进程处于运行态5.2 就绪态Ready进程已准备好运行等待CPU调度具备运行条件只差CPU资源5.3 阻塞态Blocked/Waiting进程在等待某个事件的发生或某种系统资源可中断睡眠可以被信号唤醒如等待用户输入不可中断睡眠不能被信号唤醒如等待磁盘I/O完成5.4 停止态Stopped进程被暂停执行通常由信号如SIGSTOP引起收到继续信号如SIGCONT后可恢复运行常用于调试或作业控制5.5 僵尸态Zombie进程已终止但其PCB尚未被父进程回收占用系统资源PID但不再执行父进程应调用wait()或waitpid()来回收僵尸进程5.6 死亡态Dead/Terminated进程已完全终止所有资源已被释放PCB已被回收进程不复存在6. 进程状态转换创建 → 就绪 ↔ 运行 → 终止 ↑ ↓ └── 阻塞创建新进程被创建进入就绪态调度就绪态进程被调度器选中进入运行态时间片用完运行态进程时间片用完回到就绪态等待事件运行态进程需要等待I/O等事件进入阻塞态事件发生阻塞态进程等待的事件发生回到就绪态终止运行态进程执行完毕或被杀死进入终止态