process interview keyPoints

first courses

1、进程是资源封装的最小单位,线程是任务调度的最小单位

进程封装的资源主要有:进程ID、mm_struct(内存管理相关结构)、文件系统结构(当前用户,当前目录等)、文件相关结构(全部    打开的文件描述符)、信号相关结构(进程使用的信号以及对应的信号处理函数)。

2、进程ID的数量是有限的,通常默认为32768,所以通过这个弊端,可以使用进程炸弹直接干掉整个系统--  :(){ : | : & }; :

3、哈希表用于检索是最快的,所以linux内核把task_struct不仅串到链表上,还放到树结构(方便pstree查看)上和哈希表上

4、内存泄漏是指随着task运行的时间越久,耗费的内存就越多,造成内存泄漏的原因是分配和释放不成对

5、父进程可以使用WIFEXITED、WIFSIGNALED、WIFSTOPPED等宏函数来获取子进程的退出状态,是被信号杀死还是其他原因

6、观察程序是否内存泄漏:多个时间点观察程序的内存占用情况,如果是持续增多,就是内存泄漏;或者持续观察USS来确定

7、cpulimit命令就是利用作业控制的STOP和CONTINUE信号,来控制CPU的占用率,比如cpulimit -l 20 -p 3320,限制3320任务的最大CPU占用率为20%

8、子进程和父进程哪个优先运行可以配置。默认不确定

 

second courses

1、fork、vfork、pthread_creat之间的区别主要在于分裂实时对task_struct的操作。fork是直接对拷,并且做写时拷贝(写时拷贝需要mmu支持);vfork是除内存管理结构其它内容全部对拷,内存相关结构则使用指针直接指向父进程的mm结构,且vfork的特点是,父进程创建子进程后进入睡眠,直到子进程exited或者执行exec,所以子进程在退出或exec新代码段前对变量或内存的全部操作都会直接改变父进程的相关变量和内存资源;pthread_creat完全不进行拷贝动作,直接把task_struct的相关成员指向父进程的成员,所以子线程的特点是共享进程资源,对各个变量或者内存的全部操作都会直接改变父进程的相关资源,这时就要考虑线程安全的问题。以下为三张对比图:

 

 

third courses

1、高吞吐必然会造成慢响应,快速响应必然会降低吞吐。进程切换本身耗费的CPU时间基本可以忽略不计,但频繁的进程切换造成的cache miss会消耗大量的CPU时间。

2、IO消耗性任务对CPU的性能并不敏感,对及时被调度到比较敏感;CPU消耗型任务对CPU的性能比较敏感,但对及时被调度到并不敏感。

3、进程优先级被划分为0到139,其中0到99位实时优先级,100到139位普通优先级。

4、实时任务分为两种,SCHED_FIFO高优先级抢占低优先级,同等优先级先进先出;SCHED_RR高优先级抢占低优先级,同等优先级任务间轮转。两种都是高优先级跑到睡眠或退出,低优先级才有机会运行。

5、2.6之前版本内核,采用动态奖惩方式实现内核的调度策略。睡得多的线程奖励,跑的多的线程惩罚,对他们的初始nice值进行正负的动态调整。采用这种调度策略可以照顾到IO消耗型任务,保证了系统的低延迟。

6、从2.6版本内核开始,采用CFS调度策略,体现普通进程的nice特性。虚拟运行时间小的任务优先运行,虚拟运行时间的公式为:vruntime +=  delta* NICE_0_LOAD/se.weight       

delta:为进程增加的实际运行时间         
NICE_0_LOAD是nice为0时的权重

7、chrt命令可以设置任务的实时优先级和实时策略(RR或者FIFO)。该命令可对普通任务使用,使用后普通任务会变成配置的实时任务。

8、renice和nice命令可以设置普通任务的nice值

 

 

4th courses

1、多核系统,cpu会根据当前的状态,从其他CPU pull任务过来,也会push本核任务到其他CPU

2、taskset命令可以设置某个任务或整个进程组(多线程)的affinity属性

3、中断和软中断都可以通过sysfs下的对应属性设置中断处理函数和软中断处理函数的affinity特性

4、cgroup可以实现进程组之间的CPU划分

5、linux不可抢占的区域有:中断上下文,软中断上下文,spin_lock锁住的临界区域

6、打了PREEMPT_RT补丁的linux:中断和软中断都被线程化,只保留一句话的中断处理函数,其他大部分内容在进程上下文被执行,同时自旋锁退化为互斥锁。

         

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值