摘要:
页表是硬件提供进程间隔离的方法之一,并通过它来实现虚拟地址和物理地址之间的转换,通过页表可以决定进程能够访问物理内存的哪些部分,xv6提供了一些小技巧,比如在不同的地址空间中可以映射相同的trampoline page,trampoline是用来辅助用户模式进入内核模式的,所以它可被共用。 1 分页 阅读全文
摘要:
一个操作系统至少应该满足三个需求:多路复用、隔离、交互。本章主要介绍如何组织操作系统来实现以上的三个需求,本文关注的是一种围绕单核进行设计的方法,这种设计是被许多uinx操作系统所使用的。Xv6运行在多核RISC-V微处理器上时,它的许多低级功能(例如,它的进程实现)是特定于RISC-V的,RISC 阅读全文
摘要:
xv6book主要研究了xv6如何实现它的类Unix接口,但是其思想和概念不仅仅适用于Unix。任何操作系统都必须将进程多路复用到底层硬件上,相互隔离进程,并提供受控制的进程间通信机制。 1 了解xv6 xv6是一个模仿unix内部设计的操作系统,其提供了unix中对应的部分系统调用。理解xv6对于 阅读全文
摘要:
概述 MySQL是一种数据库管理系统(DBMS),所管理的都是关系型数据库,特点就是以表的形式来存储数据,一个数据库中可以有多张表,表中划分为行和列,可以将一行对应于一个对象,而每一列所表示的就是对象的各个属性。在MySQL中用主键(Primary Key)来唯一的标识某一行,主键是一个列也可以是一 阅读全文
摘要:
### 1 类与类之间的关系 - 继承(泛化) - 组合:整体对象可以控制成员对象的生命周期,一旦主体对象不存在,成员对象也不存在,整体对象和成员对象之间具有同生共死的关系,例如人的头部与眼、耳朵 - 聚合:成员对象是整体的一部分,但是成员对象可以脱离主体对象独立存在。主体对象析构到的时候成员对象依 阅读全文
摘要:
### 1 智能指针 在C++中没有垃圾回收机制,必须自己释放分配的内存,否则就会造成内存泄露。解决这个问题最有效的方法是使用智能指针(smart pointer)。智能指针是存储指向动态分配(堆)对象指针的类,用于生存期的控制,能够确保在离开指针所在作用域时,自动地销毁动态分配的对象,防止内存泄露 阅读全文
摘要:
### 1 可调用对象包装器、绑定器 #### 1可调用对象 C++中的可调用对象分为四类: - 函数指针: 任何一个函数都可以抽象成一个函数指针 ``` int print(int a, double b) { cout #include #include using namespace std; 阅读全文
摘要:
### 1 原始字面量 有时候在输出一个路径字符串时,编译器会将其中的部分内容识别成转义字符进行输出,可以用`R “xxx(原始字符串)xxx”`其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。 ``` string str2 = R" 阅读全文
摘要:
### 1 多态 多态分两类: - 静态多态:函数重载和运算符重载,即复用函数名 - 动态多态:派生类和虚函数来实现运行时多态 区别: - 静态多态在**编译阶段**确定函数地址 - 动态多态在**运行阶段**确定函数地址,根据传入的对象不同确定具体的执行函数 动态多态满足条件: - 首先要有继承关 阅读全文
摘要:
### 1 友元 目的是让一个函数或者类可以访问另一个类的私有成员,其关键字为`friend` 三种实现: - 全局函数做友元 在类外定义一个全局函数,在类内的最上方将其声明为友元函数,声明的时候不需要放在public或private中,如: ``` friend void goodGay(Buil 阅读全文