- 博客(66)
- 收藏
- 关注
原创 计算机系统实验拆炸弹
首先,将esp+28处的值传输到eax中,第一个数的位置,再将eax中的值存入esp+12处;将esp+24中的值传输到eax中,第二个数的位置,再将eax中的值存入esp+8处;将0x804a30f处的值存入到esp+4中;,最后比较eax和ebx中的值,相等才不触发炸弹, add指令将ebx中的值加上4,最后比较esi与ebx中的值,如果不相等则进入下一循环,否则循环五次,整个程序结束,因此可以得到这是一个以1为首项,2为公比的等比数列即1 2 4 8 16 32,解除第二关的炸弹,进入第三关。
2025-01-22 23:03:01
572
原创 计算机系统实验Datalab
现在,前8位是取反的指数域,后23位是取反的尾数域,最后一位是左移补上的0。符号位取0,其次判断阶码为全1且尾数不为0,uf 为Nan,最后符号位取反。将这个数与任何一个int进行按位与,结果就是将前24位全部置0的原数,因为0&a =0,1&L = a,其中心 = 0 or 1。2、exp≠全0的,exp++,检查exp==0xff,若exp==0xff,此时该数超范围(无穷大),frac=0。首先将二进数按位拆开,得到0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1。
2025-01-15 23:23:09
546
原创 操作系统实验 ucore lab6
请把你做的实验2/3/4/5的代码填入本实验中代码中有“LAB1”/“LAB2”/“LAB3”/“LAB4”“LAB5”的注释相应部分。注意:为了能够正确执行lab6的测试应用程序,可能需对已完成的实验1/2/3/4/5的代码进行进一步改进。完成练习0后,建议大家比较一下(可用kdiff3等文件比较软件)个人完成的lab5和练习0完成后的刚修改的lab6之间的区别,分析了解lab6采用RR调度算法后的执行过程。这里给出Stride调度算法的一些相关的资料(目前网上中文的资料比较欠缺)。
2024-12-22 20:12:24
175
原创 操作系统实验 Ucore lab5
但是,中断会根据保存的这些信息返回到用户态中,为了实现停留在内核态,我们对CS进行修改,将其指向内核态的代码段,其次,我们将CS的CPL设为0,在此处还需要根据要执行的指令修改EIP,这样最后执行IRET指令时,CPU会将堆栈信息取出并返回到EIP以及CS所指内容去执行,从而便实现了从ring3到ring0的转换。创建子进程的函数do_fork在执行中将拷贝当前进程(即父进程)的用户内存地址空间中的合法内容到新进程中(子进程),完成内存资源的复制。用户进程:用户进程会在用户态和内核态交替运行。
2024-12-22 20:09:24
899
原创 操作系统实验 ucorelab4内核线程管理
alloc_proc实质只是找到了一小块内存用以记录进程的必要信息,并没有实际分配这些资源,而练习2完成的do_fork才是真正完成了资源分配的工作,当然,do_fork也只是创建当前内核线程的一个副本,它们的执行上下文、代码、数据都一样,但是存储位置不同。【提示】在alloc_proc函数的实现中,需要初始化的proc_struct结构中的成员变量至少包括:state/pid/runs/kstack/need_resched/parent/mm/context/tf/cr3/flags/name。
2024-12-22 20:05:42
499
原创 操作系统实验ucore lab3
如果要在ucore上实现"extended clock页替换算法"请给你的设计方案,现有的swap_manager框架是否足以支持在ucore中实现此算法?如果不是,请给出你的新的扩展和基此扩展的设计方案。完成vmm.c中的do_pgfault函数,并且在实现FIFO算法的swap_fifo.c中完成map_swappable和swap_out_victim函数。设置访问权限的时候需要参考页面所在 VMA 的权限,同时需要注意映射物理页时需要操作内存控制结构所指定的页表,而不是内核的页表。
2024-12-22 20:01:25
237
原创 ucorelab2 物理内存管理
本次实验包含三个部分。首先了解如何发现系统中的物理内存;然后了解如何建立对物理内存的初步管理,即了解连续物理内存管理;最后了解页表相关的操作,即如何建立页表来实现虚拟内存到物理内存之间的映射,对段页式内存管理机制有一个比较全面的了解。本实验里面实现的内存管理还是非常基本的,并没有涉及到对实际机器的优化,比如针对 cache 的优化等。如果大家有余力,尝试完成扩展练习。理解基于段页式内存地址的转换机制。理解页表的建立和使用方法。理解物理内存的管理方法。
2024-12-12 18:05:12
221
原创 操作系统实验 ucore lab1
为此,我们需要完成一个能够切换到x86的保护模式并显示字符的bootloader,为启动操作系统ucore做准备。lab1提供了一个非常小的bootloader和ucore OS,整个bootloader执行代码小于512个字节,这样才能放到硬盘的主引导扇区中。lab1中包含一个bootloader和一个OS。而这lab1中的OS只是一个可以处理时钟中断和显示字符的幼儿园级别OS。编译运行ucore oS的过程o ucore oS的启动过程。CPU的编址与寻址:基于分段机制的内存管理。
2024-12-10 17:08:28
212
原创 计算机体系结构实验3 多cache一致性算法
做到给出指定的读写序列,可以模拟出读写过程中发生的替换、换出等操作,同时模拟出cache块的无效、共享和独占态的相互切换。熟悉cache一致性模拟器(监听法和目录法)的使用,并且理解监听法和目录法的基本思想,加深对多cache一致性的理解。学习cache一致性监听法和目录法,并且进行一致性算法的模拟实验,同时熟悉相关知识。
2024-11-05 20:46:33
161
原创 计算机体系结构实验2 CPU动态指令调度Tomasulo
给定被执行代码片段,对于具体某个时钟周期,能够写出保留站、指令状态表以及浮点寄存器状态表内容的变化情况。学习ScoreBoard和Tomasulo算法,并且进行Tomasulo算法的模拟实验,同时熟悉动态指令调度相关知识。熟悉Tomasulo模拟器同时加深对Tomasulo算法的理解,从而理解指令级并行的一种方式-动态指令调度。假设浮点功能部件的延迟时间:加减法2个周期,乘法10个周期,load/store2个周期,除法40个周期。使用模拟器进行以下指令流的执行并对模拟器截图、回答问题。
2024-11-05 20:43:56
213
原创 计算机体系结构实验1 RISC-V指令理解
发现ALU的A段的值是从pc直接传过来的,ALU的B段的值是-56的二进制(0xffffffc8),然后这两个值去ALU之前我们先是在Branch处判断(也就是从regiser出来的值跟-56进行判断,如果x15(0x00000003)大于等于x14(0x0000003)(这里取的值是从MEM阶段来的,判断时先进一步看看寄存器里的值再进行判断)的话加-56所以他是直接跳转,所以输出的ALU的值为0x00010184。对指令进行译码,并从寄存器堆中读取与寄存器源说明符相应的寄存器。如果有,请举例并分析。
2024-11-05 20:36:27
879
原创 ccf中间数
an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。第二行包含n个正整数,依次表示a1, a2, …输入的第一行包含了一个整数n,表示整数序列中数的个数。给定一个整数序列,请找出这个整数序列的中间数的值。比5小的数有2个,比5大的数也有2个。在序列中的4个数都不满足中间数的定义。在序列中的5个数都不满足中间数的定义。
2024-08-18 17:58:46
216
原创 ccf游戏
游戏开始,从1号小朋友开始顺时针报数,接下来每个小朋友的报数是上一个小朋友报的数加1。若一个小朋友报的数为k的倍数或其末位数(即数的个位)为k,则该小朋友被淘汰出局,不再参加以后的报数。当游戏中只剩下一个小朋友时,该小朋友获胜。有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,……,1号小朋友坐在n号小朋友的顺时针方向。输出一行,包含一个整数,表示获胜的小朋友编号。例如,当n=5, k=2时:;2号小朋友报数2淘汰。
2024-08-18 17:54:36
197
原创 ccf训练计划
其中第 i ii 项(1 ≤ i ≤ m 1 \le i \le m1≤i≤m)科目编号为 i ii,也可简称为科目 i ii。输入的第二行包含空格分隔的 m mm 个整数,其中第 i ii 个(1 ≤ i ≤ m 1 \le i \le m1≤i≤m)整数 p i p_ip。输入的第三行包含空格分隔的 m mm 个正整数,其中第 i ii 个(1 ≤ i ≤ m 1 \le i \le m1≤i≤m)数 t i t_it。输出的第一行包含空格分隔的 m mm 个正整数,依次表示每项科目的最早开始时间。
2024-08-18 17:47:50
348
原创 ccf学生排队
1)第一次调整,命令为“3号同学向后移动2”,表示3号同学出队,向后移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 5, 3, 6, 7, 8;3)第三次调整,命令为“3号同学向前移动2”,表示3号同学出队,向前移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 3, 5, 8, 6, 7。接下来m行,每行两个整数p, q,如果q为正,表示学号为p的同学向后移动q,如果q为负,表示学号为p的同学向前移动-q。第二行包含一个整数m,表示调整的次数。
2024-08-18 17:26:53
366
原创 ccf学生排队
1)第一次调整,命令为“3号同学向后移动2”,表示3号同学出队,向后移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 5, 3, 6, 7, 8;3)第三次调整,命令为“3号同学向前移动2”,表示3号同学出队,向前移动2名同学的距离,再插入到队列中,新队列中学生的学号依次为1, 2, 4, 3, 5, 8, 6, 7。接下来m行,每行两个整数p, q,如果q为正,表示学号为p的同学向后移动q,如果q为负,表示学号为p的同学向前移动-q。第二行包含一个整数m,表示调整的次数。
2024-08-07 15:40:55
295
原创 ccf序列查询
若存在区间 [𝑖,𝑗) 满足 𝑓(𝑖)=𝑓(𝑖+1)=⋯=𝑓(𝑗−1),使用乘法运算 𝑓(𝑖)×(𝑗−𝑖) 代替将 𝑓(𝑖) 到 𝑓(𝑗−1) 逐个相加,或可大幅提高算法效率。𝐴=[𝐴0,𝐴1,𝐴2,⋯,𝐴𝑛] 是一个由 𝑛+1 个 [0,𝑁) 范围内整数组成的序列,满足 0=𝐴0<𝐴1<𝐴2<⋯<𝐴𝑛<𝑁。基于序列 𝐴,对于 [0,𝑁) 范围内任意的整数 𝑥,查询 𝑓(𝑥) 定义为:序列 𝐴 中小于等于 𝑥 的整数里最大的数的下标。如上表所示,𝑠𝑢𝑚(𝐴)=𝑓(0)+𝑓(1)+⋯+𝑓(9)=15。
2024-08-07 15:38:00
297
原创 ccf小中大
第二行中存在 n 个有序的整数,表示测量数据,可能为升序或降序排列,可能存在连续多个整数相等,整数与整数之间使用空格隔开。老师给了你 n 个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重复的数据。对于整数请直接输出整数,对于可能出现的分数,请输出四舍五入保留 1 位小数的结果。4 为最大值,(−1+3)÷2=1 为中位数,−2 为最小值。3,4,5,6 ≤1e3 ≤1e7 否。1,2 ≤1e3 ≤1e7 是。4 为最大值,2 为中位数,−1 为最小值。
2024-08-07 15:35:54
245
原创 ccf小明上学
京州市的红绿灯是这样工作的:每盏红绿灯有红、黄、绿三盏灯和一个能够显示倒计时的显示牌。假设红绿灯被设定为红灯 r 秒,黄灯 y 秒,绿灯 g 秒,那么从 0 时刻起,[0,r) 秒内亮红灯,车辆不许通过;[r, r+g) 秒内亮绿灯,车辆允许通过;一次上学的路上,小明记录下了经过每段路的时间,和各个红绿灯在小明到达路口时的颜色和倒计时秒数。输入的第二行包含一个正整数 n(n ≤ 100),表示小明总共经过的道路段数和看到的红绿灯数目。输入的第一行包含空格分隔的三个正整数 r、y、g,表示红绿灯的设置。
2024-08-07 15:34:11
204
原创 ccf消除类游戏
列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。,用空格分隔,分别表示棋盘的行数和列数。
2024-08-07 15:29:44
344
原创 ccf小明种苹果
aij(1 <= j <= M)为零或负整数,表示第j轮疏果操作时从第i棵树上去掉的苹果个数。第1棵苹果树的疏果个数为8+6+4 = 18, 第2棵为5+10+8 = 23,第3棵为6+15+0 = 21,因此最后一轮疏果操作后全部苹果树上的苹果个数总和为(73 -18)+ (76 - 23)+ (80 - 21)= 167,疏果个数最多的是第2棵树,其疏果个数为23。输入的数据保证是正确的,也就是说,每棵树在全部疏果操作结束后剩下的苹果个数是非负的。两棵树的疏果个数均为4,应输出编号最小的第1棵数。
2024-08-07 15:27:14
198
原创 ccf小明放学
k=1、2、3 时,分别表示出发时刻,此处的红绿灯状态是红灯、黄灯、绿灯,且倒计时显示牌上显示的数字是 t,此处 t 分别不会超过 r、y、g。小明的学校也安装了“智慧光明”终端,小明想利用这个终端给出的信息,估算自己放学回到家的时间。一次放学的时候,小明已经规划好了自己回家的路线,并且能够预测经过各个路段的时间。同时,小明通过学校里安装的“智慧光明”终端,看到了出发时刻路上经过的所有红绿灯的指示状态。这三个数均不超过 106。输入的第二行包含一个正整数 n,表示小明总共经过的道路段数和路过的红绿灯数目。
2024-08-07 15:25:20
242
原创 ccf相邻数对
值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。1<=n<=1000,给定的整数为不超过10000的非负整数。输入的第一行包含一个整数n,表示给定整数的个数。输出一个整数,表示值正好相差1的数对的个数。第二行包含所给定的n个整数。
2024-08-07 15:20:33
228
原创 ccf相反数
问题描述 有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。输入格式 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。输出格式 只输出一个整数,即这 N 个数中包含多少对相反数。样例输入51 2 3 -1 -2样例输出2代码:#include<iostream>#include<c
2024-08-07 15:19:13
153
原创 ccf图像旋转
计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。1 ≤ n, m ≤ 1,000,矩阵中的数都是不超过1000的非负整数。输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。接下来n行每行包含m个整数,表示输入的图像。
2024-07-24 17:18:51
185
原创 ccf跳一跳
输入包含多个数字,用空格分隔,每个数字都是1,2,0之一,1表示此次跳跃跳到了方块上但是没有跳到中心,2表示跳到了中心,0表示没有跳到方块上(游戏结束)游戏规则:玩家每次从当前方块跳到下一个方块,如果没有调到下一个方块上则游戏结束。如果跳到了方块上,但没有调到方块中心则获得1分;若上一次得分为1分或这是本局的第一次跳跃则此次得分为2分,否则此次的得分比上一次得分多两分(即连续跳到方块的中心时,总得分将+2,+4,+6…输入不超过30个数字,且以0结尾。输出一个整数,为本剧游戏的得分。
2024-07-24 17:17:40
236
原创 ccf田地丈量
每块田地可视为平面直角坐标系下的一块矩形区域,由左下角坐标 (x1,y1) 和右上角坐标 (x2,y2) 唯一确定,且满足 x1<x2、y1<y2。最近,顿顿想要在南山脚下开垦出一块面积为 a×b 矩形田地,其左下角坐标为 (0,0)、右上角坐标为 (a,b)。输入的第一行包含空格分隔的三个正整数 n、a 和 b,分别表示西西艾弗岛上田地块数和顿顿选定区域的右上角坐标。接下来 n 行,每行包含空格分隔的四个整数 x1、y1、x2 和 y2,表示一块田地的位置。输出一个整数,表示顿顿选定区域内的田地面积。
2024-07-24 17:16:27
171
原创 ccf数字排序
题目比较简单,先用 unordered_map 将遇到的数字及其出现次数储存起来,然后将 unordered_map 中所有元素搬迁到 vector 中,对 vector 按要求排序输出即可。输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。第二行包含 n 个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。给定 n 个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。
2024-07-24 17:00:34
572
原创 ccf数列分段
8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?输入的第一行包含一个整数n,表示数列中整数的个数。输出一个整数,表示给定的数列有多个段。
2024-07-24 16:59:15
211
原创 ccf日期计算
输入的第一行包含一个整数 y,表示年份,年份在1900到2015之间(包含1900和2015)。给定一个年份 _y_和一个整数 d,问这一年的第 _d_天是几月几日?输入的第2行包含一个整数 d, _d_在1至365之间。注意闰年的2月有29天。1) 年份是4的整数倍,而且不是100的整数倍;输出两行,每行一个整数,分别表示答案的月份和日期。2) 年份是400的整数倍。
2024-07-24 16:53:27
199
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