1. 多进程与并发的关系
当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能同时真正进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再把时间段分配给各个线程执行,在一个时间段的线程代码执行时,其他线程处于挂起状态。这种方式我们成为并发。
2. Kill,pkill,xkill的区别
Kill是和ps,pgrep命令结合在一起使用的
Pkill和killall应用差不多,也是直接杀死运行中的程序;如果你想杀掉单个进程,应用kill来杀掉
xkill是在桌面上用于杀死图形界面的程序
3. 进程的分类
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性:
交互进程:由Shell启动的进程
批处理进程:这种进程和终端没有联系,是一种进程序列
监控进程:Linux系统启动时启动的进程,并在后台运行
4. 进程基本状态
进程在运行中不断改变其运行状态,通常,一个运行进程必须具有以下三种基本状态:
就绪状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理器便可立即执行,这时的进程状态称为就绪状态;
执行状态:当进程已获得处理器,其程序正在处理器上运行,此时的进程状态称为执行状态;
阻塞状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态
5. 调度算法的使用范围
FCFS:对长作业有利,但对短作业不利;对CPU繁忙型有利,但对I/O繁忙型不利;
SJF对长作业不利;
非抢占式优先级算法:这种算法主要用于批处理系统中,也可用于某些对实时性要求不严的实时系统中;
抢占式优先级算法:常用于要求比较严格的实时系统中,以及对性能要求较高的分时系统和批处理系统
多级反馈队列调度算法:可行性强,适用于各种作业环境
时间片轮转调度算法:适用于分时系统
高响应比优先调度算法:适用于批处理系统
6. exit和_exit的区别
_exit执行后立即返回给内核,而exit要先执行一些清除操作,然后将控制权交给内核。exit函数是在_exit函数之上的一个封装,它会调用_exit,并在调用之前刷新流
exit函数和 _exit函数最大区别在于,exit函数在调用exit系统之前要检查文件的打开情况,把文件缓冲区的内容写回文件。要想保证数据的完整性,就一定要使用exit()函数
7. 系统关闭重启后僵尸进程是否还在
僵尸进程的资源已经收回,只是在进程描述表里还有而已。所以除非是重启系统,否则是杀不死僵尸进程的
8. 进程等待就一定是僵尸进程吗?
在Linux系统中,睡眠等待状态分为中断的和不可中断的等待状态
当进程已停止运行,但其父进程还没有调用wait()询问其状态,则称其处于僵尸状态
9. PCB具体指什么?
进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构。系统用它来记录进程的外部特征,描述进程的外部变化过程。同时,系统可以利用PCB来控制和管理进程,所以说,PCB是系统感知进程的唯一标识
10. 进程一般有哪些操作
进程的创建,查看进程的属性和状态,调整进程的优先级,结束进程