- 首发公号: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

minos 0 前(废)言(话)的更多相关文章

  1. 写在OI退役后和高中毕业前的一些话

    更新日志: 2017.02.13 开坑 2017.02.13 更新[零][壹] 2017.02.14 更新[贰] 2017.02.26 更新[叁][肆] 2017.03.04 锅多如狗,停更一周 20 ...

  2. appcompat v21: 让 Android 5.0 前的设备支持 Material Design

    1. 十大Material Design开源项目 2. appcompat v21: 让 Android 5.0 前的设备支持 Material Design 主题 AppCompat已经支持最新的调 ...

  3. 【Vuejs】301- Vue 3.0前的 TypeScript 最佳入门实践

    前言 我个人对更严格类型限制没有积极的看法,毕竟各类转类型的骚写法写习惯了. 然鹅最近的一个项目中,是 TypeScript+ Vue,毛计喇,学之...-真香! 1. 使用官方脚手架构建 npm i ...

  4. 【vue&ts开发】Vue 3.0前的 TypeScript 最佳入门实践

    1.使用官方脚手架构建 新的 VueCLI工具允许开发者 使用 TypeScript 集成环境 创建新项目. 只需运行 vue createmy-app. 然后,命令行会要求选择预设.使用箭头键选择  ...

  5. ios计算内容的高度 (含7.0前及以后的版本的用法)

    + (CGFloat)heightForContent:(MyMsgTextModel *)content withWidth:(CGFloat)width { CGSize contentSize; ...

  6. ASP.NET MVC 4.0 学习2-留言板實現

    新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案   2,添加數據庫文件message.mdf   Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...

  7. Thinkphp5.0+Vue2.0前后端分离框架Vuethink

    VueThink是一套基于Vue全家桶(Vue2.x + Vue-router2.x + Vuex)+ Thinkphp的前后端分离框架. 脚手架构建也可以通过vue官方的vue-cli脚手架工具构建 ...

  8. 【译】Optaplanner开发手册本地化: (0) - 前言及概念

    在此之前,针对APS写了一些理论性的文章:而对于Optaplanner也写了一些介绍性质,几少量入门级的帮助初学者走近Optaplanner.在此以后,老农将会按照Optaplanner官方的用户手册 ...

  9. 可遇不可求的Question之MySql4.0前版本不支持union与批量SQL提交

    批量SQL提交 参考 21.2.6. Connector/NET Connection String Options Reference . Allow Batch true When true, m ...

  10. 学python之路前的一些话

    为什么学python: 这些年一直从事运维相关的工作.但做下来感觉都是些很基础的东西,无非就是对一些命令或者问题处理很熟练而已,混的都是经验.曾很羡慕会写shell脚本,会自动化安装程序的运维组组长, ...

随机推荐

  1. 搭建Hadoop环境

    搭建Hadoop环境 一.虚拟机的安装 二. 安装JDK 1.下载jdk wget https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41- ...

  2. 阿里巴巴在 Envoy Gateway 的演进历程浅析

    ​简介:最近阅读 <Envoy Gateway 来了>这篇文章,深感 Envoy 强大的可扩展性和基于 Envoy Gateway 带来的易用性,在 K8s 架构下,Envoy 重新定义了 ...

  3. 深信服智能边缘计算平台与 OpenYurt 落地方案探索与实践

    ​简介:本文将介绍边缘计算落地的机遇与挑战,以及边缘容器开源项目 OpenYurt 在企业生产环境下的实践方案. 作者:赵震,深信服云计算开发工程师,OpenYurt 社区 Member 编者案:在 ...

  4. 2021年阿里云年中钜惠攻略,注册即可抽 iPhone 12 Pro 等好礼

    简介: 七月流火,燃情盛夏!值此季节,阿里云又推出了年中钜惠,精选百款产品,助力创业新势力.从7月26日开始,每天上午10点.下午4点将会放出爆款产品,进行限量秒杀,大家不要错过.注册登陆还可抽取 i ...

  5. 【CDS技术揭秘系列 总篇】阿里云的云定义存储来了

    ​简介: 全新发布的云定义存储 CDS 和传统的存储阵列.分布式存储.软件定义存储的区别在哪里?阿里云存储团队如何看待将来存储的发展趋势?本文邀请了 CDS 研发团队的核心技术负责人为大家揭开围绕着阿 ...

  6. [Pholcus] Go项目 Pholcus 编写静态规则文件, 0 到 1

    1. 初始化项目包,go mod init [module-path] 比如:go mod init github.com/abc/efg 2. 新建一个目录放置我们编写的规则 go 文件. 3. m ...

  7. WPF 动画实战 点击时显示圆圈淡出效果

    本文告诉大家一个有趣的动画,在鼠标点击的时候,在点击所在的点显示一个圆圈,然后这个圆圈做动画变大,但是颜色变淡的效果.本文的控件可以让大家将对应的容器放在自己应用里面就能实现这个效果 这个效果特别简单 ...

  8. 一键启动的AI离线知识库,无需复杂环境依赖,小白都能上手了

    简介 在人工智能技术飞速发展的今天,我们经常面临一个挑战:如何快速.简便地部署和使用AI技术?AntSK项目,一个开源的AI知识库和智能体,就是为了解决这一问题而诞生的.现在,我们自豪地宣布,AntS ...

  9. 【简说Python WEB】用户身份验证--Werkzeug

    目录 [简说Python WEB]用户身份验证--Werkzeug Flask的security扩展 使用Werkzeug生成密码散列值 系统环境:Ubuntu 18.04.1 LTS Python使 ...

  10. 命令行创建vue项目

    vue -h vue create learn-vue ❯ Manually select features 选择下面的组件(空格为选中/取消)回车确认 使用 history mode 使用node ...