![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 92
云微123
饮糊涂酒一瓢,炖悲喜一锅吃掉x
个人网站:
www.yunwei123.tech
github:
https://github.com/yunwei37
展开
-
操作系统大赛:基于 eBPF 的容器监控工具 Eunomia 初赛报告(容器信息收集、安全规则与 seccomp)
项目仓库:https://github.com/yunwei37/Eunomia目前我们的容器追踪模块是基于进程追踪模块实现的,其数据结构为:容器追踪模块由实现同时我们添加了一个manager类来控制tracker。4.5.2. 容器追踪实现容器追踪模块的ebpf代码服用了process追踪模块的ebpf代码,因此这里我们只介绍用户态下对数据处理的设计。当内核态捕捉到进程的数据返回到用户态时,我们调用函数,判断该进程是否归属于一个container,其具体实现为:首先,如果进程处于退出状态,那么原创 2022-07-07 23:55:40 · 953 阅读 · 0 评论 -
操作系统大赛:基于 eBPF 的容器监控工具 Eunomia 初赛报告(系统设计、ebpf 探针设计)
项目仓库:https://github.com/yunwei37/Eunomia系统架构关于详细的系统架构设计和模块划分,请参考 系统设计文档tracker_manager负责启动和停止 ebpf 探针,并且和 ebpf 探针通信(每个 tracer 是一个线程);我们主要有五个ebpf探针:container_manager负责观察 container 的启动和停止,保存每个 container 的相关信息:(cgroup,namespace),同时负责 container id, container n原创 2022-07-07 23:48:29 · 589 阅读 · 0 评论 -
Eunomia: 基于 eBPF 的轻量级 CloudNative Monitor 工具,用于容器安全性和可观察性(概要介绍)
是一个使用 C/C++ 开发的基于 eBPF 的云原生监控工具,旨在帮助用户了解容器的各项行为、监控可疑的容器安全事件,力求为工业界提供覆盖容器全生命周期的轻量级开源监控解决方案。它使用 技术在运行时跟踪您的系统和应用程序,并分析收集的事件以检测可疑的行为模式。目前,它包含 、容器集群网络可视化分析*、容器安全感知告警、一键部署、持久化存储监控等功能。除了收集容器中的一般系统运行时内核指标,例如系统调用、网络连接、文件访问、进程执行等,我们在探索实现过程中还发现目前对于 和 相关用户态 工具和指标原创 2022-06-30 01:18:44 · 730 阅读 · 0 评论 -
MIT 6.828 操作系统工程 lab4BC 笔记
MIT 6.828 操作系统工程 lab4B:Copy-on-Write Fork用户级页面错误处理练习 8. 实现sys_env_set_pgfault_upcall系统调用用户环境中的正常和异常堆栈练习 9.page_fault_handler用户模式页面错误入口点练习 10._pgfault_upcall练习 11.set_pgfault_handler()实现写时复制分叉练习 12 实现 fork,duppage 和 pgfaultMIT 6.8..原创 2021-12-09 16:37:08 · 751 阅读 · 0 评论 -
MIT 6.828 操作系统工程 Lab5: File system, Spawn and Shell 笔记
MIT 6.828 操作系统工程 Lab5: File system, Spawn and Shell这篇是我自己探索实现 MIT 6.828 lab 的笔记记录,会包含一部分代码注释和要求的翻译记录,以及踩过的坑/个人的解决方案这里是我实现的完整代码仓库,也包含其他笔记等等:https://github.com/yunwei37/6.828-2018-labs实际上 lab5 可能是最简单的一个 lab 了(绝大多数的代码都已经写好了,就一点点完形填空要做)lab5 需要仔细阅读的材料比较多:原创 2021-12-09 16:35:13 · 805 阅读 · 0 评论 -
MIT 6.828 操作系统工程 lab3A:用户环境和异常处理
这篇是我自己探索实现 MIT 6.828 lab3A 的笔记记录,会包含一部分代码注释和要求的翻译记录,以及踩过的坑/个人的解决方案这里是我实现的完整代码仓库,也包含其他笔记等等:https://github.com/yunwei37/6.828-2018-labs目录MIT 6.828 操作系统工程 lab3A:用户环境和异常处理目录记录一个奇怪的问题A部分:用户环境和异常处理环境的状态分配环境数组创建和运行环境处理中断和异常受保护控制转移的基础异常和中断的类型设置I.原创 2020-09-28 17:19:56 · 972 阅读 · 0 评论 -
MIT 6.828 操作系统工程 lab2 通关指南
这篇是我自己探索实现 MIT 6.828 lab2 的笔记记录,会包含一部分代码注释和要求的翻译记录,以及踩过的坑/个人的解决方案这里是我实现的完整代码仓库,也包含其他笔记等等:https://github.com/yunwei37/6.828-2018-labs目录MIT 6.828 操作系统工程 lab2 通关指南目录第1部分:物理页面管理第2部分:虚拟内存虚拟,线性和物理地址引用计数页表管理第3部分:内核地址空间权限和故障隔离初始化内核地址空间地址空间布局选.原创 2020-09-28 17:19:21 · 2229 阅读 · 0 评论 -
地理空间数据库复习笔记:关系数据库标准语言、几何对象模型与查询
我的GIS/CS学习笔记:https://github.com/yunwei37/ZJU-CS-GIS-ClassNotes<一个浙江大学本科生的计算机、地理信息科学知识库 >Lecture 3 关系数据库标准语言SQL概述SQL (stands for Structured Query Language)A standard language for querying and manipulating dataA very high-level (optimized) pro.原创 2020-08-29 14:55:31 · 1615 阅读 · 2 评论 -
地理空间数据库复习笔记:概论、关系模型与关系代数
我的GIS/CS学习笔记:https://github.com/yunwei37/ZJU-CS-GIS-ClassNotes<一个浙江大学本科生的计算机、地理信息科学知识库 >Lecture 1 地理空间数据库概论关系数据库基本概念关系数据库原理由埃德加·科德(Edgar Codd)于1970年提出:关系数据库将数据操作从具体的计算软件模型和物理存储模式中独立出来,只需了解数据间的逻辑关系,就可以通过数据库操作语言来管理和分析数据数据模型数据模型是用来描述数据、 组织数据和对数.原创 2020-08-28 15:57:50 · 1640 阅读 · 0 评论 -
rust写操作系统 rCore tutorial 学习笔记:实验指导六 用户程序与系统调用
这是 os summer of code 2020 项目每日记录的一部分:每日记录github地址(包含根据实验指导实现的每个阶段的代码):https://github.com/yunwei37/os-summer-of-code-daily这里参考的是rCore tutorial的第三版:https://github.com/rcore-os/rCore-Tutoriallab6 学习报告这一章的实验指导包含:单独生成 ELF 格式的用户程序,并打包进文件系统中创建并运行用户进程使用系统调原创 2020-07-24 20:12:07 · 1335 阅读 · 0 评论 -
rust写操作系统 rCore tutorial 学习笔记:实验指导五 驱动与文件
这是 os summer of code 2020 项目每日记录的一部分:每日记录github地址(包含根据实验指导实现的每个阶段的代码):https://github.com/yunwei37/os-summer-of-code-daily这里参考的是rCore tutorial的第三版:https://github.com/rcore-os/rCore-Tutoriallab5 学习报告lab5 涉及:设备树的概念和读取virtio 总线协议块设备驱动的实现将块设备托管给文件系统这原创 2020-07-24 20:10:16 · 964 阅读 · 0 评论 -
rust写操作系统 rCore tutorial 学习笔记:实验指导四 进程与线程
这是 os summer of code 2020 项目每日记录的一部分:每日记录github地址(包含根据实验指导实现的每个阶段的代码):https://github.com/yunwei37/os-summer-of-code-daily这里参考的是rCore tutorial的第三版:https://github.com/rcore-os/rCore-Tutoriallab4 学习报告lab4 涉及:线程和进程的概念以及运行状态的表示线程的切换对 CPU 进行抽象在上面完成对线程的调度原创 2020-07-24 20:08:11 · 1241 阅读 · 0 评论 -
rust写操作系统 rCore tutorial 学习笔记:实验指导三 虚拟地址与页表
这是 os summer of code 2020 项目每日记录的一部分:每日记录github地址(包含根据实验指导实现的每个阶段的代码):https://github.com/yunwei37/os-summer-of-code-daily这里参考的是rCore tutorial的第三版:https://github.com/rcore-os/rCore-Tutoriallab3 学习报告lab3 和 lab2 联系紧密,是其后续部分,在 lab2 中涉及通过页的方式对物理内存进行管理:在 la原创 2020-07-24 20:06:23 · 1039 阅读 · 0 评论 -
rust写操作系统 rCore tutorial 学习笔记:实验指导二 内存分配与管理
这是 os summer of code 2020 项目每日记录的一部分:每日记录github地址(包含根据实验指导实现的每个阶段的代码):https://github.com/yunwei37/os-summer-of-code-daily这里参考的是rCore tutorial的第三版:https://github.com/rcore-os/rCore-Tutoriallab2 学习报告这部分的代码从上一章 lab1 的代码开始完成:这一章的实验指导中:实现动态内存的分配了解 QEMU原创 2020-07-24 20:03:48 · 969 阅读 · 0 评论 -
rust写操作系统 rCore tutorial 学习笔记:实验指导一 中断
这是 os summer of code 2020 项目每日记录的一部分:每日记录github地址(包含根据实验指导实现的每个阶段的代码):https://github.com/yunwei37/os-summer-of-code-daily这里参考的是rCore tutorial的第三版:https://github.com/rcore-os/rCore-Tutoriallab1 学习报告RISC-V 中有关中断处理的寄存器和相关流程如何保存上下文,使得中断处理流程前后,原本正在执行的程序感知原创 2020-07-24 20:00:41 · 1820 阅读 · 0 评论 -
rust写操作系统 rCore tutorial 学习笔记:实验指导零 创建项目与启动
这是 os summer of code 2020 项目每日记录的一部分:每日记录github地址(包含根据实验指导实现的每个阶段的代码):https://github.com/yunwei37/os-summer-of-code-daily这里参考的是rCore tutorial的第三版:https://github.com/rcore-os/rCore-TutorialrCore tutorial environment && lab 0环境配置本机环境(新安装的虚拟机系统,上原创 2020-07-24 19:58:19 · 4777 阅读 · 1 评论 -
rust 入门笔记:使用rust实现双向链表、二叉树
这是 os summer of code 2020 项目每日记录的一部分:github地址:https://github.com/yunwei37/os-summer-of-code-daily双向链表数据结构定义:use std::rc::Rc;use std::cell::RefCell;use std::clone::Clone;#[derive(Debug)]struct ListNode{ value :i32, next: Option<Rc<Re原创 2020-07-11 22:04:34 · 2147 阅读 · 0 评论 -
RISC-V 学习笔记:由来、基础整数指令集、汇编语言、特权架构
这是 os summer of code 2020 每日记录的一部分:github地址:https://github.com/yunwei37/os-summer-of-code-daily参考:RISC-V 手册 一本开源指令集的指南第一章 为什么要有 RISC-VRISC-V的目标是成为一个通用的指令集架构(ISA):它要能适应包括从最袖珍的嵌入式控制器,到最快的高性能计算机等各种规模的处理器它应该能兼容各种流行的软件栈和编程语言它应该适应所有实现技术,包括现场可编程门阵列(FPGA)、原创 2020-07-08 12:37:41 · 2350 阅读 · 1 评论 -
MIT 6.828 操作系统工程 2018 fall lab1 part3 内核 笔记 and 中文注释源代码阅读
mit 6.828 lab 代码和笔记,以及中文注释源代码已放置在github中:https://github.com/yunwei37/xv6-labsPart 3: The Kernel 内核使用虚拟内存解决位置依赖性内核的链接地址(由objdump打印)与加载地址之间存在(相当大的)差异;操作系统内核通常喜欢被链接并在很高的虚拟地址(例如0xf0100000)上运行,以便将处理器虚拟地址空间的下部留给用户程序使用。链接地址 f0100000加载地址 00100000许多机器在地址0x原创 2020-07-01 22:42:09 · 801 阅读 · 0 评论 -
MIT 6.828 操作系统工程 lab1 2018 fall part1 & part2 笔记 and 中文注释源代码阅读
mit 6.828 lab 代码和笔记,以及中文注释源代码已放置在github中:https://github.com/yunwei37/xv6-labsinitsetup实验内容采用git分发:git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab测试的话可以使用:make gradePart 1: PC Bootstrap需要了解x86汇编以及内联汇编的写法,参看:http://www.delorie.原创 2020-06-30 20:02:14 · 1022 阅读 · 0 评论 -
MIT 6.828 操作系统工程 2018 fall xv6 工具链搭建与测试
MIT 6.828 操作系统工程 工具链搭建测试mit 6.828 lab 代码和笔记,以及中文注释源代码已放置在github中:https://github.com/yunwei37/xv6-labstools环境:在vmware中新安装的ubuntu 版本 20.04:uname -aLinux ubuntu 5.4.0-39-generic #43-Ubuntu SMP Fri Jun 19 10:28:31 UTC 2020 x86_64 x86_64 x86_64 GNU/Linu原创 2020-06-30 19:16:23 · 568 阅读 · 0 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(6)- 语义分析:符号表和变量、函数
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(6)- 语义分析:符号表和变量、函数项目github地址及源码:https://github.com/yunwei37/tryC这一部分,我们再回过头来看看变量、函数是怎样存储和处理的、以及符号表是怎样构建的。符号表我们先来回顾一下符号表的定义:符号表是一种用于语言翻译器(例如编译器和解释器)中的数据结构。在符号表...原创 2020-05-07 19:11:32 · 1340 阅读 · 0 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(4)- 语法分析1:EBNF和递归下降文法
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(4)- 语法分析1:EBNF和递归下降文法用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(3)- 词法分析项目github地...原创 2020-05-06 16:56:03 · 1685 阅读 · 1 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(3)- 词法分析
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(3)- 词法分析项目github地址及源码:https://github.com/yunwei37/tryC用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计这一篇讲讲在tryC中词法分析器是怎...原创 2020-05-06 12:32:22 · 1477 阅读 · 0 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(2)- 简介和设计用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言项目github地址及源码:https://github.com/yunwei37/tryC需要了解的一些基本概念通常我们说的 “编译器” 是一种计算机程序,负责把一种编程语言编写的源码转换成另外一种计算机代码,后...原创 2020-05-05 21:52:40 · 2094 阅读 · 0 评论 -
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)- 目标和前言
用c语言手搓一个600行的类c语言解释器: 给编程初学者的解释器教程(1)项目github地址及源码:https://github.com/yunwei37/tryC一个小目标这一系列教程希望面向初学者,使用c语言手工实现一个简单的解释器来玩,不需要您掌握除了c语言以外的其他前置知识,也不需要您学习过编译原理的相关知识(当然如果能对简单的数据结构有所了解的话会更好,比如树、栈等)。不同于...原创 2020-05-05 20:35:00 · 2229 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-47 打印选课学生名单 (25分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x假设全校有最多40000名学生和最多2500门课程。现给出每个学生的选课清单,要求输出每门课的选课学生名单。输入格式:输入的第一行是两个正整数:N(≤40000),为全校学生总数;K(≤2500),为总课程数。此后N行,每行包括一个学生姓名(3个...原创 2020-05-02 21:27:01 · 950 阅读 · 1 评论 -
PTA 数据结构与算法题目集(中文) 7-49 打印学生选课清单 (25分)题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x卡时间卡的好严格的…假设全校有最多40000名学生和最多2500门课程。现给出每门课的选课学生名单,要求输出每个前来查询的学生的选课清单。输入格式:输入的第一行是两个正整数:N(≤40000),为前来查询课表的学生总数;K(≤2500),为总课...原创 2020-05-02 21:23:16 · 726 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-7 六度空间 (30分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”“六度空间”理论虽然得到广...原创 2020-05-02 21:19:58 · 538 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-44 基于词频的文件相似度 (30分)
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x思路倒排索引的结构如下:“关键词1”:“文档1”的ID,“文档2”的ID,…………。“关键词2”:带有此关键词的文档ID列表。从词的关键字,去找文档。题目实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度。为...原创 2020-05-02 21:12:27 · 826 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文)7-14 电话聊天狂人 (25分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:...原创 2020-05-02 21:04:42 · 547 阅读 · 0 评论 -
数据结构与算法题目集(中文)7-6 列出连通集 (25分)题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是...原创 2020-05-02 21:00:15 · 440 阅读 · 0 评论 -
PTA 数据结构与算法题目集(中文) 7-10 公路村村通 (30分) 最小生成树(kruskal算法)
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x克鲁斯卡尔算法的基本思想是以边为主导地位,始终选择当前可用的最小边权的边(可以直接快排或者algorithm的sort)。每次选择边权最小的边链接两个端点是kruskal的规则,并实时判断两个点之间有没有间接联通。PTA题目现有村落间道路的统计数...原创 2020-05-02 20:55:42 · 756 阅读 · 0 评论 -
数据结构与算法题目集(中文)7-20 表达式转换 (25分) 题解
源代码:https://github.com/yunwei37/myClassNotes还有不少数据结构和算法相关的笔记以及pta题解哦x题干算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右...原创 2020-05-02 20:48:55 · 424 阅读 · 0 评论 -
PAT (Top Level) Practice 1017 The Best Peak Shape (35 分) 题解
PTA top level 练习里面的一道题目...挺简单的,就是读懂题目然后注意一下边界条件。就是两个最大上升子序列,从正反两个方向进行,然后把结果叠加到一起就好啦。不算注释的话30行代码...可以说非常少了xIn many research areas, one important target of analyzing data is to find the best "peak s...原创 2019-06-07 00:59:16 · 699 阅读 · 0 评论 -
debian9.9 apache2.4 站点添加ssl证书配置https
好像找到的大多数是centos上面的配置方式…而debain上面的apache配置大概有挺大的不同,所以写一个记录一下首先,ssl的站点配置文件在/etc/apache2/sites-available/default-ssl.conf里面下载好ssl证书文件后,修改上面文件的# A self-signed (snakeoil) certificate can be created by...原创 2019-10-23 16:07:57 · 998 阅读 · 0 评论 -
LFS 8.4 的编译与安装:ubuntu 18.04 宿主系统
感觉还是能学到不少东西的…比如敲make和tar之类的命令熟练了好多(x主要是对整个最小化可用系统的构建过程、工具链安装和依赖解决、交叉编译和基本系统配置、启动过程之类东西有了一个直观的概念吧…还有也大概了解了一下那一个个软件包都是从哪里来干什么的(总之文档读仔细,尽量理解;感觉还算顺利。这次软件包编译安装部分完全按照文档走的。基本系统配置那边大概省略了一部分内容:主要只执行了7.6.2/7....原创 2019-09-06 18:56:25 · 532 阅读 · 0 评论