HNU-计算机系统CS-学习感悟

news2024/11/24 23:03:48

本学期学的两门核心课,一个CS,一个OS。对我来说都有一定难度。

 

CS总评91/100。主要是期末考试没太发挥好,

主要原因是存储部分有个++没有考虑写的情况,送了8分。

总领

CS的学习采用最经典的书——CSAPP,也被称为计算机领域圣经,这是必看的书。

学习完这本书,对于计算机的组成以及汇编语言会有一定的了解,能大致知道计算机的系统层面是怎么工作的。

 教学采用的是第二版,我的书是第三版,这两者之间的主要不同点在于第二版是以32位系统为例讲解的,而第三版是以64位系统为例讲解的。主要在第三章汇编语言的部分会有不同,一是寄存器的表述,64位系统寄存器有rax%等,而32位系统寄存器只有eax%等。另一个主要是调用函数时存储调用参数以及返回参数,64位系统由于寄存器较多,有时可能不用在栈内储存调用参数,但32位系统寄存器较少,会更多地占用栈的空间。此外,返回的参数储存在哪里也会有影响。

总而言之,应试而言,至少第三章的汇编语言部分得看第二版,否则会做不了题目。

(封面是著名的存储器山,反应主存读写吞吐量的)

课程成绩主要由作业+实验+小班+期中(10%)+期末(40%)这5个部分组成

作业和实验不知道怎么给分的。很迷。

作业

作业我看了一眼,几乎都是100,大家应该都一样。说实在,学到大二往后,看作业基本上没什么意义了,大家都能抄到100分,平时分都能拉满,究竟学没学懂,就只有自己能知道了。

作业我觉得还是自己要做一遍,给挑出来作为作业的题目,要么是往年的期末考题,要么是书上原题,对于知识掌握和应试都有很大帮助,做完之后校对到100即可,错的自己记号。

实验 

第一个实验是研究生助教学姐验收的,可能她其实不太懂,但我讲的可能还可以,好像给了A。

第二个实验是一个临时征派的老师,可能他其实不太懂,讲运行时栈我给他讲了几遍,他好像能听懂了,给了我B++,不是很懂。

第三个实验和第四个实验都是A橙_学长给我验收的,A橙_学长可真的是太懂了,因为他去年自己做过这些实验,只能说不愧是计科top,太强了!!!学长不仅能够在短时间内判断我们有没有真的自己做这个实验,还能通过几个问题快速确定我们理解到了什么程度。厉害!

PrototypeSystemLab,DataLab,BombLab,ShellLab

这四个实验都很精彩。

【BombLab】

特别是BombLab,特别值得花很多时间研究!从一点都不懂,通过自己研究搞懂整个给定汇编代码的运行逻辑。对于自己的汇编语言基础是一个很大的提升。记得一开始几题其实很简单,但我花了好多时间去理解它的模式,一道题往往能花上一个下午,甚至一个晚上。总共六道题和隐藏题加起来应该能研究了20个小时。可能是我天资比较愚笨,但这种依靠时间堆砌的方法真的能让我看懂汇编代码。看着这些汇编代码能让我忘记打崩三,忘记原神启动。从一点不懂到有一点懂,再到有一些理解的过程,能给人带来纯真的喜悦。

HNU-计算机系统-实验3-BombLab_甘晴void的博客-CSDN博客本次实验是根据每个同学的学号来生成的,所以无法抄袭,只能借鉴思路,每个同学的问题从答案到过程都有许多不同,唯一相同的只能说是每题的考点。本次实验收到的是一个文件包,打开之后是这样的几个文件。有关这个实验的讲解我录制了一个视频上传了B站,链接如下,感觉报告没有看懂的同学可以看一下这个视频,特别是对于汇编代码有进一步的讲解,可能会更容易理解一些。https://blog.csdn.net/qq_39480177/article/details/130410714

【ShellLab】

ShellLab让我有机会能自己实现一个简单shell,这个实验主要是参考的学长代码作为主体框架,然后自己去看懂复现,应该是我自己代码能力的问题。主要就是信号的传递以及处理,包括信号处理函数,重点还在于对于jobs列表的修改要上锁,这里涉及到OS的临界区问题,这个列表同时只能一个在修改,防止出现并发问题。具体的解释在实验里有。

HNU-计算机系统-实验4-ShellLab_甘晴void的博客-CSDN博客这个实验是大家在本课程第一次体验系统级编程,涉及过程,过程控制和信号的相关知识。1.你需要干什么? 你需要构建一个简单的类Unix/Linux Shell。基于已经提供的“微Shell”框架tsh.c,完成部分函数和信号处理函数的编写工作。使用sdriver.pl可以评估你所完成的shell的相关功能。2. 准备工作 使用命令tar xvf shelab-handout.tar 解压缩文件; 使用命令 make 去编译和链接一些测试例程;~~~~~~~~~~~~~~~~~~~~~~https://blog.csdn.net/qq_39480177/article/details/130785729

