没有合适的资源?快使用搜索试试~ 我知道了~
ics大作业论文-2021111801王文煜
需积分: 0 0 下载量 34 浏览量
2023-05-23
19:52:51
上传
评论
收藏 950KB PDF 举报
温馨提示
试读
34页
ics大作业论文-2021111801王文煜
资源推荐
资源详情
资源评论
计算机系统
大作业
题 目 程序人生-Hello’s P2P
专 业 物联网工程
学 号 2021111801
班 级 2137301
学 生 王文煜
指 导 教 师
吴锐
计算机科学与技术学院
2023 年 5 月
计算机系统基础课程报告
- 1 -
摘 要
这个报告介绍了 hello 在计算机系统中辉煌灿烂的一生,借助于虚拟机在
linux 等环境下开发工具,源文件 hello.c 经过预处理。编译、汇编及链接最终成
为了可以执行的文件 hello,然后再通过 shell 的动态链接执行 hello 进程的故事。
在 shell 执行的过程中,本报告还概括了 hello 的内存管理、进程管理、I/O 管理
等深层次理解,更深入到异常控制流、储存层次结构、动态链接、虚拟内存与物
理等层次中的内容。通过 hello 程序的一生,了解了计算机系统执行一个程序的
基本流程与原理,对我们深入理解计算机系统有很大的帮助。
关键词:预处理、编译、汇编、链接、进程管理、存储管理、IO 管理、重定位、
虚拟地址、异常、信号、linux、ubuntu。
(摘要 0 分,缺失-1 分,根据内容精彩称都酌情加分 0-1 分)
计算机系统基础课程报告
- 2 -
目 录
第 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
的预处理结果解析
................................................................................ - 6 -
2.4 本章小结........................................................................................................... - 6 -
第 3 章 编译 ................................................................................................................ - 8 -
3.1
编译的概念与作用
........................................................................................... - 8 -
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 的结果解析 .......................................................................................- 14 -
4.5
本章小结
......................................................................................................... - 14 -
第 5 章 链接 .............................................................................................................. - 15 -
5.1 链接的概念与作用......................................................................................... - 15 -
5.2 在 UBUNTU 下链接的命令 ..............................................................................- 15 -
5.3
可执行目标文件
HELLO
的格式
..................................................................... - 15 -
5.4 HELLO 的虚拟地址空间 ...................................................................................- 16 -
5.5 链接的重定位过程分析................................................................................. - 16 -
5.6 HELLO
的执行流程
...........................................................................................- 16 -
5.7 HELLO 的动态链接分析 .................................................................................. - 18 -
5.8
本章小结
......................................................................................................... - 18 -
第
6
章
HELLO
进程管理
.......................................................................................- 19 -
6.1 进程的概念与作用......................................................................................... - 19 -
计算机系统基础课程报告
- 3 -
6.2
简述壳
SHELL-BASH
的作用与处理流程
....................................................... - 19 -
6.3 HELLO 的 FORK 进程创建过程 ........................................................................- 19 -
6.4 HELLO
的
EXECVE
过程
....................................................................................- 20 -
6.5 HELLO 的进程执行 .......................................................................................... - 20 -
6.6 HELLO 的异常与信号处理 ...............................................................................- 21 -
6.7 本章小结.......................................................................................................... - 24 -
第
7
章
HELLO
的存储管理
...................................................................................- 25 -
7.1 HELLO 的存储器地址空间 ...............................................................................- 25 -
7.2 INTEL 逻辑地址到线性地址的变换-段式管理 .............................................. - 25 -
7.3 HELLO
的线性地址到物理地址的变换
-
页式管理
.........................................- 26 -
7.4 TLB 与四级页表支持下的 VA 到 PA 的变换 ............................................... - 26 -
7.5 三级 CACHE 支持下的物理内存访问 ............................................................ - 27 -
7.6 HELLO 进程 FORK 时的内存映射 .................................................................... - 27 -
7.7 HELLO
进程
EXECVE
时的内存映射
................................................................ - 27 -
7.8 缺页故障与缺页中断处理............................................................................. - 28 -
7.9
动态存储分配管理
..........................................................................................- 28 -
7.10
本章小结
........................................................................................................- 29 -
第 8 章 HELLO 的 IO 管理 .................................................................................... - 30 -
8.1 LINUX
的
IO
设备管理方法
............................................................................ - 30 -
8.2 简述 UNIX IO 接口及其函数 ..........................................................................- 30 -
8.3 PRINTF 的实现分析 .......................................................................................... - 30 -
8.4 GETCHAR 的实现分析 ...................................................................................... - 30 -
8.5
本章小结
..........................................................................................................- 30 -
结论 ............................................................................................................................ - 31 -
附件 ............................................................................................................................ - 32 -
参考文献
.................................................................................................................... - 33 -
计算机系统基础课程报告
- 4 -
第 1 章 概述
1.1 Hello 简介
P2P:也就是我们所熟知的 From Program to Process,从源文件到目标文件的转化
首先是由编译器驱动程序来完成的,用高级文件编写
hello.c
文件,然后
GCC
编译
器读取源文件 hello.c,并把它编译为一个可以执行的目标文件 hello。这个编译可
以分为四个阶段完成。通过预处理、编译、汇编、链接四个阶段将它翻译成一个
可执行目标文件。当在
shell
中输入这个可执行文件的名字时
shell
会调用
fork
函
数为 hello 程序创建一个新进程。Linux 系统中通过内置命令行解释器 shell 加载运
行 hello 程序,为 hello 程序 fork 进程,至此,hello.c 完成了 P2P 的过程。
O2O:shell 通过 execve 在 fork 产生的子进程中加载执行 hello 可执行文件,首先
删除已经存在于虚拟地址的用户部分的数据结构,并为 hello 文件创建新的区域结
构,然后映射虚拟内存,设置程序计数器,使之指向代码区域的入口点,进入程
序入口后,程序开始载入物理内存,而后进入 main 函数,CPU 为 hello 分配时间
片执行逻辑控制流。当程序运行结束后,shell 父进程负责回收 hello 进程,并且
内核会从系统中删除
hello
所有痕迹。
1.2 环境与工具
列出你为编写本论文,折腾
Hello
的整个过程中,使用的软硬件环境,以及开
发与调试工具。
硬件环境:
X64 CPU
,
2.50GHz
,
8G RAM
软件环境:
Windows 10 64
位 ,
Oracle VM Virtualbox
,
Ubuntu 20.04.4 64
位
开发工具:gcc + gedit , Codeblocks , gdb edb
1.3 中间结果
列出你为编写本论文,生成的中间结果文件的名字,文件的作用等。
hello.i ——预处理之后文本文件
hello.s
——编译之后的汇编文件
hello.o ——汇编之后的可重定位目标执行
hello ——链接之后的可执行目标文件
helloo.objdmp ——hello.o 的反汇编代码
剩余33页未读,继续阅读
资源评论
wesd14_585
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功