PYQ Blog

「想成为真正的工程师」

NVIDIA-Container-Toolkit—源码阅读—tools

NVIDIA-Container-Toolkit—CodeReading—tools

tools/container tree 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 . ├── containerd │   ├── config_v1_test.go │   ├── config_v2_test.go │   └── containerd.go ├── container.go ...

Runc 创建、启动和删除容器的调用参数

How runc create, start and delete container?

runc是一个基于oci标准实现的一个轻量级容器运行工具,用来创建和运行容器。runc也是最流行的底层运行时工具,docker和k8s等均默认采用runc作为其底层运行时。通常我们不会直接去使用runc去创建和管理容器,也不建议我们直接去操作,而是由更高级的容器运行时(containerd、cri-o等)进行操作和管理。而用户则直接通过docker或者k8s提供的工具和命令与高级容器运行时进...

容器钩子

Container Hook

container hooks hooks 什么是钩子呢? Wikipedia中的定义如下。 In computer programming, the term hooking covers a range of techniques used to alter or augment the behavior of an operating system, of applica...

MIT 6.S081—Meltdown

Meltdown

Meltdown Meltdown这一节主要介绍了一篇利用CPU工作的隐藏细节实现操作系统内核攻击的论文,也就是Micro-Architectural Attack。但这种攻击可以被修复,似乎也已被完全修复,并且也只是“学院派”的尝试,当然它确实是能造成攻击成功的。 内核提供安全性的方法是隔离,用户程序不能读取内核的数据,用户程序也不能读取其他用户程序的数据。操作系统中用来实现隔离的具体...

MIT 6.S081—RCU

RCU

Spinlock 在xv6中我们通过spinlock(自旋锁)来解决多个进程对共享数据进行读写的一致性和正确性,当两个进程可能会相互影响时,spinlock会阻止并行运行,所以spinlock的直接效果就是降低性能。假如我们的数据主要是在被读取,相对来说很少被写入,这个时候spinlock的性能就会极其的低,因为即使只是两个读取数据的线程也只能一次执行一个线程。于是一种改进方法是使用一种新...

MIT 6.S081—Lab 3: page tables

page tables

Before you start coding, read Chapter 3 of the xv6 book, and related files: kern/memlayout.h, which captures the layout of memory. kern/vm.c, which contains most virtual memory (VM) code. k...

MIT 6.S081—高级编程语言实现操作系统的优劣势

The benefits and costs of writing a POSIX kernel in a high-level language

Benefits and costs of writing a POSIX kernel in C 现在很多操作系统都是用C实现的,除了熟悉的xv6外,一些更流行的运行在我们电脑和手机的操作系统:Windows、mac os、Linux、Android和iOS都是用C实现的。我们可能都问过应该用什么样的编程语言来实现操作系统内核?尤其时在发现操作系统中有Bug的时候,然后你会想,如果我使用...

MIT 6.S081—网络

Networking

虽然本科专业是网络工程,但由于学校文科式的教学,对网络的了解仅限于八股文。Robert这节课讲的很好,甚至可以说让我豁然开朗,海大垃圾的本科教育:( Introduction 相近的主机连接在同一个局域网中。例如有一个以太网设备,可能是交换机或者单纯的线缆,然后有一些主机(笔记本、服务器或者路由器)连接到了这个以太网设备。每个主机上会有不同的应用程序,或许其中一个主机有网络浏览器,另一个...

Git Commit规范

Git Commit Specification

一直想规范一下自己的git commit message,之前都是随便写的,太业余了(,并且代码的维护成本也很大(虽然还没咋维护过,也没有回滚过。不过,具体的公司应该会对代码和提交都有相应的规范。还是写一下来规范personal projet。 参考Angular规范和如何规范你的Git commit?—阿里云开发者 Git Commit Message格式 1 <type&...

MIT 6.S081—微内核

Micro Kernel

Monolithic kernel Monolithic kernel是一种操作系统设计范例,将操作系统的核心功能集中在一个单一的内核中。在Monolithic kernel中,操作系统的所有功能,包括进程管理、内存管理、设备驱动程序、文件系统和网络协议栈等,都实现为内核的一部分。Monolithic kernel的设计简单直接,因为所有的功能都在一个内核空间中运行,它们之间可以直接访问和...