Ubuntu升级内核时出现依赖关系问题?

  1、如果root.disk是在fat32 分区上,所以内核选项要把fat相关和字体437的编入内核,选Y。

  3、编译内核时注意把SCSI设备模块选中”Y”,虽然你的机器上也许没有SCSI设备,但是它就是需要

}

微内核是操作系统内核的一种,在工控系统、嵌入式系统、实时系统等领域发挥着重要作用。本文较为全面地研究了微内核技术的各个方面,包括微内核的定义、微内核的体系架构、微内核的发展历史、微内核的特点、微内核的应用场景,以及作者所进行的部分研究工作。本文部分内容和图来自网上,由于内容较多,有些没有标注,如果原作者觉得不合适请联系删除。

在计算机科学中,内核是操作系统的核心部分,它管理着系统的各种资源,譬如时钟、中断、存储、进程、设备驱动、原语等。应用程序运行在内核之上,并通过系统调用访问内核空间。

Kernel,也翻译为单内核)。如下图所示,微内核操作系统仅在内核中保留了调度、基础IPC、虚拟内存管理等少数核心功能模块,它们位于内核空间,而操作系统的其他功能模块(譬如文件系统、驱动程序等)与用户应用程序一起运行于用户空间;宏内核操作系统在内核中包括了整个操作系统的大部分功能模块(譬如文件系统、驱动程序等),并且这些系统模块都运行在同一个内核地址空间,模块之间通过简单的系统调用进行协调工作。

微内核(通常缩写为μ内核)由一群数量尽可能最少的软件程序组成,它们负责提供实现一个操作系统所必须的各种机制。这些机制就是之前提到的线程/进程调度机制、基础的进程间通信机制(IPC)、虚拟内存管理机制等;而包括文件系统、驱动程序在内的其他各种功能模块都放到用户空间。微内核的最小化也称为Jochen Liedtke最小化原则。Jochen Liedtke是一名德国科学家。这里区分两个术语,操作系统微内核即指微内核,微内核操作系统则指一种基于微内核架构的操作系统。

图1 微内核与宏内核架构

从操作系统功能模块来看,操作系统厂商依据自己的实际情况,可以将宏内核操作系统中的部分功能模块从内核空间移到用户空间,也可以将微内核操作系统中的部分功能模块从用户空间移到内核空间,由此就构成了微内核、小内核、大内核、宏内核等称谓。对于介于微内核和宏内核之间的小内核、大内核来说,有时也把它们称之为混合内核。对于操作系统厂商来说,没有必要严格遵守微内核的最小化原则,非要做一个严格意义上的微内核,或者完全意义上的宏内核。本文在后面主要讨论微内核和宏内核。



测试环境搭建步骤如下:

(e)准备seL4内核和应用镜像

(f)重启并选择seL4启动项

重启,选择“sel4-hello-world”启动项,在串口中出现下图画面

World测试程序输出

8.3 实验2:基于seL4进行进程间通讯

实验目的:为进一步研究seL4如何使用,需要研究如何在seL4系统下进行进程间通讯。

实验环境:与实验1相同。

client1端代码如下图所示:

client2端源码如下图所示:

实验环境:与实验1相同。

使用google-benchmark测试工具库,对每一个测试项编写一个测试程序,如下图所示:

针对上述源码,为每一个测试源码编写CMakeLists.txt文件,执行ninja命令成功后,把images文件夹中的kernel-x86_64-pc99和sel4benchapp-image-x86_64-pc99文件复制到测试环境的/boot目录下,增加启动项,重启后选择新增加的启动项。观察串口输出,抓取输出数据起始信息如下图所示:

对原始数据进行格式化处理后,显示信息如下所示:

实验目的:为研究如何在sel4上运行Linux。

实验环境:与实验1 相同。

使用中标麒麟安全操作系统V7.0系统中自带内核源码,对内核进行如下修改:

使用中标麒麟安全操作系统V7.0系统中自带initrd

(c)编写camkes文件生成虚拟机

执行ninja命令成功后,把images文件夹中的kernel-x86_64-pc99和capdl-loader-image-x86_64-pc99文件复制到测试环境的/boot目录下,增加启动项,重启后选择新增加的启动项。观察串口输出,可看到如下图所示信息:

seL4官方提供了一个性能测试工具sel4bench,直接编译运行就可以得到测试结果。我们仔细研究了sel4bench,然后花时间将每个测试用例移植到了Linux平台下,从而得出了Linux环境下的测试结果。

  1. 测试结果(单位ns):

通过以上对比测试,可以看出seL4内核与Linux内核综合性能持平

Counter)时间戳计数器的值:从pentium开始,很多80x86微处理器都引入TSC,一个用于时间戳计数器的64位的寄存器,它在每个时钟信号到来时加一。当前使用的CPU主频为2.90GHzMHz),所以计数器的单位大约是0.34ns

seL4微内核和Linux内核之间主要做了以下对比测试:

ipc Benchmarks:进程间通信机制( Inter-Process Communication,IPC)是一项影响内核操作系统整体性能的关键因素。为了评估IPC通信的实时性能, ipc Benchmarks测试用例中通过统计内核IPC通信机制下消息在内核中的时间消耗,用以测试高实时优先级进程的通信延时。

irquser Benchmarks:中断处理是整个系统中优先级最高的代码,在系统运行过程中,中断程序可以抢占到任意任务级别的代码运行,而且中断也分等级,高级别中断抢占低级别中断。系统实时性是依靠中断机制来保证的,多任务的环境运行基础也是中断机制。所以对于衡量内核性能,最重要的指标就是中断延迟。irquser Benchmarks测试用例用来测试内核的中断延迟。

time),即系统在两个独立的、处于就绪态并且具有相同或不同优先级的任务之间切换所需要的时间。切换所需的时间主要取决于保存任务上下文所用的数据结构以及操作系统采用的调度算法的效率。产生任务切换的原因可以是资源可得,信号量的获取等。任务切换过程增加了应用程序的额外负荷。CPU的内部寄存器越多,额外负荷就越重。任务切换所需要的时间取决于CPU有多少寄存器要入栈。

signal Benchmarks:信号量混洗时间是指从一个任务释放信号量到另一个等待该信号量的任务被激活的时间延迟。在操作系统中,通常有许多任务同时竞争某一共享资源,基于信号量的互斥访问保证了任一时刻只有一个任务能够访问公共资源。信号量混洗时间反映了与互斥有关的时间开销,因此也是衡量内核实时性能的一个重要指标。

fault Benchmarks:异常是可以打断CPU正在运行流程的一些事情,比如外部中断、未定义指令、试图修改只读数据、执行swi指令(中断指令)等。当这些事情发生时,CPU暂停当前的程序,先处理异常事件,然后再继续执行被中断的程序。中断也是异常的一种。fault Benchmarks测试用例用于统计内核处理异常时间消耗。

hardware Benchmarks:用于统计内核执行空系统调用的时间消耗。

sync Benchmarks:互斥锁是使用简单的加锁的方法来控制对共享资源的存取。互斥锁只有两种状态,也就是上锁和解锁。可以把互斥锁看作某种意义上的全局变量。在同一时刻只能有一个线程掌握某个互斥上的锁,拥有上锁状态的线程能够对共享资源进行操作。若其他线程希望上锁一个已经上锁了的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止。互斥锁使得共享资源按序在各个线程中操作。sync Benchmarks使用互斥锁和信号量实现多线程间的同步,统计同步信号发出到所有等待线程接收到同步信号的时间消耗。

}

我要回帖

更多关于 ubuntu依赖关系不满足 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信