二、书接上文,上一节大概弄清了从通电到第一个程序运行的脉络。本节将深入探讨上节最后一部分:从 Kernel(内核态)切换到 User(用户态)的执行逻辑,并详细解析 从 User 返回 Kernel 的全过程。 kexec 进程加载与启动流程 阅读kexec所需声明:用户栈大小、程序头结构体定义、p ...
xv6:如何开始运行第一个用户进程 1. 硬件复位与内核加载 qemu 是虚拟主板。它模拟了 RISC-V 处理器、内存条、串口(用于输出文字到你的终端)、以及磁盘驱动器 。xv6 的初始化始于 QEMU 模拟的硬件复位 。根据kernel.ld链接脚本的约束,内核镜像被加载至物理地址0x80000 ...
@目录前言1、检测两台服务器指定目录下的文件一致性2、定时清空文件内容,定时记录文件大小3、检测网卡流量,并按规定格式记录在日志中4、计算文档每行出现的数字个数,并计算整个文档的数字总数5.杀死所有脚本6、从 FTP 服务器下载文件7、连续输入5个100以内的数字,统计和、最小和最大8、用户猜数字9 ...
在云计算与容器化技术飞速发展的今天,Docker 已经成为开发者必备的工具之一。无论是本地开发环境的一致性保障、持续集成/持续部署(CI/CD)的自动化落地,还是服务器资源的高效利用,Docker 都发挥着不可替代的作用。对于刚接触容器技术的新手而言,想要快速上手 Docker,首先需要理清其核心概 ...
Ansible是什么? Ansible官网:https://www.ansible.com/ Ansible 是一款开源的自动化运维工具,由 RedHat 公司开发维护,核心目标是实现: 批量服务器操作(命令执行、软件安装、配置修改) 应用部署与生命周期管理 配置自动化(替代手动修改配置文件) 任务 ...
数据库程序安装部署MySQL 步骤一:数据库部署环境准备 数据库程序安装部署MySQL 步骤一:数据库部署环境准备 - 系统环境准备:麒麟 V10 sp3 / CentOS 7.9 - 系统基础优化: 关闭防火墙:systemctl stop firewalld / systemctl disabl ...
Linux 3.2 进程, 线程 前言 注意: 本文章默认你学过操作系统的进程部分,了解进程的概念. 我们都知道, 在 Linux 中, 我们使用 LWP 来描述线程, 即不区分线程/进程, 统一用 task_struct 描述它. 但是在 Linux 中, 线程, 进程, 进程组实际上还是有点区别 ...
Linux 3.2 current_thread_info 函数 前言 current_thread_info, 这个函数在内核中, 经常被用于访问当前CPU正在运行的任务, 那么它的底层是怎么实现的呢? 这是我阅读 LKD 遇到的第一个难点, 也是我第一次体会到 "纸上得来终觉浅, 绝知此事要躬行 ...
该文章主要提到了一些常见的编译错误及其解决方案,并提供了一些最佳实践,帮助开发者避免编译过程中的陷阱。通过这些建议,读者能够更高效地进行嵌入式Linux开发,减少编译和调试的时间。 ...
Lab: traps 在这一个lab当中6.1810 / Fall 2025它要求我们理解xv6当中函数调用时的堆栈情况以及如何操控内存寻找多级函数调用的起始,更重要的是它带我们直观地感受到了中断的全过程。 在此之前,官网给出了一些提示: 在开始编程之前, 请阅读xv6教程的第4章,以及相关 ...
Lab:page tables 在这个lab中6.1810 / Fall 2025,要求我们先阅读xv6课本的Chapter 3 Page tables(第三章)。要求我们探索xv6当中关于页表的内容。并且要求我们实现一些页表相关功能的实现(例如:虚地址和物理地址的映射/解除映射,页表的创建和释 ...
1.在用户文件夹 %USERPROFILE% 新建一个 .wslconfig 文件,写入一下内容: [experimental] autoMemoryReclaim=gradual # gradual | dropcache | disabled networkingMode=mirrored dn ...
本文解析了 Linux 内核中的 module driver helper macro,讲解了 module_platform_driver 的实现原理与设计思想,展示了宏如何通过 宏拼接、可变参数、__init/__exit 和 module_init/module_exit 自动生成驱动注册与注... ...
1,代理客户端安装和配置 1,笔者是一个arm版本的linux Server,因此这里下载的是arm版本的包2,注意node_exporter的版本和prometheus的版本时间上不要相差太远,有可能不兼容或者一些其他问题。 ###新增node_exporter用户和组 root@******:/ ...
Lab: system calls 在这个lab当中6.1810 / Fall 2025 它要求你在xv6当中添加一个新的系统调用,以此来帮助你理解在操作系统当中,系统调用的底层实现逻辑和调用链条; 之后该lab当中会告诉你一个故意留下来的系统漏洞,要求你利用该漏洞获取之前的进程(已经被清理 ...
运维不只是"救火队员",而是系统的守护者 最近在和几位老运维聊起职业发展,他们不约而同地提到一个词:"运维是系统稳定性最后的防线"。这句话让我陷入了思考。作为IT行业中最容易被忽视的岗位之一,运维真的只是"救火队员"吗?还是说,我们正在经历一场静悄悄的变革? 从"消防员"到"守护者"的转变 记得刚入 ...
容器为什么能隔离进程?Kubernetes 怎么限制 Pod 资源?eBPF 监控的原理是什么? 这些问题的答案,都指向同一个开源项目——Linux Kernel。它是 Linus Torvalds 在 1991 年创建的操作系统内核,如今已成为云计算基础设施的技术基石。 什么是 Linux Ker ...
大家好,我是刘叨叨,一个致力于让碎片化技术系统性的运维人。 在云平台或物理服务器上部署服务时,面对一长串的Linux发行版列表,你是否感到选择困难?今天,我们就来理清思路,帮你做出自信的选择。 一、选择的价值:为何要了解发行版? 对于运维和开发者而言,选对发行版直接影响效率与稳定性。正确的选择意味着 ...
Lab: Xv6 and Unix utilities 在这个,也是第一个Lab当中6.1810 / Fall 2025,它会要求你通过git拉取最基本的内核代码,然后cd到内核代码目录当中,通过指定的指令(下面会介绍)即可构建起xv6操作系统。 1.拉取基本代码 注意:由于之前Lab0 配 ...
gitlab系统拓展AI代码自动审查多项目可复用架构 概述 我相信大家再赶进度的时候最讨厌的就是代码review,时间紧迫,几个项目并行的时候,review也是一个很大的开销,外面的开源方案再安全性上都很差,导致没有办法实际落地,这里开始设计一套可复用的架构,最初的AI代码审查系统基于单项目脚本实现 ...