Linux进程的原理及与信号的联系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux进程的原理及与信号的联系相关的知识,希望对你有一定的参考价值。


第1节 程序、进程、守护进程的区别


 

  • 程序:c/php/java,代码文件,静态的,放在磁盘里的数据。

  • 进程:正在内存中运行的程序,进程是动态的,会申请和使用系统资源,并与操作系统内核进行交互。

  • 进程运行:系统把程序放在内存里执行。

  • 守护进程:在内存持续保持运行着的程序。

 


第2节 多任务与CPU


 

  1. 现在所有的操作系统(分时设计,例如CentOS)都能"同时"运行多个进程,也就是多任务或者说是并行执行。但实际上这是人类的错觉,一颗物理cpu在同一时刻只能运行一个进程,只有多颗物理cpu才能真正意义上实现多任务。

  2. cpu如何选择下一个要执行的进程,这是一件非常复杂的事情。在Linux上,决定下一个要运行的进程是通过"调度类"(调度程序)来实现的。程序何时运行,由进程的优先级决定,但要注意,优先级值越低,优先级就越高,就越快被调度类选中。
    除此之外,优先级还影响分配给进程的时间片长短。在Linux中,改变进程的nice值,可以影响某类进程的优先级值。

  3. 进程切换被CPU执行时,内核会将每个进程临时停止时的运行时环境(寄存器中的内容和页表)保存下来(保存位置为内核占用的内存),这称为保护现场,在下次进程恢复运行时,将原来的运行时环境加载到cpu上,这称为恢复现场,这样cpu可以在当初的运行时环境下继续执行。

  4. 在进程的优先级相同下;Linux的调度器不是通过cpu的时间片流逝来选择下一个要运行的进程的,而是考虑进程的等待时间,即在就绪队列等待了多久

  5. cpu的衡量单位是时间,就像内存的衡量单位是空间大小一样。进程占用的cpu时间长,说明cpu运行在它身上的时间就长。注意,cpu的百分比值不是其工作强度或频率高低,而是"进程占用cpu时间/cpu总时间",这个衡量概念一定不要搞错。
     

第3节 各进程与CPU的状态


的 


第4节 父子进程及创建方式(资源,shell实现)


 的


第5节 jobs与父子进程的前后台,fuser,lsof


 


第5节 信号与进程与kill,pkill,killall


 

 
















以上是关于Linux进程的原理及与信号的联系的主要内容,如果未能解决你的问题,请参考以下文章

Linux信号及工作原理

Linux 进程间通信 --信号

linux信号

进程间通信之-信号signal--linux内核剖析

Linux进程间通信 --- 信号量

linux信号-------初涉