做网站套模板,网站建设 自动跳转,上海本地app推荐,WordPress表单支付插件目录
进程基本概念
进程相关命令
进程的创建
进程的调度
进程相关函数接口
进程的消亡
实例#xff1a;创建九个子进程
目录
进程基本概念
进程相关命令
进程的创建
进程的调度
进程相关函数接口
进程的消亡
实例#xff1a;创建九个子进程
exec函数…目录
进程基本概念
进程相关命令
进程的创建
进程的调度
进程相关函数接口
进程的消亡
实例创建九个子进程
目录
进程基本概念
进程相关命令
进程的创建
进程的调度
进程相关函数接口
进程的消亡
实例创建九个子进程
exec函数族 进程基本概念 1.进程: 程序存放在外存中的一段数据组成的文件 进程是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡
进程相关命令 1.top 动态查看当前系统中的所有进程信息根据CPU占用率排序 PID:唯一识别进程的ID号0 NI优先级:Linux系统中数值低,优先级高-20 - 19 Windows系统中数值高,优先级高 进程状态: R 运行态/就绪态 S 睡眠态/可唤醒等待态 D 不可唤醒等待态 T 暂停态 Z 僵尸态 X 结束态 q退出 2.nice 以指定优先级来运行进程 示例: nice -n 优先级 要执行的集成任务 renice 重新设定一个正在运行的进程的优先级 示例: renice -n 优先级 进程PID 3.kill 杀死指定的进程任务 示例: kill -9 进程PID killall 杀死进程名对应的所有进程任务 示例: killall -9 进程名 4.ps -ef 查看当前时刻所有进程的信息 PPID:父进程的ID号 ps -ef | grep a.out 通过管道将前面命令的输出作为面命令的输入 5.pstree 查看进程树关系 6.ps -aux 查看当前时刻的进程信息 7. ./a.out 将a.out任务放在后台执行 8.jobs 查看一个终端下后台执行的所有任务 9.fg 编号 将后台任务放到前台执
进程的创建
32bits 一个进程在运行时,操作系统会为该进程分配 0 - 4G 虚拟内存空间,分为文本段、数据段、系统数据段 文本段: 也称为文本区,存放代码和指令 数据段: 也称为数据区,可以细分为: 1.字符串常量区 2.未初始化全局变量/静态变量 3.已初始化全局变量/静态变量 系统数据段: 包含 堆区大概几G1程序员手动管理空间要自己malloc和free 2堆的增长方向是自低向高 栈区基本就是8MB1局部变量存放在栈区 2未经初始化的随机值 3代码执行到变量定义的时候开辟空间 4超过变量作用域回收空间 5栈的增长方向自高向低 4.进程中虚拟地址和物理地址的关系 1. 0 - 4G虚拟内存空间只有一个 2. 实际物理地址中每个进程空间独立 3. 通过MMU内存映射单元,单一个进程执行时,将物理地址中的数据加载到虚拟地址中运行
进程的调度 1.常见的调度算法: 1.先来先执行,后来后执行 2.高优先级调度算法 3.时间片轮转调度算法 4.多级队列反馈调度算法 5.负载均衡调度算法 时间片: 1.CPU在一个任务中的运行时间称为一个时间片 2.宏观并行,微观串行 3.进程的状态: R 运行态、就绪态 S 睡眠态/可唤醒等待态 D 不可唤醒等待态 T 暂停态 Z 僵尸态 X 结束态 进程相关函数接口 1.进程的创建 fork pid_t fork(void); 功能: 创建一个子进程,新创建的进程称为原来进程的子进程,原来的进程称为新进程的父进程 参数: void 缺省 返回值: 成功子进程返回0 父进程返回子进程的PID 失败返回-1 父进程调用fork创建子进程,子进程拷贝父进程的文本段、数据段、系统数据段 除了内核不拷贝。 宏观并行微观是切换进行具体根据情况。 getpid pid_t getpid(void); 功能: 获得调用进程的PID号 getppid pid_t getppid(void); 功能: 获得调用进程的PPID获得父进程的PID 2.exit void exit(int status); 功能: 让进程结束 参数: status:进程结束的状态 返回值 缺省 exit在主函数中使用和return效果一致 exit会刷新缓存区 _exit void _exit(int status); 功能: 让进程直接结束不会刷新缓存区。 参数: status:进程结束的状态 返回值: 缺省
进程的消亡 1.僵尸进程 进程代码执行结束,空间没有被回收,称为僵尸进程 2.如何避免产生僵尸进程? 1.让父进程先结束 2.让父进程回收子进程空间 3.孤儿进程: 进程的父进程先结束,此时该进程称为孤儿进程,被系统进程收养,进程再结束时,会被系统进程回收进程空间
8.wait pid_t wait(int *wstatus); 功能: 回收子进程空间 参数 wstatus:存放子进程结束状态空间的首地址 返回值: 成功返回回收到的子进程PID 失败返回-1 1.wait函数具有阻塞功能 2.wait函数具有同步功能 WIFEXITED(wstatus) 进程是否正常退出 WEXITSTATUS(wstatus) 进程结束状态值 WIFSIGNALED(wstatus) 进程是否被信号杀死 WTERMSIG(wstatus) 获得杀死进程的信号编号
实例创建九个子进程 exec函数族 extern char **environ; int execl(const char *path, const char *arg, ... /* (char *) NULL */); int execlp(const char *file, const char *arg, ... /* (char *) NULL */); int execle(const char *path, const char *arg, ... /*, (char *) NULL, char * const envp[] */); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execvpe(const char *file, char *const argv[], char *const envp[]); 执行结束子程序整个代码也会结束。 功能: 利用进程空间执行另外一份代码 l:参数以列表形式传递 v:参数以指针数组形式传递 e:更新环境变量 p:在系统指定目录下查找文件 getenv char *getenv(const char *name); 功能 获得环境变量名对应的值也就是平时的PATH setenv int setenv(const char *name, const char *value, int overwrite); 功能: 设置环境变量的值 参数 name:环境变量名 value:环境变量的值 overwrite:非0 覆盖 0 不覆盖 返回值 成功返回0 失败返回-1