- 首发公号: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. ASP.NET CORE 框架揭秘读书笔记系列——ASP.NET应用程序(二)

    一.ASP.NET 应用 一个ASP.NET CORE 应用构建在ASP.NET CORE 框架之上,ASP.NET CORE框架利用一个消息处理管道完成对HTTP请求的监听.接收.处理和最终的响应. ...

  2. 国内首家!百度智能云宣布支持Llama3全系列训练推理

    继18日Llama3的8B.70B大模型发布后,百度智能云千帆大模型平台19日宣布在国内首家推出针对Llama3全系列版本的训练推理方案,便于开发者进行再训练,搭建专属大模型,现已开放邀约测试. 目前 ...

  3. 文件上传之Webshell连接方法

    "感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友.您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!" Websh ...

  4. 【笔记】go语言--函数式编程

    [笔记]go语言--函数式编程 简单来说,go语言的函数式编程体现的是一个闭包的情况 函数式编程 VS 函数指针 函数是一等公民:参数,变量,返回值都可以是函数 高阶函数 函数->闭包 &quo ...

  5. oracle SQL 进行时间冲突判断

    oracle SQL 进行时间冲突判断 背景:写一个预约模块,主要的限制就是时间限制,有冲突的时间段就不能进行预约 设数据库中的时间为A开始,A结束 设要判断的时间为B开始,B结束 则判断有在B开始时 ...

  6. 力扣607(MySQL)-销售员(简单)

    题目: 表: SalesPerson 表: Company 表: Orders 编写一个SQL查询,报告没有任何与名为 "RED" 的公司相关的订单的所有销售人员的姓名. 以 任意 ...

  7. dotnet 5 的 bin 文件夹下的 ref 文件夹是做什么用的

    本文来和大家聊聊在 dotnet 5 和 dotnet 6 或更高版本的 dotnet 构建完成,在 bin 文件夹下,输出的 ref 文件夹.在此文件夹里面,将会包含项目程序集同名的 dll 文件, ...

  8. Pod入门知识(4)

    一.Pod是什么? 官方文档:https://kubernetes.io/docs/concepts/workloads/pods/ Pod 是 Kubernetes 中的最小调度单元,k8s 是通过 ...

  9. Ubuntu环境下docker每次都需要sudo的问题

    1.添加 docker 用户组 sudo groupadd docker 可以通过 cat /etc/group 指令查看存在的用户组 2.将当前用户添加到 docker 组中 sudo gpassw ...

  10. R5_ES读写流程

    基本概念 refresh:es接收数据请求时先存入ES进程中的内存 Buffer ,默认每隔一秒(index.refresh_interval:1s)会从内存buffer中将数据写入 os cache ...