新年祝大家新年新气象,财运亨通,大吉大利,薪资翻倍,心想事成,废话不多说,直接上题
1.什么是进程
运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
2.进程的基本状态
创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
执行状态:进程处于就绪状态被调度后,进程进入执行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
3.找到未知进程的执行程序文件路径
ls -l /proc/$PID/exe
4.如何查询系统负载
使用uptime命令
其中系统平均负载(1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报)
5.指定进程号,查看该进程打开的文件
lsof -p $PID 或 lsof -p $(pidof $COMMAND)
6.让作业运行于后台(剥离终端)(三种都可以)
nohup COMMAND &>/dev/null &
screen;COMMAND
tmux;COMMAND
7.对于linux主机的cpu负载使用,什么情况下user的比例升高,什么情况下system的比例升
高,请联系实际举例
使用top命令可以查看cpu的负载使用
us:用户进程消耗的CPU时间百分比 us的值比较高时,说明用户进程消耗的CPU资源多,如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速(比如PHP/PERL)
sy:内核进程消耗的CPU时间百分比(sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因)
wa:IO等待消耗的CPU时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量随机访问造成,也有可能磁盘出现瓶颈(块操作)
id:CPU处于空闲状态时间百分比,如果空闲时间(cpu id)持续为0并且系统时间(cpu sy)是用户时间的两倍(cpu us) 系统则面临着CPU资源的短缺
8.并行与并发
串行:一次只能取得一个任务并执行这一个任务
并行:可以同时通过多进程/多线程的方式取得多个任务,并以多进程或多线程的方式同时执行这些任务
并发:并发是一种现象:同时运行多个程序或多个任务需要被处理的现象;这些任务可能是并行执行的,也可能是串行执行的,和CPU核心数无关,是操作系统进程调度和CPU上下文切换达到的结果
9.进程和线程以及它们的区别
进程是具有一定功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源调度和分配的一个独立单位。
线程是进程的实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程可以有多个线程,多个线程也可以并发执行
10.进程的通信方式有哪些?
主要分为:管道、系统IPC(包括消息队列、信号量、共享存储)、SOCKET
11.什么是缓冲区溢出?有什么危害?其原因是什么,如何预防?
缓冲区溢出:是指当计算机向缓冲区填充数据时超出了缓冲区本身的容量,溢出的数据覆盖在合法数据上。
危害:程序崩溃,导致拒绝额服务跳转并且执行一段恶意代码
主要原因:程序中没有仔细检查用户输入。
预防办法
1、关闭端口或服务。管理员应该知道自己的系统上安装了什么,并且哪些服务正在运行
2、安装软件厂商的补丁,漏洞一公布,大的厂商就会及时提供补丁
4、自己检查关键的服务程序,看看是否有可怕的漏洞
5、以所需要的最小权限运行软件