❶ linux用户进程内核态执行,内核线程的关系问题
1、几乎所有的程序都要切换到内核态运行再返回用户态,用中断完成回的,因为在内核下答封装了一些东西,用户态下只是传入某些参数后调用内核态下的函数罢了,
2、进程有三态(执行态,就绪态,阻塞态),cpu任何时刻都只有一个进程在执行,so从用户态切换到内核态时,用户态下的进程就处于阻塞或就绪态了,至于从用户态切换到内核态执行哪个函数那就看你在用户态下执行的是什么函数了,比如在用户态下的lseek在内核下就是llseek了,不一样的。
3、这问题就是linux的内存管理了,这里就得提到三种地址(逻辑地址、线性地址、物理地址),这里我们提到的4G地址是逻辑地址,不是我们实际的物理地址,linux中一个进程用户占0-3G对应的内核占3G-4G部分
说得不是很清楚,这是比较复杂的内容,需要从头看起,单就这几个问题是不能搞懂linux的,最好还是系统的学习,不断的重复
❷ Linux内核本身和进程的区别 内核线程,用户进程,用户
1、几乎所有的程序都要切换到内核态运行再返回用户态,用中断完成的,因为在内核下封装了一版些权东西,用户态下只是传入某些参数后调用内核态下的函数罢了,
2、进程有三态(执行态,就绪态,阻塞态),cpu任何时刻都只有一个进程在执行,so从用户态切换到内核态时,用户态下的进程就处于阻塞或就绪态了,至于从用户态切换到内核态执行哪个函数那就看你在用户态下执行的是什么函数了,比如在用户态下的lseek在内核下就是llseek了,不一样的。
3、这问题就是linux的内存管理了,这里就得提到三种地址(逻辑地址、线性地址、物理地址),这里我们提到的4G地址是逻辑地址,不是我们实际的物理地址,linux中一个进程用户占0-3G对应的内核占3G-4G部分
说得不是很清楚,这是比较复杂的内容,需要从头看起,单就这几个问题是不能搞懂linux的,最好还是系统的学习,不断的重复
❸ ubuntu Linux怎么解决僵尸进程
找到僵尸进程,杀死即可
❹ 如何理解Linux中的OOM机制
Linux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。
❺ 【kill】kill -9 杀不死的进程处理办法
kill -9 发送SIGKILL信号给进程将其终止,但对于以下两种情况不适用:
1.该进程是僵尸进程(STAT z),此时进程已经释放所有的资源,但是没有被父进程释放。
僵尸进程要等到父进程结束,或者重启系统才可以被释放。
2.进程处于“内核态”,并且在等待不可获得的资源,处于“内核态 ”的资源默认忽略所有信号,只能重启系统解决。
进程在Linux 中会处于两种状态,即用户态和内核态。只有处于用户态的进程才可以用“kill”命令将其终止
一般可以用top命令发现动态进程表,其中zombie是僵尸进程:
用ps和grep命令寻找僵尸进
# ps -A -o stat,ppid,pid,cmd
# ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
命令注解:
-A 参数列出所有进程
-o 自定义输出字段
我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数 因为状态为 z或者Z的进程为僵尸进程。
我们使用grep抓取stat状态为zZ进程,使用 kill -HUP ${pid} 来杀掉这个僵尸进程。