进程,轻量级进程,线程,内核线程
2013-09-16 16:47
197 查看
最近总是被RT四个概念弄的晕头转向的,一直想找出用户空间的普通进程在跑进内核时候,内核是否会分成多少个执行流去执行,注意这里没使用线程这个词,因为在linux内核中根本就没有像用户空间那样的线程概念。
首先解释进程:书本官方说法就是分配CPU时间,内存等的使用实体,和WINDOWS下的.exe差不多。拥有独立的4GB线性空间,其中0-3GB是用户空间,3-4GB是内核空间,此部分地址用户空间是访问不到的,之前试验mmap驱动时候,用户空间调用想观察返回结果时候GDB调试Print不出来,提示越界就是这个原因。
线程:再次强调在Linux内核空间中根本就没有用户空间大家常说的多线程的线程概念。在Linux早期版本当中是不支持多线程应用程序的。它在内核看来仅仅就是一个普通进程。那么其多线程的实现多个执行流的创建,执行,处理,调度是怎样执行的呢,答案是依靠POSIX的pthread库在用户空间实现,想起编写多线程程序时候加的 -lpthread了吧!
轻量级进程:现在Linux实现轻量级进程来帮助实现多线程程序,轻量级进程之间互相共享内存空间mm_struct,打开的文件struct file,等等。一个修改到这些内容另一个也会立马查看到,那这不和线程一个概念吗,但LWP拥有独立的pid也就是进程号,拥有自己的进程描述符task_struct。线程和LWP可以理解为用户空间是使用线程,当程序执行进入内核态的时候,由每一个LWP对应一个线程来完成执行,这也就是有一种说法:线程=轻量级进程,但毕竟大家所运行空间都不一样,还是不能完全划等号的,至少我不喜欢~~
内核线程:由内核自身启动,虽然名为线程,但是它仍然是一个进程,比较类似于守护进程,内核线程没有自身的内存描述符struct_mm,它也不能访问用户空间。其他细节还不是很清楚。有待以后研究。
首先解释进程:书本官方说法就是分配CPU时间,内存等的使用实体,和WINDOWS下的.exe差不多。拥有独立的4GB线性空间,其中0-3GB是用户空间,3-4GB是内核空间,此部分地址用户空间是访问不到的,之前试验mmap驱动时候,用户空间调用想观察返回结果时候GDB调试Print不出来,提示越界就是这个原因。
线程:再次强调在Linux内核空间中根本就没有用户空间大家常说的多线程的线程概念。在Linux早期版本当中是不支持多线程应用程序的。它在内核看来仅仅就是一个普通进程。那么其多线程的实现多个执行流的创建,执行,处理,调度是怎样执行的呢,答案是依靠POSIX的pthread库在用户空间实现,想起编写多线程程序时候加的 -lpthread了吧!
轻量级进程:现在Linux实现轻量级进程来帮助实现多线程程序,轻量级进程之间互相共享内存空间mm_struct,打开的文件struct file,等等。一个修改到这些内容另一个也会立马查看到,那这不和线程一个概念吗,但LWP拥有独立的pid也就是进程号,拥有自己的进程描述符task_struct。线程和LWP可以理解为用户空间是使用线程,当程序执行进入内核态的时候,由每一个LWP对应一个线程来完成执行,这也就是有一种说法:线程=轻量级进程,但毕竟大家所运行空间都不一样,还是不能完全划等号的,至少我不喜欢~~
内核线程:由内核自身启动,虽然名为线程,但是它仍然是一个进程,比较类似于守护进程,内核线程没有自身的内存描述符struct_mm,它也不能访问用户空间。其他细节还不是很清楚。有待以后研究。
相关文章推荐
- 内核线程、轻量级进程、用户线程三种线程概念解惑(线程≠轻量级进程)
- Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程
- 关于线程、进程、用户态、内核态的不严谨体会
- linux 原始进程&内核线程
- Linux线程 之 线程 线程组 进程 轻量级进程(LWP)
- 内核线程、轻量级进程、用户线程
- 进程、线程、轻量级进程、协程和go中的Goroutine 那些事儿
- Linux内核本身和进程的区别 内核线程、用户进程、用户线程
- 关于进程、线程、轻量级进程的笔记
- Linux进程管理之内核线程
- 进程,轻量级进程,内核线程,用户线程的区别关系
- 进程与内存1-内核线程建立
- 进程、轻量级进程(LWP)、线程
- linux内核线程、轻量级进程和用户进程
- Linux内核线程、用户进程、用户线程、用户模式和内核模式
- 进程、轻量级进程和线程的一些点
- 三种线程——内核线程、轻量级进程、用户线程
- Linux进程管理 (篇外)内核线程简要介绍
- 内核线程、轻量级进程、用户线程
- 进程、线程、轻量级进程、协程和go中的Goroutine