进程,轻量级进程,线程,内核线程

最近总是被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,它也不能访问用户空间。其他细节还不是很清楚。有待以后研究。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值