seL4微内核初探

写在前面

在软件开发行业,操作系统一直占据着重要的位置。从底层驱动到上层算法开发,操作系统始终在技术架构中扮演着核心角色。近年来,微内核作为操作系统的一种架构分支,在汽车电子、航空航天等领域越来越受到关注,各大高校和企业也逐渐将研发重心转向微内核。在国内,鸿蒙是目前最为知名的微内核架构操作系统,而QNX则是商业化最为成功的微内核。如果你有志于在相关领域进行学术研究或软件开发,那么这个系列的文章将值得一读。派泥将从seL4这款微内核开始,带领大家深入了解微内核的世界。希望能够为你的职业发展提供一些启发和帮助。

操作系统简介

首先,让我们给还不了解操作系统定义的小白们科普一下操作系统的概念。

操作系统(英语:Operating System,缩写:OS)是一组负责管理并控制计算机操作、运用和运行硬件、软件资源的相互关联的软件程序。同时,它也是计算机系统的核心与基础。操作系统需要处理的基本事务包括管理和配置内存、决定系统资源供需的优先级、控制输入和输出设备、操作网络以及管理文件系统等。此外,操作系统还提供了一个用户与系统交互的界面。

如果这些定义让你觉得有些枯燥,我们不妨通过银行的例子来理解。假设在早期的银行,同一时间只能为一名用户处理一件事务,这样的办事效率会不会显得非常低下呢?大部分时间都浪费在上下级的信息传递上,而用户窗口常常处于空闲状态。为了提高效率,银行的行长决定升级银行的办事系统。从此以后,银行允许窗口在空闲时持续接受新用户的请求。这样一来,银行可以更高效地利用办事窗口,不再需要让用户等待前一位用户完全办结事务后才能提交请求。

银行的这种制度就类似于计算机中的操作系统。通过这次“银行操作系统”的升级,行长成功地提升了银行的办事效率。在现实中,操作系统也是通过批处理、分时等一系列迭代和升级,不断提升计算机的效率。

微内核简介

根据操作系统的架构设计,操作系统可以大致分为宏内核和微内核(如今混合内核架构也正在崭露头角)。在我们的日常生活中,大家接触更多的是宏内核,比如Windows和Linux都是采用这种架构的操作系统。而微内核则更多应用于机械控制领域,也是本文的重点介绍对象。

在计算机科学中,微内核(英语:Microkernel,μ-kernel)是一种内核设计架构。它由尽可能精简的程序组成,以实现操作系统所需的最基本功能,包括底层的地址空间管理、线程管理以及进程间通信。通过这种精简的设计,微内核能够在特定应用中提供高效和可靠的性能。

简而言之,微内核将大部分系统服务移到了用户态。为了更好地理解这一点,我们可以接着用银行的例子来说明。银行柜台将银行系统和用户分成了两个部分,银行系统可以被视为内核态,负责提供关键服务,而用户处于用户态,执行一些不那么重要的操作,或者通过柜台请求银行的服务(柜台可以视作系统调用的接口)。

如果银行系统采用宏内核架构,将大部分服务放在银行系统中,我们会看到银行的工作岗位增加,提供的服务种类也更加丰富。然而,这样的架构容易导致银行内部问题频发,管理困难,效率低下,这是大型系统架构的通病。这是否让你联想到Windows?虽然功能强大,但其运行效率常常不尽如人意,一旦出现小问题,很可能直接导致蓝屏。

微内核则采取了不同的策略,通过精简银行系统,仅承担关键的金融服务,其余业务则需要用户自行解决。这种方法通过将部分负担转移至用户端,实现了系统的精简化和效率提升。

两种内核设计理念各有优劣,但在机械控制等领域,微内核更受欢迎。毕竟,像汽车、飞机这类高速运转的机器,对系统的实时性和可靠性有更高的要求。像Linux这样偶尔会出现Panic或蓝屏的操作系统,在这些领域是难以被接受的。

在工业界,目前最为知名的微内核当属QNX。这是一款由加拿大Quantum Software Systems公司开发的微内核操作系统,如今已被黑莓公司收购(没错,就是曾经生产黑莓手机的那家公司)。而在研究领域,L4系列的微内核则风头正劲,其中包括本篇文章的主角,seL4。

seL4简介

老惯例,咱们先贴一段seL4的定义,弄清楚它到底是啥。

seL4是一个高保证、高性能的操作系统微内核。它的独特之处在于其全面的形式验证,且不影响性能。它旨在用作构建安全关键系统的值得信赖的基础。它在 GitHub 上以开源形式提供,并得到 seL4 基金会的支持。

这里附上一张由Gernot Heiser大佬总结的L4系列微内核发展史的图片,有兴趣的朋友可以查阅他们的论文《From L3 to seL4: What Have We Learnt in 20 Years of L4 Microkernels?》。

那么,为什么选择seL4呢?

首先,seL4是首款通过形式化验证的微内核。简单来说,就是用数学工具证明了内核没有错误,大大提高了系统的可靠性。其次,seL4不仅仅是一个微内核,其社区基于微内核的系统调用扩展了一系列实用工具,包括设备驱动甚至虚拟化。第三,seL4拥有一个成熟的社区,许多研究人员在其中分享他们的新发现,与他们交流能够极大地拓宽视野。最后也是最重要的一点,seL4是开源的代码,只要你有兴趣,学习和使用seL4微内核完全没有门槛(派泥要点名批评一下QNX,目前还没能顺利拿到它的教育许可证)。

总而言之:

如果你未来想从事汽车软件开发,想要提升自己的技能库,请持续关注派泥的专栏。

如果你希望进行一些基于操作系统的科研项目,但苦于找不到切入点,请持续关注派泥的专栏。

如果你想通过实战项目更深入地了解操作系统,请持续关注派泥的专栏。

题外话

在未来,派泥将为大家推出一系列关于seL4的专栏更新,包括seL4平台的搭建、使用教程以及基于seL4的项目实战。通过这些内容,我希望能为大家全面介绍这款微内核的强大之处。在此,我也分享一下之前学习seL4教程时整理的总结文档。如果你已经迫不及待地想要上手这款微内核,不妨参考一下这些资料【免费】seL4微内核的tutorial教程资源-CSDN文库。希望能对你的学习过程有所帮助!最后,附上seL4 tutorail的项目地址Tutorials | seL4 docs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值