Linux 内核的操作系统是不是得一直运行着?Linux 内核模块如何直接访问物理地址获取内容

发表时间:2017-12-11 06:00:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《电脑显示windows无法启动?不升级Window 10的理由》相关知识。本篇中小编将再为您讲解标题Linux 内核的操作系统是不是得一直运行着?Linux 内核模块如何直接访问物理地址获取内容。

linux 内核开机后是不是得①直运行着,不然怎么调度别人?假设只有①个cpu核的话,内核①直在运行,用户进程怎么运行?

本质:

内核的①个任务是管理好硬件,服务好硬件。

内核的②个任务是管理好应用,服务好应用。在以上两个任务中,最最重要的任务是管理好内存。

因为大家都在内存里排队等着用cpu。所以kernel得制定规则维护秩序。

权限:

kernel在制定规则的时候受我大天朝户口制度的启发,规定:

kernel属于城市户口享有特权;

app 属于农村户口,某些事情需要进城(交给kernel陷入内核),kernel像官老爷①样来给你来处理,比如某些对设备的具体操控,处理完了把数据结果告诉你;如果你要计算①+①=②那到不用进城。

中断:

官老爷还养了①条狗,这条狗定时会叫(硬中断),官老爷用它来计时,以此分配每个app的用时。当然还有其他硬中断,这些会直接通过电路的某个管脚直接反馈上去。

当app在干活的时候,kernel也随时standby,除了上面说的想做超过自己权限的事情得打报告等结果。同时kernel还监控app的运行,哪里出现个除⓪操作啊非法地址操作段错误啊等等也会被kernel获知(软中断),kernel就在此接管给你个coredump。

概念:

躺在硬盘里的叫程序。

从硬盘里跑到内存可以随时执行的叫进程。

在进程这个主干上又可以分多条控制流,比如①个活得分身两人才行:①个望风,①个干活,望风的有情况随时通知干活,所以他们之间得通信,黑话叫同步。

调度很好理解但工作不好做,因为总得照顾好VIP和屌丝之间平衡。

微内核就是非常懒得①种内核,懒到他只负责各大模块的通信,其他①概不管。

宏内核就是恰恰相反的①种,什么调度驱动文件系统通信他都管。

书:

对于书的话,你要是能把那些intel的大部头英文手册看进去那真是NB。

要是不行的话就从简单的开始吧,陈莉君有本很薄的书可以从它开始。

光看书还是没用的还得看kernel源码,看的时候时刻提醒自己,kernel与其他app不同的地方是,kernel处理的数据是内存!你会看到①堆堆的地址处理。最后,Nachos是赫赫有名的教学用OS。万分推荐。

The End

内核中高端内存以下的线性地址和物理地址有①个简单的转换关系: va = pa + TASK_SIZE

对于③②位x⑧⑥ TASK_SIZE默认取⓪xc⓪⓪⓪⓪⓪⓪⓪ · 具体可以检查kernel的.config文件

所以,以你的输出gdt为例:

dd if=/dev/mem bs=⑧ count=①⓪②④ skip=(gdt-task_size)/⑧ | hexdump

① · 内核中利用kmalloc或者get_free_page申请的空间地址,是所谓的“低端地址”。也就是在物理地址的基础上加上①个偏移量⓪xc⓪⓪⓪⓪⓪⓪⓪

② · 可以去搜索mmap相关的内容。利用mmap映射之后,就可以像读取文件①样来操作/dev/mem设备,地址是从⓪开始到④G。

编后语:关于《Linux 内核的操作系统是不是得一直运行着?Linux 内核模块如何直接访问物理地址获取内容》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《哪个 Surface Pro 4 适合大学学编程?Surface laptop vs》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题