CS:APP配套实验 Data Lab】的更多相关文章

刚刚完成注册博客,想写一篇随笔,方便以后自己回顾.如果恰好也能帮助到你,是我的荣幸. 这次随笔是记载我的计算机系统(CS:APP,Computer Systems:A Programer's Perspective)课程的一次实验 为了实现这15个函数,参考了(抄袭了- -)网上很多大佬的解答,但是过程中也有了自己的一些体会. 下面分享一下自己的理解,每个函数的实现都附有相应解释,有个别自己还不是很理解就没有写解释,见谅啊. 注:实验环境 ubuntu 12.04 每次修改bits.c时,都要m…
原文地址:https://billc.io/2019/05/csapp-cachelab/ 这个实验是这学期的第四个实验.作为缓存这一章的配套实验,设计得非常精妙.难度上来讲,相比之前的修改现成文件,直接写一个程序也更高了一些.需要注意的是检查程序在编译时开启了 -Werror,需要保证没有警告才能成功编译. 从官方文档得知需要完善 csim.c 和 trans.c 文件,第一个是模拟一个高速缓存的程序并从由 valgrind 程序生成的 trace 文件中统计 hit, miss 和 evic…
原文地址:https://billc.io/2019/04/csapp-bomblab/ 写在前面 CS:APP是这学期的一门硬核课程,应该是目前接触到最底层的课程了.学校的教学也是尝试着尽量和CMU同步,课件和习题都直接照搬原版.包括现在着手的第二个实验室Bomb Lab.这个lab很有意思,没有提供全部c语言代码,需要手动根据反汇编语言推测在每一个阶段需要输入的内容,输入正确就可以进入下一个阶段. 理论上每个人获取到的lab都是不一样的,但对于自学学生而言在官网http://csapp.cs…
本文是CSAPP第二章的配套实验,通过使用有限的运算符来实现正数,负数,浮点数的位级表示.通过完成这13个函数,可以使我们更好的理解计算机中数据的编码方式. 准备工作   首先去官网Lab Assignments获得实验相关的文件(也可以加我QQ获取教学视频.PPT等内容)在每个实验文件的README中都详细介绍了如何修改程序,编译程序等.建议仔细阅读,有不明白的可以留言,看到后会及时回复.   我的编译环境:Ubuntu 16.04,gcc 5.4.0.   编译时会报如下错误.   执行以下…
CS:APP:Lab3-ATTACK 0. 环境要求 关于环境已经在lab1里配置过了.lab1的连接如下 实验的下载地址如下 说明文档如下 http://csapp.cs.cmu.edu/3e/attacklab.pdf 这是实验的分数和一些简介下面就开始我们的实验吧 1. Part I: Code Injection Attacks 1.1 Level 1 对于第一个我们不需要注入新的代码.只需要重定向我们的程序就可 1 void test() 2 { 3 int val; 4 val =…
Logging Application Block Hands-On Lab for Enterprise Library 企业库的日志应用程序块动手实验 This walkthrough should act as your guide for learning about the Enterprise Library Logging Application Block and will allow you to practice employing its capabilities in v…
通过FFmpeg打开自己笔记本摄像头(HP Wide Vision HD Camera)操作时遇到如下错误: [mjpeg @ 0000029be7cbd000] unable to decode APP fields: Invalid data found when processing input 读取视频流信息时遇到这个错误: int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options); 使用如下函数…
@ 目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集与组织.空间数据的转换与处理.空间数据的可视化表达.GIS空间分析导论.矢量数据的空间分析.栅格数据的空间分析.三维分析.地统计分析等. 2. 专栏地址 「 刘一哥与GIS的故事 」之<ArcGIS从入门到精通系列实验教程> 配套视频教程:<ArcGIS10.X从入门到精通系列实验教程>…
原文地址:https://billc.io/2019/05/csapp-cachelab/ 写在前面 这是 CSAPP 官网上的第 4 个实验 buflab,也是学校要求的第三个实验.这个实验比上一个单纯考查汇编语言使用的 Bomblab 要难许多,需要认真理解一下程序运行时对栈帧的操作.对于自学的学生,可以前往 http://csapp.cs.cmu.edu/3e/labs.html 下载,下载后能得到一个很详细的 pdf 文档,需要认真阅读才能知道作者想让我们干什么.做这个实验同样也啃了很久…
<深入理解计算机系统>第三章的bomb lab,拆弹实验:给出一个linux的可执行文件bomb,执行后文件要求分别进行6次输入,每一次输入错误都会导致炸弹爆炸,程序终止.需要通过反汇编来逆向关键代码,得出通关密钥. 相关实验材料可以在CMU的官网下载:http://csapp.cs.cmu.edu/3e/labs.html 目前的水平只能完成到1-3关,详细记录攻关过程. 1.正式开始前的分析 先执行一下bomb,随便输入一个字串123. 首先要做的是在炸弹爆炸前设置断点,看程序都做了什么事…
前天讲到要刚CSAPP,这一刚就是两天半.CSAPP果然够爽,自带完整的说明文档,评判程序,辅助程序.样例直接百万组走起,管饱! datalab讲的是整数和浮点数怎么用二进制表示的,考验的是用基本只用位运算来实现一些看似稀松平常的操作.实际体会就是看题五秒钟,脱发两小时.当然做出来的成就感也是爆棚的. 求异或 根据离散数学等值演算写出公式 //1 /* * bitXor - x^y using only ~ and & * Example: bitXor(4, 5) = 1 * Legal op…
第1节 认识wxpython 第2节 画几个形状 第3节 再做个计算器 第4节 最后实现个2048游戏 实验1-认识wxpython 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序: LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令 Firefox:浏览器 sublime/GVim:好用的编辑器 git,用于获得参考…
下的第一UBUNTU12.04下Y86模拟器的安装:(參考http://archive.cnblogs.com/a/1865627/ 作适当改动) 1.安装bison和flex词法分析工具 sudo apt-get install bison flex 2.下载sim解压.地址http://csapp.cs.cmu.edu/public/students.html Chapter 4: Processor Architecture Y86 tools and documentation Sour…
-------------------------------------------------------------------------------------------------- Author: YuManZI 2014/06/23  1.1-3.5 2014/06/24  3.6-3.8 2014/06/27  4.1 2014/06/28  4.2-4.5 -----------------------------------------------------------…
信息的表示和处理 在通用计算机中中,字节作为最为最小 的可寻址的内存单元,而不是访问内存中单独的位. 寻址和字节顺序 big endian (大端法),数据最高字节部分地址在地址处,和人的感觉逻辑相似 little endian (小端法),低字节部分在低地址处 布尔代数 1 TRUE 2 FALSE ~ NOT & AND | OR ^ EXCLUSIVE-OR(异或) 1 ^ 0 = 1 1 ^ 1 = 0 0 ^ 0 = 0 0 ^ 1 = 1 IEEE 754 浮点数 $ V = (-1…
由于我的第五个实验的partB部分一直出问题.而且修了好久没解决先不管了 这个实验建议一定要认真读完csapp全书的第八章.不然可能会毫无思路.千万不要上来直接做. 0. 环境配置和实验下载 利用docker配置Linux环境.无论你是mac还是windows都可以轻松搞定 https://www.cnblogs.com/JayL-zxl/p/14286789.html 1. 实验目的 你的任务为补全tsh.c里面的一些空缺的函数. • eval: 解析命令行 [70 lines] • buil…
存储器层次系统 笔记,应该不是一个大而全的文件,笔记应该是提纲挈领,是对思想的汇总浓缩,如果追求详实的内容反而是丢了初心. 计算机是抽象的,它的设计者努力让计算机变得简单,在设计上高度抽象,而计算机的存储系统就是这样一个对用户透明的部分,程序员布恩那个直接操作内存的控制,但是可以通过理解内存的组织结构,运行特点编写对内存友好的程序,编写具有较好时间局部性,空间局部性的程序. 存储器是多样的,从高速缓存 Cache 到主存,再到磁盘,机械硬盘,固态硬盘,他们是各有特色,一般来说,越接近 CPU 的…
总览 Problem-int bitXor bitXor - x^y using only ~ and & Example: bitXor(4, 5) = 1 Legal ops: ~ & Max ops: 14 要求只用"非"和"与"来表示"异或".首先想到"异或的非=同或": \[\begin{aligned}x\oplus y&=\overline{x}y+x\overline{y}\newlin…
3.1 程序的机器级表示 发展历史 Intel,AMD,ARM 等企业各有又是,CPU 从 8 位发展到 16 位,再到 32 位,近几年发展到 64 位,当下的 CPU 体系被称为 x86-64 体系结构,主要是 Intel 和 AMD 两家的产品. IA32 处理器体系结构是 32 位芯片. CPU 的微观视图架构 当下的计算机大多是采用冯诺伊曼体系结构,计算机由存储器,运算器,控制器,输入设备,输出设备组成. IA32 的寄存器 通用寄存器的特殊用法 EAX:扩展累加寄存器.在乘法和除法指…
queue.h: /* * Code for basic C skills diagnostic. * Developed for courses 15-213/18-213/15-513 by R. E. Bryant, 2017 */ /* * This program implements a queue supporting both FIFO and LIFO * operations. * * It uses a singly-linked list to represent the…
由于http://csapp.cs.cmu.edu/并未完全开放实验,很多附加实验做不了,一些环境也没办法搭建,更没有标准答案.做了这个实验的朋友可以和我对对答案:) 实验内容和要求可在http://csapp.cs.cmu.edu/3e/labs.html获得. Data Lab [Updated 5/4/16] bits.c /* * CS:APP Data Lab * * <李秋豪 Richard Li> * * bits.c - Source file with your soluti…
详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. getbuf()实现为: unsigned getbuf() { char buf[BUFFER_SIZE]; Gets(buf); /* 没有边界检查 */ return 1; } 其中的BUFFER_SIZE是在编译时候就确定的常量. Part I: Code Injection Attack…
bomb.c /*************************************************************************** * Dr. Evil's Insidious Bomb, Version 1.1 * Copyright 2011, Dr. Evil Incorporated. All rights reserved. * * LICENSE: * * Dr. Evil Incorporated (the PERPETRATOR) hereby…
First I'd like to let you know that my phone is Android 6.0 Marshmallow. So it works on the latest Android OS, no need to worry. As we know that the reason why we could not backup App data is “permission”. Take Naver LINE latest version 5.10.1 for ex…
本文为我的斯坦福计算机网络课的编程实验(Lab Assignments)的学习总结.课程全称:CS 144: Introduction to Computer Networking. 事情发生于我读了半本<计算机网络:自顶向下方法>后,想要找点练手的东西,碰巧在知乎上看到了这个推荐帖:CS144: 什么,你学不会TCP?那就来自己写一个吧!.这门课的作业要求实现一个简单的TCP协议,自带充足评测程序,同时又比较有挑战性,我便欣然做之. LAB0 在我开始做实验的时候官方不知为何已经删掉了spo…
主要涉及计算机中数的表示法: (1)整数: two's complement,即补码表示法 假设用N位bit表示整数w: 其中最左边一位为符号位,符号位为0,表示正数,为1表示负数. (2)浮点数: 浮点数采用类似科学计数法的方式 以float为例:编码分为三部分:首位为符号位S,然后是8位指数位exp,最后是23位有效数位frac. 即: x = S*M*2^E 例如: -1.10110 × 2^10 其中: 通常 E = exp - bais, 对于float, bais = 2^(8-1)…
本文讲的是计算机学生怎么自学专业课,说长点就是该如何借助网络上已有的高质量学习资源(主要是公开课)来系统性的来点亮自己的CS技能树.这篇文章完全就是一篇自学性质的指南,需要对编程充满热情,起码觉得编程是件乐事.兴趣是大前提,后面讲解的很多知识都是比较"硬核"的,保持热情才能啃下去. 写作背景 下面是小作文时间,不想看可以活用博客的悬浮目录功能跳到"分科目讨论"章节处: 这篇文章本来是写给 ACM 集训队里的学弟学妹们看的,一开始觉得写的并不是非常好,所以只在集训队内…
本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第三篇:用户进程与异常处理.所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 实现用户进程 进程结构 ChCore 中每个进程都对应一个 process 结构体.slot_table 是一个进程占有的内核对象数组和元信息组成的结构体.thread_list 是连接该进程所有线程的链表.如何通过 list_head 的得到对应的对象我们在 Lab 2 里已经学习过…
本文为上海交大 ipads 研究所陈海波老师等人所著的<现代操作系统:原理与实现>的课程实验(LAB)的学习笔记的第一篇. 书籍官网:现代操作系统:原理与实现,里面有实验的参考指南和代码仓库链接. 课程视频与 PPT:SE315 / 2020 / Welcome.建议做实验前至少把每个 LAB 对应的那一节视频看一下,否则可能不知道从哪下手. 我自己的通关代码:ChCore-lab - Kangyupl - gitee 仅是能通过测试集,不保证完全正确.开源的目的是供自学的朋友们误入牛角尖.挠…
Adding Search to an ASP.NET Core MVC app 给程序添加搜索功能 2017-3-7 7 分钟阅读时长 作者 本文内容 1.Adding Search by genre 根据音乐流派添加搜索 2.Adding search by genre to the Index view 在 Index 视图添加音乐流派搜索功能 By Rick Anderson In this section you add search capability to the Index a…