关注

【HIT-ICS2025 大作业】程序人生 - Hello’s P2P

摘  要

本大作业围绕 Hello 程序从源代码到进程执行再到终止的完整生命周期展开深入探究,以 “Program to Process” 的 P2P 历程和 “Zero to Zero” 的 O2O 特性为主线,系统剖析了 Hello 程序在计算机系统中的运行机制。通过在 Ubuntu 环境下对 hello.c 进行预处理、编译、汇编、链接等操作,详细分析了各阶段的原理、命令执行过程及结果;深入研究了程序对应的进程管理、存储管理和 IO 管理等核心计算机系统功能,包括进程创建与调度、地址空间转换、内存映射、IO 设备交互及信号处理等关键技术。本作业不仅验证了计算机系统各组成部分的协同工作原理,更通过对 Hello 程序 “一生” 的追踪,加深了对计算机系统分层架构、软硬件协同设计的理解,为后续复杂系统开发与优化奠定了理论与实践基础。

关键词:Hello 程序;计算机系统;编译链接;进程管理;存储管理;IO 管理。                            

(摘要0分,缺失-1分,根据内容精彩称都酌情加分0-1分

目  录

第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简介

Hello 程序的 “一生” 是计算机系统核心机制的缩影,其 P2P 历程(From Program to Process)涵盖了从源代码到可执行程序再到进程运行的完整链路。开发者通过编辑器将代码敲入文件形成 hello.c(Program),经过预处理、编译、汇编、链接四个关键步骤,生成可执行目标文件;随后在 Shell(Bash)环境中,操作系统通过 fork 创建新进程,经 execve 加载该可执行文件,通过 mmap 完成内存映射,分配时间片使进程在 CPU、内存等硬件资源上执行;在存储管理的支持下,完成虚拟地址到物理地址的高效转换,IO 管理与信号处理则实现了程序与键盘、显示器等设备的交互;程序执行结束后,操作系统回收其占用的资源,完成 “从无到有再到无” 的 O2O 历程(From Zero to Zero)。Hello 程序虽功能简单,却完整贯穿了计算机系统的软件分层与软硬件协同逻辑,是理解计算机系统工作原理的核心载体。1.2 环境与工具。

列出你为编写本论文,折腾Hello的整个过程中,使用的软硬件环境,以及开发与调试工具。

 硬件环境

处理器:Intel Core i7-10750H(6 核 12 线程,基础频率 2.6GHz,最大睿频 5.0GHz),内存:16GB DDR4 2933MHz,存储:512GB NVMe SSD,操作系统:Windows 10 专业版(64 位)+ VMware Workstation Pro 16虚拟机配置:Ubuntu 20.04 LTS(64 位),分配 4 核 CPU、8GB 内存、100GB 磁盘空间

软件与工具

代码编辑工具:Visual Studio Code(安装 C/C++ 插件)、Ubuntu 内置 Vim,编译调试工具:GCC 9.4.0(64 位)、GDB 9.2、Objdump、Readelf、Edb-debugger

,辅助工具:Terminal(终端)、截图工具 Flameshot、文件查看工具 Cat、Less

,文档编辑工具:Microsoft Word 2021、CSDN 博客编辑器

1.3 中间结果

列出你为编写本论文,生成的中间结果文件的名字,文件的作用等。

hello.c,作用存储 Hello 程序的 C 语言源代码,是整个流程的起点

hello.i,经过预处理后的 C 语言文件,展开宏定义、包含头文件、删除注释等

hello.s ,汇编语言源代码文件,由 hello.i 编译生成,包含 CPU 可识别的汇编指令

hello.o,可重定位目标文件(ELF 格式),由 hello.s 汇编生成,包含机器语言指令但未完成链接

Hello,可执行目标文件(ELF 格式),由 hello.o 与系统库链接生成,可被操作系统加载执行

hello_asm.txt,由 objdump 生成的 hello.o 反汇编文件

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/Zlt0615/article/details/156777966

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--