哈尔滨工业大学计算机体系大作业程序人生-Hello’s P2P

[复制链接]
发表于 2025-5-8 11:27:08 | 显示全部楼层 |阅读模式
摘  要

文章以C语言程序设计经典案例hello.c为研究对象,体系解析程序在计算机体系中的完备生命周期。剖析源代码通过预处理、编译、汇编、链接四阶段演化为可执行目的程序的编译体系工作机制,继而从进程视角揭示程序运行时计算机体系结构的协同运作:处理器执行指令流、存储器层次架构支撑数据存取,操作体系通过进程管理实现资源调理与状态维护。通过深度追踪hello.c从静态代码到动态进程的转化路径,构建对程序存储、加载、执行等计算机体系核心机制的完备认知框架。
在整个实验中使用泰山服务器举行。

关键词:预处理;编译;汇编;链接;进程;存储;计算机体系      

目  录


第1章 概述

1.1 Hello简介

1.2 环境与工具

1.3 中间结果

1.4 本章小结

第2章 预处理

2.1 预处理的概念与作用

2.2在Ubuntu下预处理的下令

2.3 Hello的预处理结果解析

2.4 本章小结

第3章 编译

3.1 编译的概念与作用

3.2 在Ubuntu下编译的下令

3.3 Hello的编译结果解析

3.4 本章小结

第4章 汇编

4.1 汇编的概念与作用

4.2 在Ubuntu下汇编的下令

4.3 可重定位目的elf格式

4.4 Hello.o的结果解析

4.5 本章小结

第5章 链接

5.1 链接的概念与作用

5.2 在Ubuntu下链接的下令

5.3 可执行目的文件hello的格式

5.4 hello的假造地点空间

5.5 链接的重定位过程分析

5.6 hello的执行流程

5.7 Hello的动态链接分析

5.8 本章小结

第6章 hello进程管理

6.1 进程的概念与作用

6.2 简述壳Shell-bash的作用与处理流程

6.3 Hello的fork进程创建过程

6.4 Hello的execve过程

6.5 Hello的进程执行

6.6 hello的异常与信号处理

6.7本章小结

第7章 hello的存储管理

7.1 hello的存储器地点空间

7.2 Intel逻辑地点到线性地点的变换-段式管理

7.3 Hello的线性地点到物理地点的变换-页式管理

7.4 TLB与四级页表支持下的VA到PA的变换

7.5 三级Cache支持下的物理内存访问

7.6 hello进程fork时的内存映射

7.7 hello进程execve时的内存映射

7.8 缺页故障与缺页中断处理

7.9动态存储分配管理

7.10本章小结

第8章 hello的IO管理

8.1 Linux的IO设备管理方法

8.2 简述Unix IO接口及其函数

8.3 printf的实现分析

8.4 getchar的实现分析

8.5本章小结

结论

附件

参考文献



第1章 概述

1.1 Hello简介

(1)P2P过程
代码阶段:hello.c作为文本文件(高级语言程序),通过预处理(处理#include等指令)、编译(转为汇编代码hello.s)、汇编(天生呆板码hello.o)、链接(归并库函数天生可执行文件hello),最终成为磁盘上的二进制程序。
   
进程阶段;
用户在Shell中输入./hello后,操作体系通过fork()创建子进程,execve()加载hello到内存,CPU开始执行指令:
存储管理:MMU将假造地点(VA)转为物理地点(PA),TLB和页表加速映射。
CPU调理:进程在时间片内运行(取指、译码、执行),大概因中断或时间片耗尽切换。
I/O交互:printf通过体系调用write将字符串输出到屏幕,getchar等待键盘输入。

(2)020过程
Zero→运行:
进程从“无”到被OS创建,分配资源(内存、文件描述符等),进入就绪队列。

运行→Zero:
正常终止:main返回后,OS接纳内存、关闭文件,父进程(如Shell)通过wait获取退出状态。

异常终止:用户按Ctrl-C(SIGINT)或Ctrl-Z(SIGTSTP)时,OS发送信号强制结束进程,清算资源。


1.2 环境与工具

硬件环境:x64 CPU;3.20GHz;16G RAM
软件环境:Windows 11 64位;MobaXterm
开发与调试工具:gcc,objdump,readelf

1.3 中间结果

原始代码hello.c
预处理后的代码hello.i
编译后的汇编语言代码hello.s
可重定位目的文件hello.o
可执行文件hello

1.4 本章小结

本章紧张介绍了hello.c程序P2P,020的过程。列出了本次实验所需的环境和工具以及过程中所天生的中间结果。

第2章 预处理

2.1 预处理的概念与作用

预处理的概念:是在数据正式处理或分析前举行的预备性操作,旨在提升数据质量、统一格式或提取关键信息,为后续步调提供更高效的输入。
预处理的作用:收缩计算时间、提升模型精度、增强数据可靠性,是呆板学习和数据分析中不可或缺的环节。例如,图像预处理(去噪、裁剪)可提高AI识别准确率,文本预处理(分词、去停用词)能优化自然语言处理结果。
2.2在Ubuntu下预处理的下令


图2.1预处理下令展示

2.3 Hello的预处理结果解析


图2.2hello.i文件部分展示

(1)头文件包罗展开:
#include <stdio.h> 会被替换为stdio.h头文件的内容
#include <unistd.h> 会被替换为unistd.h头文件的内容
#include <stdlib.h> 会被替换为stdlib.h头文件的内容

图2.3头文件预处理部分截图

(2)注释处理:原始代码中的注释大作业的 hello.c 程序等会被移除


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表