自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 BUFLAB

同样的,这种攻击方式存在一定难度,我们需要将机器代码放到堆栈中,并将返回指针设置为该代码的起始位置,最后要撤销对堆栈状态的任何损坏。首先,当test函数执行getbuf,getbuf获取的字符串是我们预先编写好的字符串,当getbuf执行完毕后,我们将getbuf的返回地址修改成buf的首地址,这意味着接下来程序会跳转回我们输入的buf字符中,执行我们设计好的三条指令,再通过最后的ret指令使得程序返回到我们之前pushl $0x08048d52时入栈的bang的首地址,然后执行bang函数。

2023-04-21 21:26:47 194

原创 SHLAB

其中sigprocmask函数是关键,如果不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数,这种情况是通过阻塞信号实现的,即使用sigprocmask函数。此外提一嘴job和process的区别,job是相对shell 来说的,在shell中执行一条命令,实际上就是提交了一个job,只不过有的job需要运行很长时间,有的job很快就结束。set为指向信号集的指针,在此专指新设的信号集,如果仅想读取现在的屏蔽值,可将其置为NULL。

2023-04-21 21:14:35 213

原创 DATALAB

但我们发现当n=0的时候,会存在特殊情况,此时(1<<32+((~0)+1))+(~0)等价于0,n=0我们需要与上的0xffffffff而不是0,因此我们需要引入一个变量,只在n=0的时候生效。即32位的int,高16位和低16位相或,x=(x>>16)|x,如果x不全为0,即可证明x有1,x的1全部被或到低16位,如0x11010000或完之后是0x11011101,再让低16位中的高8位,或上移位后的x低16位中的低8位,依次类推,这样做的目的是,假如x中有1,经过以上操作,其最低位必为1。

2023-04-21 21:01:00 241

原创 计算机系统期末复习

在这一步中,链接器将所有相同类型的节合并为同一类型的新的聚合节,然后链接器将运行时存储器地址赋给新的聚合节,赋给输入模块定义的每个节,以及赋给输入模块定义的每个符号。

2023-03-24 20:48:14 224

原创 BOMLAB

实验题目:BOMBLAB 实验目的:理解汇编语言,学会使用gdb调试器。程序运行在linux环境中,程序中有6个关卡(6个phase),每个phase需要用户在终端上输入特定的字符或者数字才能通关,否则会引爆炸弹(即退出程序)。需要使用gdb工具反汇编出汇编代码,结合c语言文件找到每个关卡的入口函数。然后分析汇编代码,找到在每个phase程序段中,引导程序跳转到“explode_bomb”程序段的地方,并分析其成功跳转的条件,以此为突破口寻找应该在命令行输入何种字符通关。

2023-03-24 20:46:01 126

原创 ucore lab8

通过完成本次实验,希望能达到以下目标:了解基本的文件系统系统调用的实现方法;了解一个基于索引节点组织方式的Simple FS文件系统的设计与实现;了解文件系统抽象层-VFS的设计与实现;

2023-03-24 20:34:32 305

原创 ucore lab7

一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。管程由以下四部分组成:①管程内部的共享变量;②管程内部的条件变量;③管程内部并发执行的进程;④对局部于管程内部的共享数据设置初始值的语句。即一个管程由一个锁和多个条件变量组成。由此可见,管程相当于一个隔离区,它把共享变量和对它进行操作的若干个过程围了起来,所有进程要访问临界资源时,都必须经过管程才能进入,而管程每次只允许一个进程进入管程,从而需要确保进程之间互斥。

2023-03-24 20:31:50 139

原创 ucore lab6

对于round-robin调度算法,在假设所有进程都充分使用了其拥有的CPU时间资源的情况下,所有进程得到的 CPU 时间应该是相等的。但我们希望调度器能够更智能地为每个进程分配合理的CPU资源,每个进程得到的时间资源与他们的优先级成正比关系,Stride调度是基于这种想法的一个较为典型和简单的算法(可以简单将这个算法理解为书上步长调度算法的近似版)。除了简单易于实现以外,它还有如下的特点:可控性:如我们之前所希望的,可以证明Stride Scheduling对进程的调度次数正比于其优先级。

2023-03-24 20:30:44 139

原创 操作系统导论期末复习

了解内核线程创建/执行的管理过程和内核线程的切换和基本调度过程。实验2/3完成了物理和虚拟内存管理,这给创建内核线程(内核线程是一种特殊的进程)打下了提供内存管理的基础。当一个程序加载到内存中运行时,首先通过ucore OS的内存管理子系统分配合适的空间,然后就需要考虑如何分时使用CPU来“并发”执行多个程序,让每个运行的程序(这里用线程或进程表示)“感到”它们各自拥有“自己”的CPU。本次实验将首先接触的是内核线程的管理。内核线程是一种特殊的进程,内核线程与用户进程的区别有两个:内核线程只运行在内核态,

