哈工大2018秋季计算机系统试题解析:C语言比较、x86-64调用约定
"哈尔滨工业大学2018学年秋季学期计算机系统(B)试题,包含C语言、x86-64体系结构、进程管理、浮点数编码、存储层次、符号表、动态链接库、指令系统和异常处理等相关知识点。" 在计算机科学领域,这些题目涵盖了一些基础但重要的概念: 1. **C语言中的整数与无符号数比较**:在C语言中,当一个负整数(-1)与无符号零进行比较时,由于无符号数不能表示负值,比较时会将其转换为一个非常大的正数值。因此,-1总是小于任何无符号数,答案是A.大于。 2. **x86-64调用约定**:在x86-64架构中,函数参数传递通常遵循一定的规则。在调用函数`int gt(long x, long y)`时,按照约定,第一个参数`x`通常存储在`%rdi`寄存器中,第二个参数`y`则存储在`%rsi`寄存器里,所以保存参数`y`的寄存器是B. `%rsi`。 3. **Y86硬件结构**:在Y86这种简单的指令集计算机中,程序计数器、条件码寄存器需要时序控制来更新,而数据内存通常由硬件直接控制访问,不需要额外的时序控制,所以答案是D. 数据内存。 4. **进程和并发执行**:进程P1是P11的父进程,它们拥有独立的地址空间,可以并发执行,但它们对全局变量的操作可能会因并发而导致竞态条件,即使两进程都对`x`加1,最终结果不一定为2,因为这取决于调度策略。错误选项是C,因为并发执行并不保证结果。 5. **异常处理**:异常分为不同的类型,如I/O中断、陷阱(trap)、故障和终止。其中,陷阱和故障可以恢复并返回,而终止是不可恢复的。I/O中断通常不返回到异常发生前的状态,答案是C. 故障。 6. **进程上下文**:进程上下文包括进程的页全局目录、内核栈和打开的文件表等,但不包括内核代码,因为它属于操作系统的一部分,不是进程特有的。答案是C. 内核代码。 7. **系统调用**:`fork()`创建子进程,`execve()`替换当前进程的执行映像,`setjmp()`用于实现非局部跳转,`longjmp()`用于恢复`setjmp`的跳转点。其中`fork()`和`execve()`调用后不返回到调用点,答案是B. `execve()`。 8. **浮点数编码**:在IEEE浮点数标准中,单精度浮点数的尾数部分占23位。 9. **存储层次**:存储器的速度从快到慢依次是寄存器、高速缓存、主存和磁盘,所以最慢的是C. 磁盘。 10. **符号表**:在连接过程中,非静态全局变量的初始化赋值属于强符号,因为它们在链接时必须被解析。 11. **动态链接库**:共享库(动态链接库)在程序运行时由动态链接器加载到内存的任意地址,答案是D. 运行或链接。 12. **指令系统**:条件跳转指令`JZ`(跳转如果零标志为1)依赖于处理器的ZF(Zero Flag)标志来决定是否执行跳转。 13. **异常处理**:异常处理结束后,根据异常的类型,可能会返回到发生异常的下一条指令,也可能会终止程序。错误的叙述是B,因为故障处理可能不会返回到异常发生前的位置。 这些知识点反映了计算机系统的基础知识,涵盖了程序执行、内存管理、处理器架构、并发处理等多个方面。理解这些概念对于深入学习计算机系统至关重要。
下载后可阅读完整内容,剩余7页未读,立即下载
- 粉丝: 19
- 资源: 291
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展