摘要:
本文为本人完成15445 2020fall(B+树版本)时的一些记录,仅作为备忘录使用。 TASK #1 - LRU REPLACEMENT POLICY 本任务为实现一个LRU页面置换策略,建立一个关于面向磁盘的数据库的基本的概念是很重要的,如下图: 从中可以看出,实际数据是持久化存储于磁盘之上的 阅读全文
摘要:
0 概述 MapReduce是一种广泛运用的分布式-大数据计算编程模型,最初由Google发表,其开源实现为Hadoop。 MapReduce 的编程模型非常简单,正如名字一样,用户仅仅需要实现一个 Map 函数,一个 Reduce 函数。 Map 函数,即映射函数:它会接受一个 key-value 阅读全文
摘要:
sleep 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 th 阅读全文
摘要:
窗口1作为xv6的运行窗口。 make CPUS=1 qemu-gdb 窗口2作为gdb调试窗口。 gdb-multiarch kernel/kernel # 进入gdb后执行 set confirm off set architecture riscv:rv64 set riscv use-com 阅读全文
摘要:
0. 概述 共享内存允许两个或多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存段会成为一个进程用户空间内存的一部分,因此这种IPC 机制无需内核介入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其他所有共享同一个段的进程可用。 为使用一个共享内存段通常需要执 阅读全文
摘要:
0. 概述 linux0.11对内存的管理是段页式的,所以其地址映射过程是将逻辑地址先通过分段机制变换得到线性地址,然后再通过分页机制变换为实际的物理地址。 1. 分段 linux除了启动时运行在实模式下,其他时间运行在保护模式下。 保护模式下寻址和实模式有所不同: 实模式即DS:SI的形式去寻址。 阅读全文
摘要:
所需数据结构(定义在头文件中,用户也需要知道): #define SEM_FAILED (void*) 0 #define SEM_NAME_MAX_LEN 16 #define SEM_QUEUE_LEN 16 struct semaphore_queue { int front; int rea 阅读全文
摘要:
1. 概述 信号量分为有名信号量(named semaphore),无名信号量(unnamed semaphore)。 (这里说的信号量主要是指semaphore.h中的信号量) 有名信号量由sem_open打开,无名信号量由sem_init打开. 有名信号量通过sem_unlink删除, 无名信号 阅读全文
摘要:
1. 概述 信号量一个计数器,用于多进程对共享数据对象的存取。 P操作: 为了获得共享资源,进程需要执行下列操作: 测试控制该资源的信号量。 若此信号量的值为正,则进程可以使用该资源。进程将信号量值减1,表示它使用了一个资源单位。 若此信号量的值为0,则进程进入睡眠状态,直至信号量值大于0。若进程被 阅读全文
摘要:
查看本机的网关(重要,涉及到连接互联网问题) route -n 查看本机IP信息 ifconfig 修改配置文件 sudo vim /etc/netplan/01-network-manager-all.yaml 按照上文查询到的信息进行修改: # Let NetworkManager manage 阅读全文
摘要:
Ubuntu18.04 ssh免密码登陆: 客户端(发起ssh端)配置好ssh公私钥。 # 连按三个回车即可,生成的key在~/.ssh下 ssh-keygen -t rsa -C "your mail" 服务器端(ssh服务器端)启动ssh。 # 未安装ssh server则先安装之 sudo a 阅读全文
摘要:
Cent OS7使用yum安装软件出现 No package xxx available. [chenxinlong@localhost Documents]$ sudo yum install tldr [sudo] password for chenxinlong: Loaded plugins 阅读全文
摘要:
在git push时遇到如下问题: kex_exchange_identification: read: Connection reset by peer fatal: Could not read from remote repository. Please make sure you have 阅读全文
摘要:
set -e: 表示此命令后,当某命令返回值非0时,将出错。如果是非交互环境,将直接退出,不再执行后续命令 set +e: set -e的反向操作,恢复bash shell的默认行为,命令失败后继续执行后续命令 set -u: (set -o nounset), 表示此命令之后,当某命令使用了未定义 阅读全文
摘要:
0 引言 进程是操作系统分配资源的最小单位;线程是程序执行的最小单位。计算机上运行着几十上百个程序,对于每个程序而言,他们都是独享CPU的,操作系统制造了这一有多个CPU的假象。这一假象得以维持的基础就在于进程之间的切换,而进程切换则需要用到进程调度,具体的进程调度内容可以看之前的博文:操作系统-进 阅读全文
摘要:
实验内容 进程从创建(Linux下调用fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以后会切换到运行态;在运行的过程中如果启动了一个文件读写操作,操作系统会将该进程切换到阻塞态(等待态)从而让出C 阅读全文
摘要:
第二章 构造/析构/赋值运算 (Constructors,Destructors,and Assignment Operators) 条款5:了解 C++ 默默编写并调用哪些函数 请记住: 编译器可以暗自为 class 创建 default 构造函数、copy 构造函数、copy 赋值运算符和析构函 阅读全文
摘要:
第一章 让自己习惯 C++(Accustoming Youself to C++) 条款1:视C++为一个语言联邦 C++是个多重范型编程语言,同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式。 视C++为一个语言联邦,包括以下四个部分: C:面向过程的部分 Object-Orient 阅读全文
摘要:
c++规定默认参数必须从函数参数的右边向左边使用,如下: 正确: void fun1(int a, int b=10); void fun2(int a, int b=10, int c=20); 错误: void fun3(int a=5, int b, int c); void fun4(int 阅读全文
摘要:
实现目标 有一MainWindow(主窗口)、有一Dialog(新建的窗口),之间互相传递一个QList对象。 实现方案 主窗口给新建的窗口传递参数 主窗口会持有一个新建窗口的指针,如下: Waypoints_Dialog *waypoints_dlg = new Waypoints_Dialog; 阅读全文