2022-06-15 16:20:16 1114

原创 ucore lab4

了解内核线程创建/执行的管理过程和内核线程的切换和基本调度过程。实验2/3完成了物理和虚拟内存管理,这给创建内核线程(内核线程是一种特殊的进程)打下了提供内存管理的基础。当一个程序加载到内存中运行时,首先通过ucore OS的内存管理子系统分配合适的空间,然后就需要考虑如何分时使用CPU来“并发”执行多个程序,让每个运行的程序(这里用线程或进程表示)“感到”它们各自拥有“自己”的CPU。本次实验将首先接触的是内核线程的管理。内核线程是一种特殊的进程,内核线程与用户进程的区别有两个:内核线程只运行在内核态,

2022-06-10 15:32:41 469

原创 ucore lab3

了解虚拟内存的Page Fault异常处理实现和页替换算法在操作系统中的实现。本次实验是在实验二的基础上,借助于页表机制和实验一中涉及的中断异常处理机制,完成Page Fault异常处理和FIFO页替换算法的实现,结合磁盘提供的缓存空间,从而能够支持虚存管理,提供一个比实际物理内存空间“更大”的虚拟内存空间给系统使用。这个实验与实际操作系统中的实现比较起来要简单,不过需要了解实验一和实验二的具体实现。实际操作系统系统中的虚拟内存管理设计与实现是相当复杂的,涉及到与进程管理系统、文件系统等的交叉访问。如果大家

2022-06-10 15:31:58 254

原创 初步认识pytorch

2022-06-08 19:32:05 350

原创 ucore lab5

UCORE实验5实验目的了解第一个用户进程创建过程,系统调用框架的实现机制,ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理。实验内容实验4完成了内核线程,但到目前为止,所有的运行都在内核态执行。实验5将创建用户进程,让用户进程在用户态执行,且在需要ucore支持时,可通过系统调用来让ucore提供服务。为此需要构造出第一个用户进程,并通过系统调用sys_fork/sys_exec/sys_exit/sys_wait来支持运行不同的应用程

2022-05-28 21:24:32 308

原创 了解神经网络结构和优化方法

了解神经网络结构和优化方法了解基础算子conv2Dconv2D是卷积神经网络的操作函数,即二维卷积,在pytorch中查得如下:torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode=‘zeros’, device=None, dtype=None)其中前三个参数需要手动传入,其余参数均有默认值。in_cha

2022-05-27 16:19:31 1585

原创 ucore lab2

UCORE实验2实验目的理解基于段页式内存地址的转换机制理解页表的建立和使用方法理解物理内存的管理方法实验内容本次实验包含三个部分。首先了解如何发现系统中的物理内存;然后了解如何建立对物理内存的初步管理,即了解连续物理内存管理;最后了解页表相关的操作,即如何建立页表来实现虚拟内存到物理内存之间的映射,对段页式内存管理机制有一个比较全面的了解。本实验里面实现的内存管理还是非常基本的,并没有涉及到对实际机器的优化,比如针对 cache 的优化等。如果大家有余力,尝试完成扩展练习。练习0:填写已有实

2022-04-30 14:51:44 938

原创 ucore lab1

ucore lab1

2022-04-22 18:40:11 5961

原创 IEEE754浮点数标准相关

定点表示法:小数点固定,定点整数中小数点隐含固定在数据最右端,定点小数中小数点隐含固定在数据最左端。这种方法并不能有效地表示数字非常大的数,比如5*2^100,用定点表示法需要101后面跟随100个0来组成,这显然不够高效方便。浮点数表示法:类似“科学计数法”的思路,可以表示极大或者极小的数字,小数点不是固定的。IEEE 754浮点标准:32位单精度,64位双精度,128位四精度.V=(-1)S*2EM符号S:判断正负。阶码E:是浮点数的加权,类似于“科学计数法”中10右上角的指数,以此来缩小所需

2022-03-12 16:58:00 1348

原创 HNU 实验一 计量器具(电子秤)模拟通道实验报告

文件地址https://github.com/CNRalap/HNU-electronic-balance

2021-11-28 20:27:21 1668

原创 202104-2 邻域均值

题目和样例自行搜索题目分析:首先得知道什么是邻域,例如样例14 16 1 60 1 2 34 5 6 78 9 10 1112 13 14 15由于r是1,因此5的邻域是0 1 24 5 68 9 10因此计算邻域中的元素和,只需要知道邻域矩阵四角的坐标即可思路:先二维前缀和预处理再进行计算简单了解二维前缀和请移步二维前缀和详解#include <bits/stdc++.h>using namespace std;int sum[601][601];int

