
Linux内核里线程,进程的区别
发布日期:2021-05-19 20:29:43
浏览次数:21
分类:精选文章
本文共 701 字,大约阅读时间需要 2 分钟。
从内核的工程角度来看,它并不真正支持线程这个概念。Linux将所有所谓的线程都当成了进程来实现。内核并未专门开发调度算法或者设计特殊数据结构来处理线程。在内核中,线程仅仅被视为一个与其他进程共享资源(如地址空间)的进程。每个线程都有属于自己的task_struct,这使得它在内核中看起来和普通进程一样。
内核线程的工作方式
内核线程的用途
内核线程是用于执行那些需要在后台运行的操作的。这些任务通常涉及内核内部的管理工作或需要持续运行的系统服务。与普通进程的区别
内核线程的地址空间与其他进程共享,具体表现为其mm结构体的指针为空。尽管在这个层面上看起来内核线程与普通进程不同,但在功能上它们却有许多相似之处。内核线程可以通过正常的调度机制被调度,也可以被其他进程抢占。内核线程的创建方式
内核线程可以通过调用kernel_thread()
函数来创建。该函数与我们常用的clone()
系统调用的行为很相似,只是增加了一个标志位参数,来指定线程的创建模式。调用完成后,父线程将退出,返回一个指向子线程task_struct的指针。新创建的线程会立即开始执行指定的函数,并传递给它需要使用的参数。 内核线程的运行特性
如果没有外部事件需要其介入,内核线程通常会一直运行其在创建时所指定的函数。这样的函数通常会包含一种自我调度机制。例如,通过一个无限循环来等待外部事件的到来。在事件被触发时,外部进程可能会唤醒该线程,完成当前工作后该线程会再次进入休眠状态。这样一来,内核线程就成为了一个既能享受内核调度机制,又可以表示为独立进程的实体。这使得它在内核中与普通进程的处理方式相比,两者看起来更为统一。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月27日 05时59分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MP4修改元数据日志记录
2019-03-15
WebView使用
2019-03-15
【Stimulsoft Reports.Net教程】使用DesignerFx
2019-03-15
Python | 02.下载视频(普通视频、m3u8加密视频ts)
2019-03-15
攻防世界 Pwn 新手
2019-03-15
mybtis-plus 出现 Wrong namespace
2019-03-15
2008年7月20日星期日
2019-03-16
c#启动本机程序
2019-03-16
用户登陆的验证码的制作
2019-03-16
判断远程文件是否存在
2019-03-16
升级java11后,maven命令打包报错
2019-03-16
springboot redis key乱码
2019-03-16
Win10禁用自带的笔记本键盘
2021-05-19
insmod模块的几种常见错误
2021-05-19
shell及脚本4——shell script
2021-05-19
写时复制集合 —— CopyOnWriteArrayList
2021-05-19
什么是redis的缓存雪崩, 穿透, 击穿?
2021-05-19
数据帧CRC32校验算法实现
2021-05-19
【转载】DSP基础--定点小数运算
2021-05-19