Linux C第十二章进程控制编程十个问题及解答
1.什么是进程?什么是并发技术?
进程是可并发执行的程序,是在一个数据集合上的运营过程。
并发技术,就是可以让你在同一时间同时执行多条任务的技术。
2.进程分为哪几类?有什么特点?
进程分为交互进程、批处理进程和守护进程三类。
其中守护进程总是活跃的,所以它所处的状态是等待请求处理任务。
3.监视进程,查询进程的工具是什么?终止进程的工具有哪些?
一般用ps 监视进程,用pgrep 查询进程,用kill 、killall 、pkill、xkill来终止进程。
对于占用资源过多的数据库子进程,应该用kill来杀掉,
killall可以通过程序的名字直接杀死所有进程,
pkill是直接杀死运行中的程序,
xkill是在桌面上杀死图形界面的程序。
4.Linux C进程的三种基本状态是什么,怎样转换?
就绪状态、执行状态、阻塞状态
就绪->执行。处于就绪状态的进程,当进程调度程序为之分配了处理器后,该进程由就绪状态转变成执行状态。
执行->就绪。处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理器,于是进程从执行状态转变成就绪状态。
执行->阻塞。正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态转变为阻塞状态。
阻塞->就绪。处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
5.Linux C在内存里有几部分数据,分别存放什么东西?
Linux C在内存里有三部分数据 数据段、堆栈段和代码段。
数据段存放程序的全局变量、常数、以及动态数据分配的数据空间;
堆栈段存放的是子程序的返回地址,子程序的参数,以及程序的局部变量;
代码段存放的是程序代码的数据。
6.怎样创建进程?
Linux C主要提供fork vfork clone三种进程创建方法,在源码中,这三个调用的执行过程是执行fork() vfork() clone()时,通过一个系统调用表映射到sys_fork()、sys_vfork()、sys_clone(),然后在这三个函数中通过调用do_fork()来具体地创建进程。
7.execl、execlp、execve、execvp函数各有什么作用?
execl 函数用于执行文件;
execlp 函数用于从PATH环境变量中查找文件并执行;
execve 函数用于执行文件;
execvp 函数用于执行文件。
8.什么是僵尸进程,他有什么特点?
僵尸进程就是已经结束了的进程,但是还没有从进程表中删除,僵尸进程太多会导致进程表里面条目满了,进而导致系统崩溃,倒是不占用系统资源。
它几乎放弃所有内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集。
9.进程退出包括哪几种?
正常退出: 在main()函数中执行return;
调用exit()函数;
调用_exit()函数。
10.退出方式有什么不同?
exit和return的区别:
exit是一个函数,有参数,exit执行完后把控制权交给系统;
return是函数执行完后的返回,return执行完后把控制权交给调用函数。
exit和abort的区别:
exit是正常终止进程;
abort是异常终止。