- 博客(21)
- 收藏
- 关注
原创 【操作系统】MIT 6.s081 LAB6
在本次实验中需要实现cow(copy-on-write),当创建子进程时,并不实际对父进程进行拷贝,而是将页表项改为只读,在父/子进程第一次对页面进行写操作时才进行内存的拷贝,从而节约实际使用内存空间。
2022-02-04 14:58:03
1758
1
原创 【操作系统】MIT 6.s081 LAB5
实现延迟分配用户空间堆内存,在调用`sbrk()`的时候,不立即分配内存,而是当内存页面真正被访问时才进行实际的物理内存分配。
2022-02-02 13:56:18
5155
原创 【操作系统】MIT 6.s081 LAB4
LAB 4: Traps原文地址:YSBLOG参考:[mit6.s081] 笔记 Lab4: Traps | 中断陷阱实验目的:探索如何通过trap实现系统调用。RISC-V assembly (easy)阅读call.asm函数代码,回答一下问题:1、哪些寄存器保存函数的参数?例如,在main对printf的调用中,哪个寄存器保存13?在risc-v中a0-a7寄存器保存函数参数,如果函数参数超过8个,则保存在内存中,函数调用的默认第一个参数为函数本身名字,存放在a0寄存器,所以13作为pr
2022-01-11 13:01:16
1434
6
原创 【操作系统】MIT 6.s081 LAB3
LAB 3: Page tables原文地址:YSBLOG参考:[mit6.s081] 笔记 Lab3: Page tables | 页表 | Miigon’s blog实验目的:学习页表的实现机制,简化用户态拷贝数据到内核态的方法。在xv6原本的设计中,用户进程在用户态使用各自的用户态页表,当需要进入内核态时(例如执行系统调用),则切换到内核页表(修改SATP寄存器的值),这个内核页表是全局共享的,在xv6源码中的定义在vm.c中。本次实验中,将其称之为全局内核页表。// vm.cpage
2021-12-30 19:02:55
2178
1
原创 【操作系统】MIT 6.s081 LAB1
原文地址:YSBLOGsleepsleep 延迟times时间(在xv6中 10 times 为 1s)在user/user.h中定义了sleep函数,只需将参数转为int类型直接传入即可#include "kernel/types.h"#include "user/user.h"int main(int argc, char* argv[]) { int i; if (argc < 2) { printf("sleep : tick number is not sp
2021-11-22 21:14:48
660
原创 【MySQL】【Cpp】Cpp访问MySQL数据库
原文地址:YSBLOG程序环境阿里云轻量应用服务器 1核2G阿里云关系型数据库 MySQL 8.0 1核1G初始化 MYSQL mysql; //构建一个mysql句柄对象 mysql_init(&mysql); //对句柄对象进行初始化连接MySQLAPI:mysql_real_connect();返回值: 连接成功返回连接句柄,与第一个输入参数相同 连接失败返回NULL参数: mysql:mysql结构句柄 host:主机名或者
2021-09-01 19:39:50
734
原创 KMP-字符串匹配问题
原文地址:https://www.ysblog.cc/archives/%E7%AE%97%E6%B3%95%E7%AC%94%E8%AE%B0kmp-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%97%AE%E9%A2%98算法目标解决字符串匹配问题,查找模式串p在主串s中第一次出现的位置,实现strstr()函数。例子主串 s : aabaabaaf主串长度 m模式串 p : aabaaf模式串长度 n{:
2021-07-31 23:57:33
284
转载 【C++】解决no member named ‘get_io_service’
由于boost库在1.7以后的版本移除了get_io_service。所以对代码作如下修改://保证兼容性#if BOOST_VERSION >= 107000#define GET_IO_SERVICE(s) ((boost::asio::io_context&)(s).get_executor().context())#else#define GET_IO_SERVICE(s) ((s).get_io_service())#endifboost::asio::io_
2021-03-01 21:24:26
4137
1
原创 【C++】detach和join的区别
首先看一下join的简单示例://joinTest.cc#include<iostream>#include<thread>class Obj{ public: Obj() {std::cout << "hello ";} ~Obj() {std::cout << "world\n";}};void joinWorker(){ Obj obj; std::this_thread::sleep
2021-02-18 16:35:07
848
原创 【C++】多线程中调用函数的方法
在多线程中调用函数的方法:以函数名和函数参数作为输入对象来构造线程对象:t2 t4 t6 t7通过lambda表达式调用函数,将函数作为lambda表达式的内容: t1 t3 t5#include <iostream>#include <thread>#include <string>void printAll(int a, int b, int c){ std::cout << a << " " << b &l
2021-02-14 23:14:15
3578
原创 【C++】shared_ptr中循环引用问题
shared_ptr中循环引用问题测试代码如下:代码中含有两个类,Parent和Child。Parent类成员中有一个Child类的智能指针。Child类成员中有一个Parent类的智能指针。#include <iostream>#include <memory>class Child;typedef std::shared_ptr<Child> ChildPtr;class Parent;typedef std::sha...
2021-02-08 11:46:21
573
1
原创 【820复试题】用Eratasthene筛选法求质数
Eratasthene筛选法原理是通过空间换时间,求N个数以内的质素,先申请N个空间大小的数组,通过不断对2,3,4…sqrt(N)的倍数进行删除,最后输出剩下数字。C代码如下:#include<stdio.h>#include<math.h>#define N 200int main() { //申请大小为N+1的数组空间,使数组下标与实际序号对应 //数组arr中值为1表示该数不为质数,值为0为质数 int arr[201] = {0}; for (int d
2020-08-28 20:48:15
526
原创 【Verilog】状态机(State Machine)
状态机(State Machine)状态机概念 有限状态机(Finite State Machine,简称FSM):在有限个状态之间按一定规律转换的时序电路。状态机模型 Mealy 状态机 (图片来自正点原子PPT) Moore 状态机 (图片来自正点原子PPT) Mealy状态机产生输出的组合逻辑与输入有关,而Moore状态机参数输出的组合逻辑与输入无关。状态机设计 要写出完整的三段式
2020-08-21 10:56:33
3122
原创 【Verilog】高级语句
Verilog高级语句结构语句initial 和 always initial语句在模块中只执行一次。常用于测试文件的编写,用来产生仿真测试信号(激励信号),或者用于存储器变量赋初值。 always语句一直不断重复,必须和一定的时间控制相结合。initial begin sys_clk <=1'b0; sys_rst_b <=1'b0; touch_key <=1'b1; #20 sys_rst_n <=1'b1;
2020-08-21 10:52:57
2320
原创 【Verilog】程序模块
Verilog程序框架模块的结构 Verilog基本设计单元**“模块”(block)** 模块由两部分组成,一部分描述接口,一部分描述逻辑功能 每个Verilog程序主要包括4个部分: 端口定义、IO说明、内部信号声明、功能定义module block(a,b,c,d);// 模块名(端口定义) //端口描述 intput a,b; output c,d; //功能定义 assign c = a | b; assign d = a & b;
2020-08-21 10:46:54
924
原创 【Verilog】Verilog基础语法
Verilog基础语法逻辑值 逻辑0: 表示低电平,对应电路GND 逻辑1:表示高电平,对应电路VCC 逻辑X:表示未知,输入端存在多种输入情况,可能是高电平,也可能是低电平 逻辑Z: 表示高组态,外部没有激励信号,是一个悬空状态数字进制格式 一般常用二进制(b)、八进制(o)、十进制(d)和十六进制(h) 二进制:4’b0101->4位宽的二进制数值 0101 十进制:4’d2 ->4位宽十进制数值2(表示二进制0101) 十六进制:4’ha ->表
2020-08-21 10:44:08
7737
1
原创 【QT5学习笔记】 3--自定义信号
3–自定义信号目录1–给窗口添加button2–信号槽的实现以及自定义槽函数3.1 创建子窗口时隐藏MainWidget窗口 只需要在自定义槽函数 void MainWidget::createSubWindows()中添加this->hide();void MainWidget::createSubWindows(){ this->hide(); sub_windows.show();}此时,当我们在MainWidget窗口点击create the
2020-08-17 09:25:12
878
1
原创 【QT5学习笔记】2--信号槽的实现以及自定义槽函数
2–信号槽的实现以及自定义槽函数2.1 点击button关闭当前窗口//头文件中声明button_closeQPushButton button_close;//源文件中配置button_closebutton_close.setParent(this);button_close.setText("Close this Windows");button_close.move(100,100);//将button_close的信号QPushButton::clicked与this的槽函数QW
2020-08-16 10:39:32
3444
原创 【QT5学习笔记】1--给窗口添加button
1–给窗口添加button在窗口对应构造函数中添加button对象,可声明指针和非指针类型成员button//头文件声明private: QP![在这里插入图片描述](https://img-blog.csdnimg.cn/20200816090436359.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4MDM2Mzgx,
2020-08-16 09:06:54
1965
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人