进程与特殊进程
1. 进程基础概念进程的定义进程是操作系统中的一次执行过程它是操作系统进行资源分配和调度的最小单位。进程的核心特征1.动态性进程的实质是程序在多道程序系统中的一次执行过程进程是动态产生动态消亡的2.并发性任何进程都可以同其他进程一起并发执行3.独立性进程是一个能独立运行的基本单位同时也是系统分配资源和调度的独立单位。4.异步性由于进程间的相互制约使进程具有执行的间断性即进程各自独立、不可预知的速度向前执行。进程的组成进程是由三个部分组成的分别为控制块PCB、文本段、数据段进程控制块PCB是操作系统用于管理和控制进程的核心数据结构每个进程在内存中都有唯一的PCB他记录着进程的所有关键信息进程识别信息、状态信息、内存管理信息、资源占用信息等是操作系统感知进程存在的依据文本段是进程中存储可执行指令的内存区域即程序编译后生成的机器码数据段是用于存储进程运行过程中需要的数据根据数据“初始化状态”和“可修改性”可分为初始化数据段、未初始化数据段、堆、栈。虚拟地址和物理地址的映射关系在计算机系统中程序进程看到的地址是虚拟地址而数据真正存放在内存条RAM上的地址是物理地址。它们之间的映射关系是由操作系统和CPU的内存管理单元MMU共同协作完成的。进程的状态运行态R正在cpu执行或者等待调度可中断睡眠态S等待事件如I/O可被信号唤醒不可中断睡眠态(D): 等待关键硬件操作不能被信号中断停止态T收到SIGSTOP信号暂停僵尸态Z进程终止但PCB未被父进程回收死亡态X资源已释放瞬间状态。特殊进程PID0号进程系统启动的第一个进程负责空闲CPU调度。1号进程负责系统初始化、启动服务、回收孤儿进程。2号进程负责内核线程调度。2. 多进程核心函数进程号获取getpid() : 获取当前进程PID。getppid(): 获取父进程PID。进程终止exit标准库函数会刷新缓冲区执行清理函数然后终止。_exit: 系统调用立即终止不刷新缓冲区。资源回收(解决僵尸进程)wait(int*wstatus): 父进程阻塞等待任意一个子进程结束并回收资源。状态解析宏WIFEXITED(wstatus): 判断是否正常终止。WEXITSATUS(wstatus): 获取退出码。WIFSIGNALED(wstatus): 判断是否被信号杀死。waitpid(pid_t pid,int*wstatus,int options): 更灵活的回收函数pid0:等待指定PID的子进程。options WNOHANG:非阻塞等待。3. 特殊进程1.孤儿进程定义父进程先于子进程终止子进程被1号进程init收养。产生原因父进程意外崩溃、被强制终止kill -9或主动退出。特点正常运行完成任务后能正常终止。影响无负面影响是系统正常机制避免了“无主进程”。2.僵尸进程1.定义 子进程先终止但父进程未调用wait()/waitpid()回收其 PCB导致进程状态变为Z。2.影响PCB (包含 PID) 占用内存资源大量僵尸进程会耗尽 PID 资源导致无法创建新进程。3.处理1父进程调用wait()或waitpid()2kill -9无法杀死僵尸因为它已死。只能终止父进程让僵尸被 1 号进程收养由 1 号进程自动回收。3.守护进程1.定义运行在后台的特殊进程独立于控制终端用于提供系统服务或执行周期性任务2.特点父进程为1号进程无法控制终端运行目录通常为 /, 文件描述符重定向到/dev/null。3.创建流程父进程fork()后退出子进程成为孤儿进程被 1 号收养。子进程调用setsid()创建新会话脱离原终端。chdir(/)改变工作目录。umask(0)修改文件掩码。关闭从父进程继承的文件描述符。重定向标准输入/输出/错误到/dev/null。