深圳优秀网站建设,品牌策略,旧房装修找哪家,有了php源码怎么做网站多任务#xff1a;让系统具备同时处理多个事件的能力。让系统具备并发性能。方法#xff1a;进程和线程。这里先讲进程。
进程#xff08;process#xff09;#xff1a;正在执行的程序#xff0c;执行过程中需要消耗内存和CPU。 进程的创建#xff1a;操作系统在进程创…多任务让系统具备同时处理多个事件的能力。让系统具备并发性能。方法进程和线程。这里先讲进程。
进程process正在执行的程序执行过程中需要消耗内存和CPU。 进程的创建操作系统在进程创建时会为每个进程分配4G的虚拟内存空间。 进程的调度宏观并行微观串行 进程的状态第一张是简化版的进程状态助于理解第二张是Linux的进程状态 进程的消亡进程的退出 -》进程空间的回收 查看进程的命令
ps -aux查看进程的相关信息
ps -aux | grep ./a.out
| 管道将前面结果的输出作为后面的输入
grep 查找
ps -ef查看进程的信息父进程
pstree查看进程间的关系
pstree -p查看进程间的关系包含进程id号
pstree -sp 进程ID查看指定进程的族谱关系
top查看进程信息CPU占有率MEM占有率
kill给进程发送信号kill -信号num 进程ID 给指定进程发送一个信号 创建进程
pid_t pid fork子进程拷贝父进程0-3G的虚拟内存空间PCB块进程ID号不会拷贝
功能创建一个新的进程
返回值0 : 父进程返回值是子进程id号0子进程-1 出错
这里放一张图帮助理解 getpid():用来获取当前进程的id号
进程的消亡
1. 进程退出
1. main中使用return
2. 进程执行完退出
3. exit c库函数----------》进程退出时会刷新缓冲区会执行atexit()注册的进程退出函数 _exit_Exit() 系统调用》不会刷新缓冲区不会执行atexit()注册的进程退出函数
4. 被其他进程结束 void exit(int status); 功能退出进程 参数status进程退出的状态值EXIT_SUCCESS0EXIT_FAILURE 1 void _exit(int status)void _Exit(int status); atexit(); 功能注册一个进程退出函数进程退出前被执行一般用它做收尾工作 2. 回收进程的空间和资源 wait waitpid waitpid(0, NULL, 0); wait(NULL) //阻塞方式回收 waitpid(0, NULL, WNOHANG); //以非阻塞方式回收----》搭配轮询实现费cpu pid_t wait(int *stat_loc); 功能阻塞等待回收子进程空间和状态 参数stat_loc状态参数 返回值成功返回回收到的子进程的id号失败-1 僵尸进程子进程结束 对应的父进程没有对其资源空间进行回收。
如何避免僵尸进程 1. 进程退出后进行回收 2. 进程成为一个孤儿进程
孤儿进程当子进程的父进程先消亡该子进程称为一个孤儿进程被系统进
exec函数族具体用法可以参照smallshell这个练习smallshell-CSDN博客