minos 0 前(废)言(话)

简介: 从今天开始开启一个新的系列,讲述虚拟化的那些事儿。时隔上次发文又隔了好几个月了,主要是平时工作比较忙,没太多时间精力维护博客之类的。
  • 首发微信公号:Rand_cs

minos 0 前(废)言(话)

从今天开始开启一个新的系列,讲述虚拟化的那些事儿。时隔上次发文又隔了好几个月了,主要是平时工作比较忙,没太多时间精力维护博客之类的。

前一个系列 SELinux 没写完,但也不算太监,比较重要的基本都介绍了。剩下的就是 Linux 中关于 SELinux 驱动以及 libselinux 中的代码,关键部分的代码我基本捋了一遍,有些多,我也就懒得花时间整理了,我估计这玩意儿也没多少人感兴趣,懂这原理后实际用处也不大,感兴趣的可以去瞅瞅这代码,有问题的可以找我交流。SELinux 这东西应用是最重要的,就是策略,策略才是核心。这个在 Android 可能用的比较多,添加服务,应用,cts 测试等等可能都会遇到过 SELinux 策略的问题。从接触到现在,我也解决过许多 SELinux 兼容性的问题,简单的问题网上解决方式一大堆,比较复杂的 case,碍于公司事项,也不好实际拿出来讲,所以 SELinux 应用方面也就先不讲述了,这个系列就先到此为止,后面有缘再续。

回到虚拟化,虚拟化一直是我感兴趣的方向,工作之余一直有慢慢抽时间去了解学习。从课堂上接触到操作系统的时候,那是还是一个小菜鸟,对于操作系统课程各种抽象的说辞很是不解,为此去仔细研究了 xv6,基本做到了每行代码细细研究,终于对于操作系统有了一个比较直观的认识。至少说,虚拟内存、进程线程、上下文切换、shell 程序等等这些当时对我来说特别抽象的名词有了清晰的认识,并且从硬件到软件明白了它们是如何工作的。我印象最深的就是 shell 程序,当时书上还有老师给来了一句抽象的解释,shell,壳儿嘛,包裹着内核,通过 shell 程序我们执行命令程序,进入内核。当时我就直接懵逼了,,,这,这,这,可以这么解释的嘛。

又扯了太多,深夜写文章就是话多哈哈哈哈,再次回到虚拟化。虚拟化的话题也很大,而这个系列主要集中在 type1 类型的虚拟化。对于虚拟化相关的文章,网页上很多,写得很好的不计其数,我印象很深的,知乎上有个叫兰新宇大佬的博客,写得很好,推荐:https://www.zhihu.com/people/lan-xin-yu;

但总的来说,还是抽象了,没有落到实际的代码,有些东西终究模糊。源码之下,了无秘密,还是得看代码去学习虚拟化的一些知识。平时精力有限,一些耳熟能详的虚拟化方案太复杂,不太适合直接上手阅读学习。在网上搜索了一番,终于找到了一款小巧功能完整的 type1 类型的虚拟化方案。

此项目地址:https://github.com/minosproject/minos/tree/master 。看名字应该是一位叫做 乐敏 的大佬的项目,感谢这位大佬的项目,让我们有机会更加深入的接触到虚拟化的世界。

此项目的代码关键部分基本看完了,可以拿出来和大家分享分享。这次讲述可能不会像之前 xv6 那样详细到每行代码,大部分只是捋一下流程,有代码的那种比较清晰的流程。主要包括以下几个方面:

  1. 内存虚拟化,也就是 hyp 如何对内存进行管理的
  2. CPU 虚拟化,也就是 hyp 如何对进程进行管理的
  3. 中断虚拟化,捋清楚在有虚拟化的情况下,各种中断是如何路由与处理的
  4. IO 虚拟化,也就是虚拟机之间,虚拟机与 hypervisor 之间,虚机与物理硬件之间等等如何进行数据交互的

核心的大概就上面这些,其他的随缘,后面看时间精力来吧。目前这个系列前半部分——主要讲述上述虚拟化流程,基本已经写完了,这也是为什么搁了那么久才发文的一个原因,想着自己对 minos 有个整体把握,相关文章初稿都写完后,再慢慢发出来。

  • 首发微信公号:Rand_cs
目录
相关文章
|
存储 缓存 算法
xv6 启动理论部分
xv6 启动理论部分
523 2
|
Linux API C++
PCI-E配置MSI中断流程解析
<div id="article_content" class="article_content" style="margin: 20px 0px 0px; font-size: 14px; line-height: 26px; font-family: Arial;"> <p style="margin-top: 0px; margin-bottom: 0px; padding-top: 0
7833 0
|
算法 Java 数据库
Android 应用的主线程在什么情况下会被阻塞?
【10月更文挑战第20天】为了避免主线程阻塞,我们需要合理地设计和优化应用的代码。将耗时操作移到后台线程执行,使用异步任务、线程池等技术来提高应用的并发处理能力。同时,要注意避免出现死循环、不合理的锁使用等问题。通过这些措施,可以确保主线程能够高效地运行,提供流畅的用户体验。
1093 156
|
Ubuntu 安全 Shell
Ubuntu 上是能 SELinux
此文档说明如何在 ubuntu 上启用 SELinux,测试环境为虚拟机,开始前一定一定一定先来个快照,不要问我为什么有三个一定。
393 4
Ubuntu 上是能 SELinux
|
Docker 容器
Docker安装及镜像源修改
本文介绍了Docker的安装过程和如何修改Docker镜像源以加速下载。包括更新系统包、安装所需软件包、设置yum源、安装Docker以及验证安装是否成功。接着,提供了修改Docker镜像源的步骤,包括创建配置文件、编辑配置文件以设置镜像加速地址,并提供了几个常用的国内镜像源地址。最后,通过重启Docker服务和检查配置是否生效来完成镜像源的修改。
Docker安装及镜像源修改
|
安全 Linux Android开发
SELinux策略语法以及示例策略
本文来讲述 SELinux 策略常用的语法,然后解读一下 SELinux 这个项目中给出的示例策略
371 2
|
安全 调度 KVM
minos 4.6 中断虚拟化——虚拟中断子系统
Hypervisor 需要对每个虚机的虚拟中断进行管理,这其中涉及的一系列数据结构和操作就是虚拟中断子系统
393 5
|
安全 Ubuntu Linux
SELinux 简介
前段时间的工作遇到了一些关于 SELinux 的问题,初次接触不熟悉此概念,导致当时配置策略时束手束脚,焦头烂额,为此去系统的学习了下 SELinux 的东西。聊 SELinux 之前,先来看看什么叫做访问控制。
283 3
SELinux 简介
|
存储 监控 算法
《Ceph源码分析》——导读
本节书摘来自华章出版社《Ceph源码分析》一书中的导读,作者常涛,更多章节内容可以访问云栖社区“华章计算机”公众号查看 目  录序言第1章 Ceph整体架构 **1.1 Ceph的发展历程1.2 Ceph的设计目标1.
7583 1