• Runc Namespace 隔离流程分析

    在开始之前,我们先介绍一下 runc 的定位和职责, 先介绍,组成容器的三大技术, namespace, 内核提供的 namespace 隔离,用于让进程互相感知不到对方。 cgroup,用于资源限制,防止进程过度使用资源,影响其他进程甚至主机的正...
  • client-go 中指数退避 backoff

    指数退避算法退避简单来说,就是客户端的重试策略。常用的退避策略有, 固定退避,特点是每次重试间隔固定,简单可预测,大量客户端同时重试,可能造成更大的重试风暴。 线性退避,特点是重试间隔线性增加固定,比如间隔为 1,2,3,4,5… 指数退避,特点是...
  • kubeadm 搭建 kubenetes 集群

    本文介绍如何使用 kubeadm,创建一个符合最佳实践的最小化 Kubernetes 的单节点集群。虽然本文搭建的是,单节点 master 集群,依然可以通过 kubeadm 扩容新的 Node 节点加入到集群。本文会将重心放在如何拉起一个集群,集群...
  • 调试 libvirt 启动的 VM

    上篇,我们介绍了如何使用 qemu 启动内核并对其进行 debug。如今,很多云服务器都是通过 libvirt/qemu 启动的。本文就着手介绍,如何调试由 libvirt 启动的 linux 内核。 xml 添加 -s 参数<dom...
  • 修改重新封装 Linux ISO

    请注意:本文档旨在帮助您根据现有的 ISO 来创建一个 自定义的ISO文件。如果您希望从零开始,可以参考OpenCloudOS ISO镜像构建项目, https://gitee.com/OpenCloudOS/ocs_lorax_build_ima...
  • xv6 Lab6: Multithreading

    这个实验是熟悉多线程。需要实现在一个用户态的线程切换,使用多个线程来加速程序,并实现一个屏障。 uthread打开 user/uthread.c 文件,观察 uthread 的数据结构以及部分函数实现能帮我们快速理清思路。 关键实现stru...
  • xv6 Lab5: COW

    Lab5 的任务是在 xv6 内核中实现 COW fork。叫做 lazy fork 也行。 Implement copy-on-write fork关键实现struct kmem在 struct kmem 结构体中引入引用计数成员。 struct ...
  • xv6 Lab4: Traps

    Lab4 实现用户态 trap 处理,集中在返回用户态的中断上下文保存,很类似 signal 处理。 RISC-V assembly主要是一些基础知识。 Which registers contain arguments to functions?...
  • xv6 Lab3: page tables

    Page table 使用用来映射进程虚拟地址到物理地址。有了 pagetable 进程看到的是虚拟地址,对操作系统来说,有了 pagetable,可以实现更多的管理面的控制,Isolating,Guarding and etc. Speed up ...
  • xv6 Lab2: system calls

    Lab2 实现 2 个 syscall。 Using gdb第一部分是了解使用 gdb 调试 xv6(我使用的是 Debian) # 其中一个窗口启动 qemu-gdbcd xv6-labs-2023make qemu-gdb# 新开另一个窗口,连接...
/3