进程
今天学习了进程的相关内容,主要是了解了一些与进程哟有关的概念,以下是几个需要重点记忆的概念和问题
1. 什么是进程?
进程相比于程序来说,它是活的,是程序执行的过程,包含创建,调度和消亡。
2. 进程空间如何划分?每个区域的特点?每个区域存放哪些数据?
进程空间:在32位操作系统中,可以为进程创建0-4G的虚拟空间,它包含内核(CPU管理,内存管理,文件系统管理,硬件设备管理以及进程管理)(用户不可修改)、文本段、数据段、系统数据段。以下是一张图来更加清晰的划分进程空间。
3. 常见的进程调度算法有哪些?
1、先后顺序:先来的先执行,后来的后执行。
2、高优先级调度算法
3、时间片轮转调度法(时间片就是指CPU在某个任务中执行的时间)
4、多级队列反馈法
4、负载均衡调度法
4. 进程状态分为哪几种类型?
1、就绪状态 R:正在运行的任务(没有占用CPU
2、运行状态 R:正在运行的任务(占用CPU
3、可唤醒等待态 S:进程挂起等待某个资源到达后继续向下执行
4、不可唤醒等待态 D:进程挂起等待某个信号继续向下执行
5、停止态 T:进程挂起等待CPU确认发送指令继续向下执行
6、僵尸态 Z:代码执行完毕但是空间没有被回收
7、结束态 X:代码执行完毕且空间被回收
5. 进程相关的命令有哪些?
top
根据CPU占用率查看当前所有进程任务
PID:唯一识别进程的ID号 ( pid > 0 )
PPID:父进程的ID
按q退出top命令
ps -ef
ps -ef | grep a.out 组合命令,查看所有进程中与a.out相关联的内容
ps -aux
查看所以的进程状态
./a.out&
在后台执行Aa.out
kill
kill -9 进程PID
killall -9 进程名
pstree
查看所以的进程关系
6. 如何创建进程?fork和vfork有什么区别?
一般用fork() 或vfork()创建进程
7. 什么是僵尸进程?如何产生?如何避免?
僵尸进程是指在进程结束后,空间未被回收
产生原因:父进程未调用 wait()
或 waitpid()
,或忽略了 SIGCHLD
信号。
避免方法:
1、让父进程先结束,子进程会成为孤儿进程,被init进程收养,子进程结束时,init进 程回收子进程空间 子进程结束
2、父进程回收子进程空间(wait或者waitpid回收子进程空间