计算机系统
大作业
题 目 程序人生-Hello’s P2P
专 业 计算机类
学 号 120L020121
班 级 2003003
学 生 刘旭
指 导 教 师 史先俊
计算机科学与技术学院
2022年5月
本文通过gcc、edb、gdb、objdump研究hello程序从生成运行到结束的过程,这包括预处理、编译、汇编、链接,涉及内存、cache、I/O输出,然后结束进程,被回收。以对计算机系统相关知识有深入的理解。
关键词:计算机系统;编译;链接;进程;
目 录
6.2 简述壳Shell-bash的作用与处理流程... - 25 -
6.3 Hello的fork进程创建过程... - 25 -
7.2 Intel逻辑地址到线性地址的变换-段式管理... - 29 -
7.3 Hello的线性地址到物理地址的变换-页式管理... - 30 -
7.4 TLB与四级页表支持下的VA到PA的变换... - 30 -
7.5 三级Cache支持下的物理内存访问... - 31 -
7.6 hello进程fork时的内存映射... - 33 -
7.7 hello进程execve时的内存映射... - 33 -
第1章 概述
1.1 Hello简介
P2P: From Program to Process,从程序到进程。具体步骤包括预处理、编译、汇编、链接,才可形成可执行文件并由操作系统执行。
在Bash里,由OS新fork一个进程,调用execve,利用mmap将hello可执行文件映射到虚拟内存,然后通过页面换入换出加载至物理内存,此时hello才拥有了自己的进程。
O2O: From Zero-0 to Zero-0,即从0开始从0结束。Hello执行完毕之后,变成了僵死进程,shell会将其回收,即释放其占用的系统资源,最终形成的效果是hello通过I/O留在屏幕上的一行字。
1.2 环境与工具
X64 CPU;2GHz;2G RAM;256GHD Disk
Windows10 64位;VirtualBox/Vmware 11;Ubuntu 16.04 LTS 64位;
Visual Studio 2010 64位;CodeBlocks 64位;vi/vim/gedit+gcc
1.3 中间结果
hello.c hello源程序
hello.i 预处理后文本文件
hello.s 编译后的汇编文件
hello.o 汇编后的可重定位目标文件
hello 链接后可执行文件
1.4 本章小结
本章简单介绍了hello程序从编写到执行完毕的整个过程,并介绍了实验所需软硬件环境和开发工具,并简单给出了hello程序的中间结果。