Container的内核技术基础:Namespace

容器的最重要的特性之一是资源的隔离性,Linux内核为Container的实现提供了比较重要的技术基础之一: Namespace技术。
Namespace这个词我们并不陌生,最常见的就是编程语言中的namespace概念,主要是命名空间或者package管理空间等。我的理解就是提供了一个新的环境或世界,该环境或世界提供了与其它环境或世界隔离,并拥有自我内部独立的运行规则。(漫威的漫画中经常有平行世界的概念,人物的发展分叉了,两个时空没有关系。。。扯远了)

Read More

Docker Introduce

Docker最近这几年成为了虚拟化领域炙手可热的话题,发展也极为迅速,不同于KVM的OS级虚拟化解决方案,Docker从容器级虚拟化技术角度提供了一个开放的,及其轻量级的虚拟化平台。

Docker helps you ship code faster, test faster, deploy faster, and shorten the cycle between writing code and running code.

Read More

Learning notes for Golang

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Go is a general purpose programming language with advanced features and a clean syntax. Because of its wide availability on a variety of platforms, its robust well-documented common library, and its focus on good software engineering principles, Go is an ideal language to learn as your first programming language.
This is my learning note of GO Tour(https://tour.golang.org), just for reference and memory.

Read More

中断虚拟化二

上篇讲到虚拟PIT注册了一个高精度定时器,1ms周期,注册的定时器处理函数为:kvm_timer_fn。综合以上机制介绍,来想像一个场景,就可以理解物理pit timer interrupt是如何经为虚拟pit提供时钟,进而产生虚拟timer interrupt提交给guest OS。假如:guest vcpu正在执行,来了一个时钟物理中断,而这个物理时钟中断也要传递给guest OS。

Read More

中断虚拟化一

一个操作系统要跑起来,必须有Time Tick,它就像是身体的脉搏。普通情况下,OS Time Tick由PIT(i8254)或APIC Timer设备提供—PIT定期(1ms in Linux)产生一个timer interrupt,作为global tick, APIC Timer产生一个local tick。在虚拟化情况下,必须为guest OS模拟一个PIT和APIC Timer。
模拟的PIT和APIC Timer不能像真正硬件那样物理计时,所以一般用HOST的某种系统服务或软件计时器来为这个模拟PIT提供模拟”时钟源”。
目前两种方案:1. 用户态模拟方案(QEMU); 2. 内核态模拟方案(KVM);

Read More