linux学习 进程控制编程

来源:互联网 发布:知源中学复读 编辑:程序博客网 时间:2024/06/05 08:08

1. 什么是进程?

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 

2.为何需要多进程?为何需要并发?

有了并发技术,就是可以在同一时间同时执行多条任务的技术,程序不仅可以规规矩矩的一条线执行,可以多条线同时执行,这样就可以实现更加强大的功能,提供更多的服务,所以并发是必不可少的。

 

3. 进程的分类

进程一般分为交互进程、批处理进程和守护进程三类。 

交互进程Shell启动的进程

批处理进程这种进程和终端没有联系,是一种进程序列

守护进程总是活跃的,一般是后台运行。守护进程一般是由系统在开机时通过脚本自动激活启动或级用户root来启动的。

 

4. 进程有那些基本状态

进程在运行中不断改变其运行状态,通常,一个运行进程必须具有以下三种基本状态:

就绪状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理器便可立即执行,这时的进程状态称为就绪状态;

执行状态:当进程已获得处理器,其程序正在处理器上运行,此时的进程状态称为执行状态;

阻塞状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态

 

5. linux中进程怎么组成的?

Linux中一个进程由三部分组成:代码段,数据段,堆栈段 
从内存的低地址到高地址依次为: 
代码段:二进制机器代码 
数据段:存储已被初始化的变量,包括全局变量和已被初始化的静态变量 
未初始化数据段:存储未被初始化的静态变量,又称BBS 
堆:用于存放程序运行中动态分配的变量 
栈:用于函数调用,保存函数的返回地址,函数的参数,函数内部定义的局部变量

6.调度算法的使用范围

FCFS:对长作业有利,但对短作业不利;对CPU繁忙型有利,但对I/O繁忙型不利;

SJF对长作业不利;

非抢占式优先级算法:这种算法主要用于批处理系统中,也可用于某些对实时性要求不严的实时系统中;

抢占式优先级算法:常用于要求比较严格的实时系统中,以及对性能要求较高的分时系统和批处理系统

多级反馈队列调度算法:可行性强,适用于各种作业环境

时间片轮转调度算法:适用于分时系统

高响应比优先调度算法:适用于批处理系统

 

7. 什么是僵尸进程?

当子进程先于父进程终止,而父进程又没有调用wait函数等待子进程结束,子进程进入僵死状态,并且会一直保持下去除非系统重启.子进程处于僵死状态,内核只保存该进程的一些必要信息以备父进程所需.此时子进程始终占用着资源,同时也减少了系统可以创建的最大进程数;如果子进程先于父进程终止,且父进程调用了wait或waitpid函数,则父进程会等待子进程结束。僵尸进程几乎放弃所有内存空间,没有任何可执行代码,不能被调度,仅在进程列表中保留一个位置,但是过多的僵尸进程会导致系统崩溃。

8.什么是PCB

进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的外部变化过程。同时,系统可以利用PCB来控制和管理进程,所以说,PCB是系统感知进程的唯一标识

 

9. 进程的操作

fork,vfork(创建进程)ps(进程监视工具)、kill(终止进程工具,类似还有:killall、pkill、xkill)、grep(查询进程工具)等。

10.exit_exit的区别

_exit执行后立即返回给内核,而exit要先执行一些清除操作,然后将控制权交给内核。exit函数是在_exit函数之上的一个封装,它会调用_exit,并在调用之前刷新流

exit函数和_exit函数最大区别在于,exit函数在调用exit系统之前要检查文件的打开情况,把文件缓冲区的内容写回文件。要想保证数据的完整性,就一定要使用exit()函数