【DataLab】

DataLab主要是对于二进制数的理解,我们的实验只是一小部分,还有很多题目在CSAPP官网上有。这个实验主要是在限制操作数与操作符下,只通过二进制数之间的与或非反移位等简单的限制操作,实现将这个二进制数改变成目标的效果。

HNU-计算机系统-实验2-DataLab_甘晴void的博客-CSDN博客HNU-计算机系统-实验2-DataLabhttps://blog.csdn.net/qq_39480177/article/details/129779347【原型机实验】

说实在,这个实验我觉着其实没那么有意思。但是也是对虚拟机理解的重大一吧。

HNU-计算机系统-实验1-PrototypeSystemLab_甘晴void的博客-CSDN博客了解冯诺伊曼体系结构;理解指令集结构及其作用;理解计算机的运行过程,就是指令的执行过程,并初步掌握调试方法。理解计算机的运行过程,对指令集进行修改指令4 1 R2将累加步长1存放在R2内;此后指令2 R0 R1,这步每次将R0累加至R1,其中R1存放累加结果,也就是最终结果;指令3 R2 R0是计算下一个需要累加的数并存放在R0内。https://blog.csdn.net/qq_39480177/article/details/130417583

小班

小班是达老师(哒老师)教的,很喜欢这样有互动的小班,感觉能push我们学习

各次讨论课PPT如下:

讨论课1-8z

【challenge部分】

最有趣的是讨论课7的challenge部分,要求缩小可执行文件的大小,用最小的空间能运行并输出2023。实际上这个考察的就是对于链接静态库这一章的知识点的理解,称为一个实验毫不为过,我是花了一晚上的时间熬夜到3点,利用网上有限的资料进行了一些探索,虽然方向跟老师的方向可能不太一样,但还是做出了一些结果的。这个讨论真的非常有趣。

HNU-计算机系统-Challenge_甘晴void的博客-CSDN博客但这区区四行代码,在 Ubuntu 中使用 gcc 形成的可执行文件大小可能有 7KB 之多,请尝试分析 ta 到底增加了什么内容导致可执行文件的大小产生这样的膨胀?基于前述分析,如果代码是这样的:int main(void) { return 2023; }不修改这一行 C 代码源程序,你可以直接修改二进制可执行文件,获取功能没有任何变化的更小(字节数量)可执行文件吗?分享你的方法(^-^)https://blog.csdn.net/qq_39480177/article/details/130784916

期中

没什么好说的,给了题库,刷题就完事了。最好别扣分,错两道题总评就少0.3分,很致命。

期末

【下次再写】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/775732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3 ts vite electron开发桌面程序

1、搭建vuetsvite项目 # 创建Vue项目 npm init vue # 安装依赖 npm install # 一定要安装成开发依赖 npm install electron electron-builder -D 根目录创建plugins文件夹,文件夹中创建ts文件,vite.electron.build.ts是打包文件代码,v…

LeetCode面试题02.07.链表相交

面试题02.07.链表相交 两种解题思路 面试题02.07.链表相交一、双指针二、哈希集合 一、双指针 这道题简单来说,就是求两个链表交点节点的指针 这里注意:交点不是数值相等,而是指针相等 为了方便举例,假设节点元素数值相等&…

MySQL 坐标批量计算及优化

文章目录 1、坐标计算2、优化 现在有一个需求,就是找出距离某用户最近的一些点,一种实现方法就是调用地图的api来计算筛选,另外一种就是在数据库中计算,考虑到地图api有并发量限制,所以选用数据库计算的方式。 1、坐标…

Python实现HBA混合蝙蝠智能算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法…

成功升级scikit-image的版本,从老版本0.13.0到0.17.2

成功升级scikit-image的版本,从老版本0.13.0到0.17.2 之前参考其他博客升级scikit-image的版本没有成功,这次参考scikit-image的github官网,顺利实现了升级。 scikit-image的github官网中关于安装的介绍页 https://github.com/scikit-imag…

Dubbo入门实战最全攻略(基于 Spring Boot 实现)

Dubbo应用 RPC通信 Apache Dubbo 3构建在 HTTP/2 协议之上,具有更好的穿透性与通用性 , 支持基于 IDL 的服务定义 集成了业界主流的大部分协议,使得用户可以在 Dubbo 框架范围内使用这些通信协议 , 这些协议包括 rest、hessian…

