zoukankan      html  css  js  c++  java
  • 总结

    前六周考试题目及答案总结

    第六周:ch06
    CH06 判断: SRAM比DRAM快。(ok)
    CH06 判断:EEPROM可以用紫外线进行擦除。(x)
    CH06 填空:根据携带信号不同,总线可分为(数据总线、地址总线、控制总线)三种。
    6.2 填空:计算磁盘容量(327.68G):4个盘片,100000个柱面,每条磁道800个扇区,每个扇区512个字节。
    CH06 填空:对磁盘扇区的访问时间包括三个部分(寻道时间、旋转时间、传送时间)。
    6.3 填空:最大旋转时间是(4ms)。
    CH06 填空:逻辑磁盘块的逻辑块号可以翻译成一个(盘面、磁道、扇区)三元组。
    CH06 填空:CPU使用(存储器映射I/O)技术向I/O设备发出命令。
    CH06 填空:局部性有两种形式(时间局部性、空间局部性)。
    CH06 判断:程序访问一个向量,步长越大空间局部性越好。(x)
    CH06 判断:程序中的循环语句具有良好的时间局部性和空间局部性。(ok)
    6.8 填空:只修改第八行,让程序具有良好的空间局部性。改为:( sum +=a[i][j][k] )
    CH06 填空:存储层次结构的中心思想是(上层作为下层的缓存)。
    CH06 填空:缓存不命时,决定哪个块是牺牲块由(替换策略)来控制。
    CH06 填空:空缓存的不命中叫(强制性不命中或冷不命中)
    CH06 填空:容量不命中的原因是(缓存太小)
    CH06 填空:高速缓存结构可以用元组(S,E,B,m)来描述。
    6.10 填空:高速缓存容量为1024,高速缓存结构为(( 32 ),4,8,32)
    6.11 填空:3/4的命中率的如何计算的((32-8)/32,或每4次有一次不命中)
    CH06 判断:存储器山中山脊代表空间局部性。(x)

    第五周:

    man -k 填空:Linux中显示文件(file )属性(status)的命令是( stat )
    cheat 填空:使用du命令对当前目录下的目录或文件按大小排序 的命令是( du -sk *| sort -rn )
    grep 填空:~/test 文件夹下有很多c源文件,查找main函数在哪个文件中的命令( grep main *.c )
    vi 填空: vi中查看函数qsort的帮助文档的快捷键为(K)
    gdb 判断: gdb中next和step都可以单步跟踪,根据自顶向下原则应该优先选用step. (X )
    ch01 填空:抽象是CS中一个重要的概念,在出来器里,(指令集结构)提供了对实际处理器的抽象。
    ch01 选择:并行的三个层次不包含(C)。A 线程级并发 B指令级并行 C进程级并发 D SIMD
    ch07 填空:gcc -f PIC xxx.c 中的PIC的意思是(位置无关的代码 or Position-Independent Code)
    2.4 填空:计算 0x503C + 100 = ( 0x50A0 ) ,结果用16进制表示
    2.6 填空:练习2.6中匹配的二进制共21位,用16进制表示是( 0x159141 )
    2.8 填空: a,b长度都是一个字节,a=1,b=6, a|b = ( 7 or [00000111] ) 
    2.11 判断: 代码中第四行 "<=" 换成“>=” 就可以解决代码问题。 ( X )
    2.13 判断: /*compute x&y, only calls to functions bis and bic*/
    int bool_and(int x, int y){
    int result = bic(x, y);
    return result;
    } (X)
    2.14 填空:a,b长度都是一个字节,a=1,b=6, a||b = ( 1 or true ) 
    2.18 填空:16位机器上,补码0x8004转化等值的十进制是( -2044 ) 
    2.19 判断:T2U4(-8) + 8 = 16 (OK)
    2.21 判断:C语言中: -2147483647-1U < -2147483647 ( ok )
    2.23 填空:fun2(0xED005380) = (0xFFFFFF80)
    2.24 填空:四位数0xC 截断为3位数,解释为无符号数的截断值是(4)
    2.25 判断:代码for中条件 i<=(int) length -1 可以消除程序bug ( ok ) 
    2.27 判断: 函数代码可以是 ruturn x+y >= y; (ok) 
    2.29 填空: [11000] + [11000] = ([110000])
    2.33 填空:对于四位数补码8,其补码的非表示为十进制为(-8)
    2.34 填空:补码 [100] * [101] = ([001100])
    2.40 填空:K=31 移位2,加/减1,表达式为((x<<5)-x)
    2.44 判断: 针对题目:(x>0)|| ((x-1)<0)的值为真 (x)
    2.45 填空:二进制小数1.101转化为十进制为(1.625)
    2.47 判断:浮点数 00111转化为十进制为1.5 (X)
    2.50 填空:二进制数10.110舍入到最接近的二分之一的十进制的值为(2.5)
    2.54 判断: f== -(-f) (ok)

    第四周:ch03

    regex 判断: 正则表达式r.t可以匹配rt. (x)
    regex 判断:正则r表达式zo*可以匹配z. (ok)
    CH03 填空:从i386开始,x86体系结构扩展到了32位,增加了(平坦)寻址模式
    CH03 填空:在64位机器上,要用gcc编译出32位机器码,需要使用(-m32) 选项
    CH03 填空:对于机器级编程来说,两种重要的抽象是(ISA,虚拟地址)
    CH03 填空:Linux中,对目标代码code.o进行反汇编的命令是(objdump -d code.o)
    CH03 填空:IA32指令中,操作数的三种类型是(立即数、寄存器、存储器) 
    3.1 填空: 针对练习3.1中的图,操作数 8(%eax,%ecx,4)的值是(0x11)
    CH03 判断: 把内存中地址为0x4050处的字复制到地址为0x405c处的指令是 movw ($0x4050) ,($0x405c) (x)
    CH03 判断: %esp的值为0x10c, pushl %eax后,%esp的值为0x108. (ok)
    3.3 判断: movb $0xF, (%eax) 是正确汇编语句. (ok)
    3.5 填空: decode1函数的功能是( 数据交换 )
    3.6 填空: 指令leal 3(%eax,%ecx,4), %edx 存储在%edx中的值为( 3+x+4y ) 
    3.9 填空: arith函数的功能是( ~((x^y)>>3) -z )
    3.14 判断: 汇编代码不会记录程序值的类型。(ok) 
    CH03 填空:C语言中的条件表达式在汇编中是结合(有条件跳转和无条件跳转)实现的。
    CH03 填空:C语言中的循环结构可以用(条件测试和跳转组合起来)实现。
    CH03 选择:栈用来(ABCD) A 传递参数 B 存储返回信息 C保存寄存器 D本地存储。
    CH03 填空:Linux汇编中,形成空调用栈帧的语句是(push %ebp movl %esp %ebp) 
    CH03 填空:Linux汇编中,函数有返回值存在( %eax )寄存器中。

    ch04: 

    find: 填空:查找当前目录下2天前被更改过的文件 (find . -mtime +2 -type f -print)    
    CH04 判断:Y86中,程序员的可见状态包括PC。(ok)
    CH04 判断:Y86中,有5个双字节指令。(x)
    4.1 Y86中 jmp 0x100 对应的机器码是(0x7000010000)
    4.2 Y86中 0xa00f 对应的汇编语句是(pushl %eax)
    CH04 判断:Y86中,状态码INS表示遇到非法指令。(ok)
    CH04 填空:创建Y86代码唯一的工具是(汇编器 or YAS)
    4.6 判断:Y86中,pushl压入栈的是减去4的%esp的值。(x)
    CH04 填空:实现一个数字系统需要三组成部分(组合逻辑、存储器元素、时钟信号)。
    CH04 填空:HCL代表(Hardware Control Language, 硬件控制语言)
    4.8 填空:xor的HCL表达式是(bool xor = (!a &&b) ||(a && !b))
    CH04 填空:HCL表达式bool Eq = (A==B)的功能是(判断字A、B是否相等) 
    CH04 填空: 

    对应的HCL描述是( )。 

    4.10 填空:写出HCL代码,求输入字A、B中的最小值( 注意是两个 ) 
    CH04 填空:Y86中,使用时钟寄存器保存程序计数器PC、条件代码CC和(程序状态Stat) 
    CH04 填空:Y86中,指令执行分为六个阶段(取指、译码、执行、访存、写回、更新PC) 
    CH04 填空:Y86中对于PC值p=100,指令包括一个寄存器指示符字节和,常数1,增加器产生值(106) 
    4.17 填空:实现HCL代码,需要查看教材第( 232 )页的图。 
    CH04 填空:p266, icode == IOPL :ifun; 的功能是(加减与异或运算的选择) 
    4.24 填空:mem_write中为什么有IRMMOVL( 寄存器往内存写 )

    第四周:
    man -k 填空: 数据结构中有线性查找算法,C标准库中没有这个功能的函数,但Linux中有,这个函数是(lfind或lsearch)
    cheat 填空:To list the content of /path/to/foo.tgz archive using tar ( tar -jtvf /path/to/foo.tgz )
    find 填空:查找当前目录下所有目录的find命令是(find . -type d)
    grep 填空:查找宏 STDIN_FILENO 的值的命令是(grep -nr XXX /usr/include)
    CH01填空:计算机系统中的所有信息都是位串表示的,所谓(信息)就是位+上下文。
    CH01填空:存储器层次结构的主要思想是上层存储器作为下层存储器的(高速缓存)。
    CH01填空:操作系统中最基本的四个抽象是(虚拟机、进程、虚拟存储器、文件)。
    CH07填空:链接器的两个主要任务是(符号解析和重定位)。
    CH07选择:教材p449中 swap.c中的bufp1 是( A ) A 全局符号 B外部符号 C本地符号 D以上都不对
    CH07 判断:C语言中,全局变量是强符号。(X)
    CH07 填空:(加载器)将可执行文件的内容映射到存储器,并运行这个程序。
    CH07 选择:Linux中,反汇编.text节中的二进制指令使用的工具是(d)A ar B strings C readelf D objdump

    针对如下代码:


    1. 在vi中,查看scanf和printf man pages(帮助文档)的命令分别是?(2分)
    K 3K
    2. 编译和运行以上代码的命令(2分) 
    gcc *.c -o main 
    ./main
    3. 使用GDB调试以上代码:编译代码的命令是?main.c中如何给main函数设置断点?如何在第六行设置断点?(3分)
    gcc -g *.c -o main 
    b main 
    b 6
    4. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?(3分)
    gcc -c add.c sub.c mul.c div.c
    ar rcvs libmymath.a add.o sub.o mul.o div.o

    gcc main.c -o main -L. -lmymath (or gcc main.c ./libmymath.a -o main)

    5. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?(4分)
    gcc -fPIC -c add.c sub.c mul.c div.c
    gcc -shared -o libmymath.so add.o sub.o mul.o div.o

    gcc -o main main.c -L. -lmymath

    libmymath.so 要拷贝到/lib or /usr/lib

    6. 写出编译上面代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.(4分)

    testmymath: main.o add.o sub.o mul.o div.o 
    gcc main.o add.o sub.o mul.o div.o -o testmymath
    main.o: main.c head.h
    gcc -c main.c
    add.o: add.c head.h
    gcc -c add.c
    sub.o: sub.c head.h
    gcc -c sub.c
    mul.o: mul.c head.h
    gcc -c mul.c
    div.o: div.c head.h
    gcc -c div.c

    第三周:

    填空:实验楼环境中所有的默认系统用户名和密码均为 (shiyanlou                )。

    填空:Linux Bash中,Ctrl+a快捷键的作用是(将光标移至输入行头,相当于Home键)。

    判断:Linux Bash中, man printf和man 1 printf 功能等价。 ok

    填空:在 Linux 里面可以使用使用(groups)命令知道自己属于哪些用户组。

    填空:在 Linux 里面可以使用使用(chmod)命令修改文件的权限。

    填空:Linux中没有C盘,D盘,其文件系统的目录是由(FHS)标准规定好的。

    判断:Linux Bash中,cd - 命令可以切换到'home'目录。 x     应该是cd ~ , cd -切换到上一个目录

    判断:Linux Bash中,强制删除test文件的命令是(rm -f test )。

    判断:Linux Bash中,cat -n 和 nl 命令功能等价。ok

    判断:Linux Bash中,source 和 . 命令功能等价。 ok

    填空:Linux Bash中,查找home目录中前天创建的文件的命令是(find ~ -ctime 2)。 区分 2 +2 -2 的意义, 三种时间参考学姐李冰清的研究

    判断:Linux Bash中,使用tar命令把home目录打包成home.tar的命令是( tar -cf home.tar  ~)

    填空:Linux Bash中,zip命令使用(-e)参数可以创建加密压缩包。

    判断:Linux Bash中,df和 du 命令功能等价。x

    填空:Linux Bash中,ls . | sort 命令的功能是( 显示当前目录内容并排序            )

    填空:Linux Bash中,使用grep查找当前目录下*.c中main函数在那个文件中的命令是(  grep main *.c )

    填空:Linux Bash中,使用wc统计hello.c共有几行代码的的命令是( wc -l hello.c                      )

    判断:col 命令的-h参数可以将Tab换成对等数量的空格建。x  , 空格换tab

    填空:Linux Bash中,把ls命令显示当前目录的结果存入ls.txt的命令输出重定向命令是(ls > ls.txt)

    填空:Linux Bash中,(tee   )命令可以同时重定向到多个文件。

    常用命令总结

    man -k:

    常用来搜索,结合管道使用。

    man手册共有8个区段,最常用的是123,含义如下:

    1.Linux2.系统调用3.c语言

    但是当单独用man语句的时候,想查看其中的单独某个区段内的解释时,用法是这样的:

    man 3 printf即查找c语言中printf的用法。

    gcc语句

    常用选项

    -c 只编译不链接,生成目标文件.o

    -S 只编译不汇编,生成汇编代码

    -E 只进行预编译,不做其他处理

    -g 在可执行程序中包含标准调试信息

    -o file 将file文件指定为输出文件

    -v 打印出编译器内部编译各过程的命令行信息和编译器的版本

    -I dir 在头文件的搜索路径列表中添加dir目录

    GDB最基本的命令有:

    gdb programm(启动GDB)

    l 查看所载入的文件b 设断点

    info b 查看断点情况

    run 开始运行程序

    bt 打印函数调用堆栈p 查看变量值

    c  从当前断点继续运行到下一个断点

    n  单步运行(不进入)

    s  单步运行(进入)

    quit 退出GDB

    四种断点:

    1.行断点b [行数或函数名] <条件表达式>

    2.函数断点b [函数名] <条件表达式>

    3.条件断点b [行数或函数名] <if表达式>

    4.临时断点tbreak [行数或函数名] <条件表达式>

    正则表达式

    正则表达式的作用 

    验证字符串是否符合指定特征

    查找和提取字符串

    替换文本

    规则

    d  0~9 中的任意一个数字

    w  任意一个字母或数字或下划线,即 A~Za~z0~9中任意一个

    s  包括空格、制表符、换页符等空白字符的其中任意一个

    .   匹配除换行符( )以外任意一个字符

    ,    代表回车和换行符

      制表符

    ^  代表符号本身

    $  代表符号本身

    .  代表小数点(.)本身

        学习体会

        经过半个学期的学习,对《深入理解计算机系统》这本书有了自己的一些认识,也对这门课程有了一定的理解。在娄老师这种自主学习的授课方式下,由一开始的不适应慢慢的学会这种学习方法,对整本书的脉络大体掌握,在书本上的知识和在虚拟机里操作相结合的过程中,对相关知识点有更深刻的见解,而且娄老师的这种授课给了我们充足的自我思考空间,而且对问题能够有自己的认识,锻炼了自己解决问题的能力和动手实践能力。慢慢的不再害怕那一本厚厚的书,而是知道该怎么去学习。另外在学习方面的不足主要是知识点没有深入,几个方面都停留在表面,没有做到举一反三深入理解,特别是家庭作业。还有就是平时的考试试题错的没有及时对正确答案进行理解。在今后的学习中我会注意这些方面,更好的去自主学习,提高自己的学习能力。

     

     

     

     

     

  • 相关阅读:
    ruby 二进制转十进制 Integer("0b101") = 5
    开始菜单和我的文档的我的图片及我的音乐变成 my pictrues 正常图标了
    ruby watir 莫名其妙的错误
    Excel SaveAS是去掉提示框
    apache && jboss安装
    ruby require include的区别
    ruby控制鼠标
    This error is raised because the column 'type' is reserved for storing the class in case of inheritance
    用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
    ASP.NET 如何动态修改 Header 属性如添加 Meta 标签 keywords description!
  • 原文地址:https://www.cnblogs.com/20135316wjq/p/4928788.html
Copyright © 2011-2022 走看看