Linux内核线程、用户进程,用户线程
来源:互联网 发布:视频审核知乎 编辑:程序博客网 时间:2024/05/29 10:11
这个概念是很多人都混淆的了,我也是,刚开始无法理解OS时,把Linux内核也当做一个进程。
其实内核本身不是以进程形式存在的,最多在初始化的过程中表现得就像一个进程,但是内核绝对没有进程的数据结构task_struct,可以严格跟进程区分开 。自从创建init 进程之后,内核就不再主动占有cpu了。只有当进程主动要求和中断到来时,内核才动一动,很快又把cpu还给合适的进程,不是想象中的,以后台服务进程的形式存在。
Linux上进程分3种,内核线程(或者叫核心进程)、用户进程、用户线程
内核线程拥有 进程描述符、PID、进程正文段、核心堆栈
当和用户进程拥有相同的static_prio 时,内核线程有机会得到更多的cpu资源
内核线程的bug直接影响内核,很容易搞死整个系统
内核线程不需要访问用户空间内存,这是再好不过了。所以内核线程的task_struct 的mm域为空
但是刚才说过,内核线程还有核心堆栈,没有mm怎么访问它的核心堆栈呢?这个核心堆栈跟task_struct的
thread_info共享8k的空间,所以不用mm描述。
但是内核线程总要访问内核空间的其他内核啊,没有mm域毕竟是不行的。
所以内核线程被调用时,内核会将其task_strcut 的active_mm指向前一个被调度出的进程的mm域
,在需要的时候,内核线程可以使用前一个进程的内存描述符。
因为内核线程不访问用户空间,只操作内核空间内存,而所有进程的内核空间都是一样的。这样就省下了一个mm域的内存。
用户进程拥有 进程描述符、PID、进程正文段、核心堆栈 、用户空间的数据段和堆栈
用户线程拥有 进程描述符、PID、进程正文段、核心堆栈,同父进程共享用户空间的数据段和堆栈
用户线程也可以通过exec函数族拥有自己的用户空间的数据段和堆栈,成为用户进程。
- Linux内核线程、用户进程,用户线程
- linux内核线程 [内核线程 用户进程 用户线程]
- linux内核线程、轻量级进程、用户进程
- 用户进程,用户线程,内核线程
- Linux内核进程 线程 用户空间线程进程
- Linux内核线程、用户进程、用户线程、用户模式和内核模式
- Linux内核本身和进程的区别 内核线程、用户进程、用户线程
- Linux内核本身和进程的区别 内核线程、用户进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- linux内核线程、轻量级进程和用户进程
- 安装VS2008后再装Office2007的时候出现的问题解决方法
- 剑术,语言和模式(转自博客园)
- 【转自JavaEye】为什么“局部内部类能且只能访问所在方法中的final类型的参数和变量”?
- Spring与Hibernate冲突的jar包(org.springframework.beans.factory.BeanCreationException:)
- 神坛之上的CMM——解析CMM和中国软件
- Linux内核线程、用户进程,用户线程
- 驱动开发第二步,入门,最常用的结构体了解。
- javaDB 图形化工具开发
- Spring.Net 框架(一)
- public,protect,private 以及继承
- SQL作业调度
- 统计陷阱读书笔记
- -
- 单机应用程序设计基本思想-windows