关于内核的概念理解

操作系统内核,如Linux内核,提供系统调用作为接口。开发者并不直接调用系统调用,而是通过库函数间接实现。内核由系统调用的实现、中断处理程序组成,可使用C语言或其他高级语言编写。编译器和内核相互促进,新的编译器能支持更新的内核开发。
摘要由CSDN通过智能技术生成

狭义的操作系统可以认为就是内核,比如Linux内核。广义的操作系统则包括内核和一系列应用软件,比如Linux内核+编辑器vim+编译器gcc+命令行解释器(shell)等,通常称为GNU/Linux。
源代码https://github.com/torvalds/Linux

uname -r 可以看到内核版本

然后就可以在github上搜对应的代码了:
在这里插入图片描述
最新的已经是6.1版本了。rc的意思是Release Candidate。

在这里插入图片描述

内核提供服务。其逻辑就跟企业里一个团队提供的服务一样,你提供服务,说白了就是提供接口,别人调用你的接口。
那么内核的接口是什么?就是一些列函数声明,开发者可以直接调用。这些函数就是所谓的【系统调用】,直接称其为【内核接口】就可以了,为啥要单起一个名字呢?是因为他跟一般的接口的运行方式差别比较大吧,也就是系统调用会进入内核态。

but,实际上开发者也不会直接调用系统调用,而是通过库函数实现的。
在这里插入图片描述
实际的步骤是:
调用并进入库函数》系统调用号存放》触发中断进入内核态》调用中断处理程序(也就是系统调用)》中断处理程序返回》中断返回》库函数完成。

关于用高级语言写内核:内核本质上是一组系统调用的实现,或者说是一组中断处理程序的实现,或者说是cpu可以执行的二进制指令的实现,我们用c语言而不是汇编去实现实现这些指令,就是为了借助编译器的力量去更方便的实现二进制指令,同样的,我们现在可以考虑使用比C语言更加高级的语言去实现这些(或者更新的系统调用)二进制指令(借助其他编译器)。
参考 https://t.cj.sina.com.cn/articles/view/1746173800/68147f6801900ztou?cre=tianyi&mod=pctech&loc=5&r=0&rfunc=79&tj=cxvertical_pc_tech&tr=12

编译器和内核的关系:互相递进,当前的编译器和内核组合,可以编译出更新的内核。
参考 https://www.jianshu.com/p/a79d126c63e2, https://www.cnblogs.com/wang_yb/p/3899439.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值