PYQ Blog

「想成为真正的工程师」

MIT 6.S081—页表

Page Tables

Introduction 此为MIT 6.S081课程和xv6-Books的学习笔记 页表是操作系统为每个进程提供私有地址空间和内存的机制。页表决定了内存地址的含义,以及物理内存的哪些部分可以访问。它们允许xv6隔离不同进程的地址空间,并将它们复用到单个物理内存上。页表还提供了一层抽象(a level of indirection),这允许xv6执行一些特殊操作:映射相同的内存到...

MIT 6.S081—Lab 2: system calls

system calls

Before you start coding, read Chapter 2 of the xv6 book, and Sections 4.3 and 4.4 of Chapter 4, and related source files: The user-space code for systems calls is in user/user.h and user/usys.p...

OS Security Lab—基于PAM的用户权能分配

[OS Security Lab] PAM-based user capability distribution

1.指出每个权能对应的系统调用,简要解释功能 Capabilities 机制是在 Linux 内核 2.2 之后引入的,原理就是将之前与超级用户 root(UID=0)关联的特权细分为不同的功能组,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。这样一来,权限检查的过程就变成了:在执行特权操作时,如果线程的有效身份不是 root,就去检...

OS Security Lab—缓冲区溢出与数据执行保护DEP

[OS Security Lab] Buffer Overflow and Data Execution Prevention (DEP)

攻击原理 C程序运行时结构 通过一个简单的C程序来叙述C程序运行时内存结构: 以32位进行讲解(即使用的寄存器为eip—指向将要被执行的下一条指令;ebp—当前栈帧的栈底;esp—当前栈帧的栈顶) 内存实际发生的情况远比例图复杂,省略了很多东西,例如堆,系统代码,动态链接库等 1 2 3 4 5 6 7 8 9 10 11 12 13 int fun(int a, in...

CSAPP—链接

[CSAPP] Linking

Introduction 链接 (linking) 就是将不同部分的代码和数据收集和组合成为一个单一文件的过程,这个文件可被加载(复制)到存储器并执行。 可以在程序生命周期的多个阶段执行链接: 编译时(compile time),也就是在源代码被翻译成机器代码时;例如静态链接 加载时(load time),也就是在程序被加载器(loader)加载到存储器并执行时(l...

MIT 6.S081—操作系统架构

Operating system organization

Introduction 此为MIT 6.S081课程和xv6-Books的学习笔记 操作系统必须满足的三个要求: 多路复用(并发) 隔离 交互 Abstracting physical resources 当谈及操作系统时,人们可能会问的第一个问题是为什么需要对系统资源进行抽象?为了实现强隔离(安全性、容错性和健壮性),最好禁止应用程序直接访问敏感的硬件资...

MIT 6.S081—Lab 1: Xv6 and Unix utilities

Xv6 and Unix utilities

sleep (easy) Implement the UNIX program sleep for xv6; your sleep should pause for a user-specified number of ticks. A tick is a notion of time defined by the xv6 kernel, namely the time between t...

MIT 6.S081—操作系统接口

Operating system interfaces

Introduction 此为MIT 6.S081课程和xv6-Books的学习笔记 About xv6 xv6 is modeled on Dennis Ritchie’s and Ken Thompson’s Unix Version 6 (v6). xv6 loosely follows the structure and style of v6, but is impl...

LeetCode—贪心算法

[LeetCode] Greedy Algorithm

贪心算法 贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使得最后得到的结果是全局最优的。 例子: 小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的贪心策略为:每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全局结果是局部结果的简单求和,且局部结果互不...

Docker Pull 速度慢的解决办法

The solution to the slow speed of Docker Pull

Docker Pull速度慢首先考虑网络的问题!!!如果一直不动或者极慢甚至TLS连接都建立失败,那大概率就是网络的问题了,考虑换个网络试试。 如果网络没有问题,就更换镜像源,可以多试试几个镜像源。 阿里云的教程