《计算机系统》加分项目

《计算机系统》加分项目

过去,凡是计算机专业人员都对计算机的工做原理和工做方式了如指掌。计算机体系中的硬件、软件、编译器以及操做系统之间的交互既简单又透明,所以要把握计算机系统大局观并不是难事。然而随着现代计算机技术的日趋复杂,这种明晰性不复存在:计算机科学领域里面大多数基本思想和技术都被隐藏在众多抽象接口以及私有实现的层面之下。这种复杂性致使了没法避免,的结果,即领域专业化;这使得多门计算机科学领域应运而生, 每一个领域只涵盖整个学科中的某一个方面。web

计算机专业、信息安全专业、网络空间安全专业的学生识木而不知林,疲于埋头学习程序设计、各类理论以及工程知识,却失去了对计算机系统总体的把握和理解,不曾停下来欣赏计算机系统大局观的美景。这个大局观为咱们展现的是:硬件系统和软件系统如何经由隐藏的抽象、接口以及基于各类约定的实现所编织起来的网,从而牢牢地关联在一块儿。因为没有从表及里地透彻领略这个繁复大局观的魅力,使不少学生和计算机、信息安全从业人员产生了不安的感受,由于他们并无彻底透彻理解和掌握计算机的内 部工做原理。shell

理解计算机工做原理的最好方法就是亲自动手,或者从零开始构建计算机系统,或者基于各类计算机系统深刻了解底层,这些知识并不难,只是太底层,致使很多学生很畏难。浏览器

我读书的时候,计算机硬件集成度比较低,声卡、显卡、网卡等都是分离的,那时候的学生多有拆卸机器的经验,装卸内存条、硬盘也常常操做,组装计算机的过程就对计算机硬件有比较好的了解,如今的主板集成度已经很高了,不少计算机专业、信息安全专业、网络空间安全专业的学生甚至都没有打开过计算机,看看内部都有什么。我读书的时候,操做系统主要仍是DOS系统,你想玩个游戏,不会写批处理文件,不会配置内存都玩很差,那时候操做系统更新也比较快,系统稳定性也很差,漏洞不少,常常须要安装系统,如今的学生作这些工做也不多了。缓存

固然,如今有各类单片机,DSP,嵌入式系统开发板,FPGA开发板等,组装一个计算机系统并非太难,特别是如今有树莓派、Arduino开发板,但是一旦涉及到硬件都要花钱买硬件。安全

如何不花钱学习计算机系统,我推荐几个软计算机系统供你们参考,这些虚拟机的深刻研究能帮助你们深刻理解计算机系统,相关学习做为学有余力的学生的加分项目。服务器

  • 《CSAPP:深刻理解计算机系统》第二版第4章提供一个Y86模拟器,相似intel的IA32,第三版第4章提供一个Y64-64模拟器,相似intel的x86-64,
  • 《计算机系统要素》中提供了一个计算机Hack,这台计算机是从NAND门开始一步一步搭建起来的,涉及到硬件构建、机器语言、汇编语言、高级语言、操做系统、编译原理
  • 《计算机系统》第4版提供了一个虚拟机Pep/8,第5版提供了一个虚拟机Pep/9.

《CSAPP:深刻理解计算机系统》

实验详细细节参考Lab Assignments.每一个实验都要提交相关总结博客连接,代码托管连接,并进行答辩微信

数据实验

  • 这个实验要求学生实现简单的逻辑和算术运算函数,可是只能使用一个
    很是有限的C语言子集。好比,只能用位级操做来计算一个数字的绝对值。这个实验可帮助学生了解C语言数据类型的位级表示,以及数据操做的位级行为。

二进制炸弹实验

  • 二进制炸弹是一个做为目标代码文件提供给学生的程序。运行时,它提示用户输入6个不一样的字符串。若是其中的任何一个不正确,炸弹就会“爆炸”,打印出一条错误消息,而且在一个打分服务器上记录事件日志。学生必须过对程序反汇编和逆向工程来测定应该是哪6个串,从而解除各自炸弹的雷管,该实验能教会学生理解汇编语言,而且强制他们学习怎样使用调试器。

缓冲区溢出实验

  • 它要求学生经过利用一个缓冲区溢出漏洞,来修改一个二进制可执行文件的运行时行为。这个实验可教会学生栈的原理,并让他们了解写那种易于遭受缓冲区溢出攻击的代码的危险性。

体系结构实验

  • CSAPP第4章的几个家庭做业可以组合成一个实验做业,在实验中,学生修改处理器的HCL描述,增长新的指令,修改分支预测策略,或者增长、删除旁路路径和寄存器端口。修改后的处理器可以被模拟,并经过运行自动化测试检测出大多数可能的错误。这个实验使学生可以体验处理器设计中今人激动的部分,而不须要掌握逻辑设计和硬件描述语言的完整知识。

性能实验

  • 学生必须优化应用程序的核心函数(好比卷积积分或矩阵转置)的性能,这个实验可很是清晰地代表高速级存的特性,并带给学生低级程序优化的经验·

cache实验

  • 这个实验相似于性能实验,学生编写一个通用高速缓存模拟器,并优化小型矩阵转置核心函数,以最小化对模拟的高速缓存的不命中次数。咱们使用valgrind为矩阵转置核心函数生成真实的地址访问记录

shell实验

  • 学生实现他们本身的带有做业控制的 Unix shell程序,包括Ctrl+C和Ctrl+Z按键,fg、bg和job命令。这是学生第一次接触并发,而且让他们对Unix的进程控制、信号和信号处理有清晰的了解。

malloc实验

  • 学生实现他们本身的ma11o、free和rea1loc(可选)版本。这个实验可以让学生们清晰地理解数据的布局和组织,而且要求他们评估时间和空间效率的各类权衡及折中

代理实验

  • 实现一个位于浏览器和万维网其余部分之间的并行Web代理。这个实验向学生们揭示了Web客户端和服务器这样的主题,而且把课程中的许多概念联系起来,好比字节排序、文件1O、进程控制、信号、信号处理、内存映射、套接字和并发。学生很高兴可以看到他们的程序在真实的Web浏览器和Web服务器之间起到的做用。

欢迎关注“rocedu”微信公众号(手机上长按二维码)网络

作中教,作中学,实践中共同进步!并发

rocedu



若是你以为本文对你有帮助,请点一下左下角的“好文要顶”和“收藏该文

相关文章
相关标签/搜索