【动态规划】三步问题

🧁题目描述: 示例: 🧀(1)题目解析: 小孩每一次可以走1,2,3步,那么形成不同的排列组合,会有很多种上楼梯方式。 🧀(2)算法原理: 🥑[1]状态表示 根据题目要…

【C++杂货铺】构造函数和析构函数

文章目录 一、类的六个默认成员函数二、构造函数三、析构函数 一、类的六个默认成员函数 📖默认成员函数 用户没有显式实现,编译器会自动生成的成员函数,称为默认成员函数。 构造函数:完成对象的初始化工作。析构函数&#xff…

容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档

一、Docker docker是一种开源的应用容器引擎,可以将应用程序和依赖打包成一个可移植的镜像,然后发布到任何支持docker的平台上,也可以实现虚拟化。docker的核心概念有三个:镜像(image)、容器(co…

QT中QTimer的循环时间与槽函数执行时间以及在事件循环中触发,不同时间的结果分析

目录 当循环时间小于槽函数时间时: 当循环间隔时间大于槽函数时间时: 当存在两个定时器器,其中一个还是间隔100ms,另一个间隔1000ms: 当两个定时器的循环周期大于槽函数执行时间时 当在主程序中添加一个for循环…

怎么把视频转为gif动态图,3个方法轻松转换!

如何将视频转换为GIF动态图呢?相信许多人在日常聊天中喜欢使用各种有趣的表情包。每当互联网上出现一些有趣的热门视频时,我们也往往会看到许多相关的GIF表情包。那么我们应该如何将自己的视频或者一些有趣的视频制作成GIF动态图呢?下面我就为…

从C语言到C++_27(AVL树)概念+插入接口实现(四种旋转)

目录 1. AVL树的概念 2. AVL树结点和树的定义 3. AVL树的插入(未包含旋转) 4. AVL树的旋转 4.1 右右_左单旋 4.2 左左_右单旋 4.3 左右双旋 4.4 右左双旋 5. AVL树的验证 6. AVL树的删除(了解)和性能 7. AVL树插入验证完整代码 8. AVL树笔试…

下载pdm遇到的坑:Could not find a version that satisfies the requirement pdm

pip install pdm遇到的问题: Could not find a version that satisfies the requirement pdm (from versions: ) No matching distribution found for pdm检查了版本后发现,python版本在3.6,pdm不支持该版本 换成python3.7版本,则…

【力扣算法14】之 15. 三数之和 python

文章目录 问题描述示例1示例2示例 3提示 思路分析代码分析完整代码详细分析运行效果截图调用示例运行结果 完结 问题描述 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] num…

python编程语言之数据类型进阶操作

数值常用操作 python常用关于数值,数学常用的模块:math(数学),random(随机),numpy(科学计算),pandas(数据读写,数据分析&…

Yalmip入门教程(3)-约束条件的定义

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:https://yalmip.github.io/tutorials/ 之前的博客简单介绍了约束条件的定义方法,接下来将对其进行详细介绍。 首先简单复习一下: 1.定义约束条件可以使用矩阵拼接…

如何通过nvm管理多个nodejs版本

随着前端项目的越来越多,不同项目使用的nodejs版本可能不一样,导致在切换不同项目时需要更换不同的nodejs版本,非常麻烦。本次推荐使用nvm进行多个nodejs版本的统一管理。 1、nvm的下载 nvm全称Node Version Manager,即Node版本管…

科技政策 | 2023年广东省省级企业技术中心(第22批)认定开始啦!

原创 | 文 BFT机器人 原文链接: http://gdii.gd.gov.cn/zwgk/tzgg1011/content/post_4218083.html 各企业请注意,2023年广东省省级企业技术中心(第22批)认定已经开始了,广东省工业和信息化厅接收资料截止时间为2023年…

【Java基础教程】Java学习路线攻略导图——史诗级别的细粒度归纳,持续更新中 ~

Java学习路线攻略导图 上篇 前言1、入门介绍篇2、程序基础概念篇3、包及访问权限篇4、异常处理篇5、特别篇6、面向对象篇7、新特性篇8、常用类库篇 前言 🍺🍺 各位读者朋友大家好!得益于各位朋友的支持和关注,我的专栏《Java基础…

Python实战项目——物流行业数据分析(二)

今天我们对物流行业数据进行简单分析,数据来源:某企业销售的6种商品所对应的送货及用户反馈数据 解决问题: 1、配送服务是否存在问题 2、是否存在尚有潜力的销售区域 3、商品是否存在质量问题 分析过程: 依旧先进行数据处理 一…