没有合适的资源?快使用搜索试试~ 我知道了~
ICS大作业论文1
需积分: 0 0 下载量 27 浏览量
2022-08-03
15:18:59
上传
评论
收藏 2.83MB PDF 举报
温馨提示
试读
56页
(摘要0分,缺失-1分,根据内容精彩称都酌情加分0-1分)计算机系统基础课程报告- 2 -目 录第 1 章 概述 - 4 -1.2 环境与工具 - 4 -1.3
资源详情
资源评论
资源推荐
计算机系统
大作业
题 目 程序人生-Hello’s P2P
专 业 软件工程
学 号 1183710113
班 级 1837101
学 生 许健
指 导 教 师
史先俊
计算机科学与技术学院
2019 年 12 月
计算机系统基础课程报告
- 1 -
摘 要
对于每个程序员来说,Hello World 是一个开始,本论文目的在于利用 gcc、
edb 等工具,结合 CSAPP 教材,研究 hello 程序在 Linux 系统下的整个生命周期,
从而达到融会贯通所学知识的效果。
关键词:CSAPP;HIT;大作业;hello
(摘要 0 分,缺失-1 分,根据内容精彩称都酌情加分 0-1 分)
计算机系统基础课程报告
- 2 -
目 录
第 1 章 概述 ................................................................................................................ - 4 -
1.1 HELLO 简介 ......................................................................................................... - 4 -
1.2 环境与工具 ........................................................................................................ - 4 -
1.3 中间结果 ............................................................................................................ - 4 -
1.4 本章小结 ............................................................................................................ - 4 -
第 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 本章小结 .......................................................................................................... - 16 -
第 4 章 汇编 .............................................................................................................. - 17 -
4.1 汇编的概念与作用 .......................................................................................... - 17 -
4.2 在 UBUNTU 下汇编的命令 .............................................................................. - 17 -
4.3 可重定位目标 ELF 格式 .................................................................................. - 17 -
4.4 HELLO.O 的结果解析 ....................................................................................... - 20 -
4.5 本章小结 .......................................................................................................... - 22 -
第 5 章 链接 .............................................................................................................. - 23 -
5.1 链接的概念与作用 .......................................................................................... - 23 -
5.2 在 UBUNTU 下链接的命令 .............................................................................. - 23 -
5.3 可执行目标文件 HELLO 的格式 ..................................................................... - 23 -
5.4 HELLO 的虚拟地址空间 ................................................................................... - 24 -
5.5 链接的重定位过程分析 .................................................................................. - 25 -
5.6 HELLO 的执行流程 ........................................................................................... - 26 -
5.7 HELLO 的动态链接分析 ................................................................................... - 27 -
5.8 本章小结 .......................................................................................................... - 29 -
第 6 章 HELLO 进程管理 ....................................................................................... - 30 -
6.1 进程的概念与作用 .......................................................................................... - 30 -
6.2 简述壳 SHELL-BASH 的作用与处理流程 ........................................................ - 30 -
6.3 HELLO 的 FORK 进程创建过程 ........................................................................ - 30 -
计算机系统基础课程报告
- 3 -
6.4 HELLO 的 EXECVE 过程 .................................................................................... - 31 -
6.5 HELLO 的进程执行 ........................................................................................... - 31 -
6.6 HELLO 的异常与信号处理 ............................................................................... - 32 -
6.7 本章小结 .......................................................................................................... - 36 -
第 7 章 HELLO 的存储管理 ................................................................................... - 37 -
7.1 HELLO 的存储器地址空间 ............................................................................... - 37 -
7.2 INTEL 逻辑地址到线性地址的变换-段式管理 ............................................... - 37 -
7.3 HELLO 的线性地址到物理地址的变换-页式管理 ......................................... - 39 -
7.4 TLB 与四级页表支持下的 VA 到 PA 的变换 ................................................ - 41 -
7.5 三级 CACHE 支持下的物理内存访问 ............................................................ - 43 -
7.6 HELLO 进程 FORK 时的内存映射 ..................................................................... - 44 -
7.7 HELLO 进程 EXECVE 时的内存映射 ................................................................. - 44 -
7.8 缺页故障与缺页中断处理 .............................................................................. - 45 -
7.9 动态存储分配管理 .......................................................................................... - 45 -
7.10 本章小结 ........................................................................................................ - 48 -
第 8 章 HELLO 的 IO 管理 .................................................................................... - 49 -
8.1 LINUX 的 IO 设备管理方法 ............................................................................. - 49 -
8.2 简述 UNIX IO 接口及其函数 .......................................................................... - 49 -
8.3 PRINTF 的实现分析 ........................................................................................... - 50 -
8.4 GETCHAR 的实现分析 ....................................................................................... - 51 -
8.5 本章小结 .......................................................................................................... - 52 -
结论 ............................................................................................................................ - 52 -
附件 ............................................................................................................................ - 54 -
参考文献 .................................................................................................................... - 55 -
计算机系统基础课程报告
- 4 -
第 1 章 概述
1.1 Hello 简介
P2P:程序员用键盘输入 hello.c 文件,一个 hello 的 C 语言文件诞生,然
后经过预处理器、汇编器、编译器、链接器的一系列处理,hello 可执行文件
诞生了,在 shell 中键入启动命令后,shell 为其 fork,产生子进程,于是 hello
便从 Program 变成了 Process。
020:shell 调用 execve 函数在新的子进程中加载并运行 hello,在 hello 运
行的过程中,还需要 CPU 为 hello 分配内存、时间片,使得 hello 看似独享 CPU
资源。系统的进程管理帮助 hello 切换上下文、shell 的信号处理程序使得 hello
在运行过程中可以处理各种信号,当程序员主动地按下 Ctrl+Z 或者 hello 运行
到 return 0 时,hello 所在进程将被杀死,shell 会回收它的僵死进程,内核删
除相关数据结构。
1.2 环境与工具
硬件环境:Inter(R) Core(TM) i5-7300HQ CPU;2.5GHz;8G RAM;128G SSD+1T
HDD
软件环境:Windows 10 64 位;Vmware 15;Ubuntu 19.04 64 位
开发与调试工具:gcc;edb; readelf;objdump;gedit;hexedit;
1.3 中间结果
hello.c——原文件
hello.i——预处理之后文本文件
hello.s——编译之后的汇编文件
hello.o——汇编之后的可重定位目标执行
hello——链接之后的可执行目标文件
hello.elf——hello.o 的 elf 格式,用来看 hello.o 的各节信息
hello.ob——hello.o 的反汇编文件,用来看汇编器翻译后的汇编代码
hello1.ob——hello 的反汇编文件,用来看链接器链接后的汇编代码
1.4 本章小结
本章主要简单介绍了 hello 的 P2P,020 过程,列出了本次实验信息:环境、
中间结果。
剩余55页未读,继续阅读
田仲政
- 粉丝: 15
- 资源: 332
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0