进程控制编程

来源:互联网 发布:vc ado access数据库 编辑:程序博客网 时间:2024/06/05 10:59

一.进程的分类

交互进程,批处理进程,守护进程。

二.进程的属性

1.进程ID(PID):是唯一的数值,用来区分进程

2.父进程和父进程的ID(PPID)

3.启动进程的用户ID(UID)和所归属的组(GID)

4.进程状态:状态分为运行R,休眠S,僵尸Z

5.进程执行的优先级

6.进程所连接的终端名

7.进程资源占用,如占用资源大小(内存,CPU占用量)

三.Linux进程的管理是通过什么实现的

1.ps监视进程工具

2.pgrep查询进程工具

3.top监视系统任务的工具

四.进程和程序的区别
进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制
进程是暂时的,程序使长久的:进程是一个状态变化的过程,程序可长久保存
进程与程序组成不同:进程的组成包括程序、数据和进程控制块(即进程状态信息)
进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
五.进程的状态
执行状态:进程正在占用CPU
就绪状态:进程已具备一切条件,正在等待分配CPU的处理时间片
等待状态:进程不能使用CPU,若等待事件发生则可将其唤醒
六.进程包含哪些段
Linux中的进程包含3个段,分别为“数据段”、“代码段”和“堆栈段”。
数据段”存放的是全局变量、常数以及动态数据分配的数据空间;
代码段”存放的是程序代码的数据。
堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。 
七.进程的调度方式和调度算法
调度方式:抢占式和非抢占式
调度算法:
先来先服务调度算法
短进程优先调度算法
高优先级优先调度算法
时间片轮转法
八.僵尸进程怎么产生
1.父进程调用fork创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中(进程描述符占有极少的内存空间)。
2.子进程的状态变成EXIT_ZOMBIE,并且向父进程发送SIGCHLD 信号,父进程此时应该调用 wait() 系统调用来获取子进程的退出状态以及其它的信息。在wait调用之后,僵尸进程就完全从内存中移除。
3.因此一个僵尸存在于其终止到父进程调用wait等函数这个时间的间隙,一般很快就消失,但如果编程不合理,父进程从不调用wait等系统调用来收集僵尸进程,那么这些进程会一直存在内存中。

九.什么叫进程互斥

进程互斥是指当有若干进程都要使用某一共享资源时,任何时刻最多允许一个进程使用,其他要使用该资源的进程必须等待,直到占用该资源者释放了该资源为止
十.什么叫临界资源
操作系统中将一次只允许一个进程访问的资源称为临界资源
十一.什么叫临界区
进程中访问临界资源的那段程序代码称为临界区,为实现对临界资源的互斥访问,应保证诸进程互斥地进入各自的临界区
十二.什么叫死锁
多个进程因竞争资源而形成一种僵局,若无外力作用,这些进程都将永远不能再向前推进
十三.进程创建
1.pit_t fork(void)
功能:创建子进程
返回值:
0: 子进程;子进程ID(大于0):父进程;-1: 出错
子进程的数据空间、堆栈空间都会从父进程得到一个拷贝,而不是共享。
2.pit_t vfork(void)
功能:创建子进程
3.fork和vfork的区别
(1) fork:子进程拷贝父进程的数据段
           vfork:子进程与父进程共享数据段
(2) fork:父、子进程的执行次序不确定
           vfork:子进程先运行,父进程后运行
十四.exec函数族
exec用被执行的程序替换调用它的程序。
区别:fork创建一个新的进程,产生一个新的PID。
            exec启动一个新程序,替换原有的进程,因此进程的PID不会改变
函数格式:int execl(const char * path,const char * arg1, ...)
参数说明:path:被执行程序名(含完整路径);arg1 – argn: 被执行程序所需的命令行参数,含程序名。以空指针(NULL)结束。
十五.进程等待
pit_t wait (int * status)
功能:阻塞该进程,直到其某个子进程退出
pit_t waitpid (pid_t pid, int * status, int options)
功能:会暂时停止目前进程的执行,直到有信号来到或子进程结束
参数说明:如果不在意结束状态值,则参数status可以设成NULL。
参数pid为欲等待的子进程识别码:pid<-1 等待进程组识别码为pid绝对值的任何子进程。pid=-1 等待任何子进程,相当于wait()。
                              pid=0 等待进程组识别码与目前进程相同的任何子进程。pid>0 等待任何子进程识别码为pid的子进程
参数option可以为0 或下面的OR 组合:
                                  WNOHANG:  如果没有任何已经结束的子进程则马上返回,不予以等待;WUNTRACED :如果子进程进入暂停执行情况则马上返回,但结束状态不予以理会。




原创粉丝点击