哈工大2022春计算机系统大作业:程序人生-Hello‘s P2P

计算机系统

大作业

题     目  程序人生-Hellos P2P  

专       业        计算机类        

学     号        120L021305      

班   级        2003002          

学       生        李一凡    

指 导 教 师        史先俊       

计算机科学与技术学院

2022年5月

摘  要

本文从编写开始,完整详细地深入了解hello.c程序从预处理、编译、汇编、连接一直到可执行文件诞生的全过程,分析其背后的软硬件知识如Bash与OS对hello的进程管理、存储管理等。通过hello程序的“人生”,对整个计算机系统有了更深入的理解。

关键词:计算机系统,hello.c,编译,汇编,进程,虚拟内存;                            

目  录

第1章 概述 - 4 -

1.1 Hello简介 - 4 -

1.2 环境与工具 - 4 -

1.3 中间结果 - 4 -

1.4 本章小结 - 5 -

第2章 预处理 - 6 -

2.1 预处理的概念与作用 - 6 -

2.2在Ubuntu下预处理的命令 - 6 -

2.3 Hello的预处理结果解析 - 7 -

2.4 本章小结 - 8 -

第3章 编译 - 9 -

3.1 编译的概念与作用 - 9 -

3.2 在Ubuntu下编译的命令 - 9 -

3.3 Hello的编译结果解析 - 9 -

3.4 本章小结 - 12 -

第4章 汇编 - 13 -

4.1 汇编的概念与作用 - 13 -

4.2 在Ubuntu下汇编的命令 - 13 -

4.3 可重定位目标elf格式 - 13 -

4.4 Hello.o的结果解析 - 17 -

4.5 本章小结 - 18 -

第5章 链接 - 19 -

5.1 链接的概念与作用 - 19 -

5.2 在Ubuntu下链接的命令 - 19 -

5.3 可执行目标文件hello的格式 - 20 -

5.4 hello的虚拟地址空间 - 23 -

5.5 链接的重定位过程分析 - 24 -

5.6 hello的执行流程 - 26 -

5.7 Hello的动态链接分析 - 27 -

5.8 本章小结 - 28 -

第6章 hello进程管理 - 29 -

6.1 进程的概念与作用 - 29 -

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

6.3 Hello的fork进程创建过程 - 29 -

6.4 Hello的execve过程 - 29 -

6.5 Hello的进程执行 - 30 -

6.6 hello的异常与信号处理 - 31 -

6.7本章小结 - 36 -

第7章 hello的存储管理 - 37 -

7.1 hello的存储器地址空间 - 37 -

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

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

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

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

7.6 hello进程fork时的内存映射 - 40 -

7.7 hello进程execve时的内存映射 - 40 -

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

7.9动态存储分配管理 - 41 -

7.10本章小结 - 42 -

第8章 hello的IO管理 - 43 -

8.1 Linux的IO设备管理方法 - 43 -

8.2 简述Unix IO接口及其函数 - 43 -

8.3 printf的实现分析 - 44 -

8.4 getchar的实现分析 - 45 -

8.5本章小结 - 46 -

结论 - 47 -

附件 - 48 -

参考文献 - 49 -


第1章 概述

1.1 Hello简介

(1)P2P:From Program to Process的缩写,即从程序到进程的转换过程。该过程中hello.c文件首先经历来自cpp的预处理,实现文本替换功能产生hello.i文件。然后再经历ccl的编译,转换成汇编代码hello.s文件,此时已贴近计算机硬件。接着汇编代码经过as的翻译称为一定格式的机器码hello.o文件。最后经过ld的链接形成可执行文件hello。在shell中输入启动命令后,shell为其fork产生一个子进程,然后hello便从程序变为了进程。

(2)020:From Zero to Zero的缩写,即进程从初始到回收的过程。该过程中shell为hello进程execve、mmap,execve时hello会被分配一个虚拟内存,对应着一个物理内存,里面存放着程序运行需要的信息。CPU为运行的hello分配时间片执行逻辑控制流,I/O管理与信号处理软硬结合,然后hello程序开始运行,进行一个又一个process。最终hello程序返回,被shell回收,对应内存和虚拟内存随即释放,内核删除相关数据结构,结束。

1.2 环境与工具

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

硬件环境:X64 CPU;2GHz;2G RAM;256GHD Disk以上

软件环境:Windows10 64位以上;Vmware 11以上;Ubuntu 16.04 LTS 64位/优麒麟 64位以上;福昕高级pdf编辑器

开发工具:Visual Studio 2010 64位以上;CodeBlocks 64位;vi/vim/gedit+gcc;GDB/OBJDUMP;EDB等

1.3 中间结果

文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值