2021-09-09 16:35:46 544

原创 【排序】快排/归并排序/希尔排序

//qsort# include <iostream># include <algorithm>using namespace std;inline int findpivot(int *A, int i, int j){ return (i + j) / 2;}inline int Partition(int *A, int left, int right, int& pivot){

2021-05-28 21:29:51 293

原创 (邻接表/邻接矩阵)图的实现

【问题描述】 在本问题,定义了图的两种表示方法:邻接表(链表)表示法及邻接矩阵表示法。 头文件graph.h定义了图的ADT类Graph,头文件grlist.h中定义的类Graphl,实现了使用图的邻接表表示法,头文件grmat.h中定义的类Graphm,实现了图的邻接矩阵表示法,都是Graph类的子类,分别实现了Graph类中定义的所有纯虚方法。 头文件Graph_test.h中的类option定义了图的相关算法。 头文件link.h、list.h、llist.h

2021-05-07 18:44:39 3001

原创 (二叉树)基于二叉链表的二叉树实现

【问题描述】根据课程学习内容,补齐线性表的相关代码实现。11A B / / C D / / E / /C上述输入将构造一棵包含11个节点的二叉树,并将查询“C”是否存在。上述输入对应生成的二叉树如下图【输入形式】第一行:输入二叉树总节点数n,(空节点也计算在内)第二行:以空格分隔的节点数据(string类型),其中 / 表示该节点为空,其他数据为该节点保存的信息第三行:拟在二叉树中查询的值【输出形式】具体输出以提供的代码为准【样例输入】11A B / / C D / / E

2021-04-11 16:22:06 3775 4

原创 (线性表)基于链表的线性表实现

【问题描述】根据课程学习内容,补齐线性表的相关代码实现。【输入形式】若干行测试指令指令说明:1 在指定位置插入数据1 0 9 在0位置插入数字91 2 1 在2位置插入数字12 删除指定位置的数据2 0 删除0位置的数据2 2 删除2位置的数据3 获取指定位置的值3 0 获取0位置的数据4 查找特定值的位置4 2 查找2第一次出现的位置0 结束程序【输出形式】输出测试指令执行后的线性表中的数据【样例输入】1 0 91 0 81 0 70【样例输

2021-04-11 16:19:57 1052

原创 图书管理系统(链表实现文件的读写)

H大学图书馆H大学图书馆邀请你建立一个图书馆信息管理系统。请使用面向对象思想完成该问题,具体要求如下:一、设计一款文字式交互的图书管理系统;二、图书馆必须支持至少10000册书存储,如果课实现书籍可动态增长,加分三、图书信息包含:题名ISBN/ISSN作者分类号(分类规则自定,要求有三级分类,可参考中图分类法)四、图书馆系统提供两种用户模式,请为他们设计不同的用户类:1)管理员模式:系统最初提供一个默认的管理员账户以及默认密码;管理员具备以下功能:可以使用管理员账号登录支持对学校

2021-01-09 10:33:27 2308 4

原创 约瑟夫环问题(Josephus problem)循环链表解决

【问题描述】 n 个人(编号从1~n)围成一圈,从第 k 个人开始数数,数到 m 的人出圈,然后继续从未出列的下一个人开始数数,数到 m 的人出圈,重复上述过程,直到圈中仅剩下一人。【输入形式】 输入为一行三个正整数,n、k、m。【输出形式】 输出为一个正整数,表示最后剩下的人的编号。【样例输入】100 1 5【样例输出】47【答题提醒】本题为程序片段题,你需要将程序补充完整。题目为类与对象的应用,构造一个循环链表,你需要完全理解本程序的设计思想。实现思路和注释

2020-12-20 22:36:56 583

原创 矩阵(Matrix)实现数乘、矩阵加法、矩阵乘法以及行列式的计算。

【问题描述】 矩阵是线性代数中的重要概念,应用领域非常广泛,在C/C++中,通常将矩阵定义为一个二维数组。 本问题中,将输入两个矩阵 A 和 B,实现对矩阵的数乘、矩阵加法、矩阵乘法以及行列式的计算。 如果对矩阵的算法不了解,请查阅相关资料。【输入形式】 输入的第一行为两个正整数 M 和 N,分别表示矩阵 A 的行数和列数; 接下来的 M 行,每行 N 个用空格分隔的整数,表示矩阵 A 的元素值; 接下来的一行,为一个整数 x, 用于对矩阵 A 进行数乘;

2020-12-20 22:36:06 4755

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除