ICS2019大作业

计算机系统

大作业

题 目 程序人生-Hello’s P2P
专 业 计算机科学与技术
学   号 1180300313
班   级 1803003
学 生 王成龙
指 导 教 师 史先俊

计算机科学与技术学院
2019年12月
摘 要
本文是在Linux系统下,hello.c文件从.c文件最终经过预处理、编译、汇编、链接生成可执行文件的过程,然后启动程序生成进程到最后被回收。以hello的一生为例,描述计算机系统的软硬件是如何互相协调工作的。
关键词:计算机系统;编译;进程;P2P;020

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

目 录

第1章 概述 - 4 -
1.1 HELLO简介 - 4 -
1.2 环境与工具 - 4 -
1.3 中间结果 - 4 -
1.4 本章小结 - 4 -
2.1 预处理的概念与作用 - 5 -
2.2在UBUNTU下预处理的命令 - 5 -
2.3 HELLO的预处理结果解析 - 5 -
2.4 本章小结 - 6 -
介绍了HELLO.C的预处理阶段,得到了HELLO.I程序,理解了预处理器读取系统头文件中内容并把它插入程序文本中的过程。 - 6 -
第3章 编译 - 7 -
3.1 编译的概念与作用 - 7 -
3.2 在UBUNTU下编译的命令 - 7 -
3.3 HELLO的编译结果解析 - 7 -
3.4 本章小结 - 10 -
第4章 汇编 - 11 -
4.1 汇编的概念与作用 - 11 -
4.2 在UBUNTU下汇编的命令 - 11 -
4.3 可重定位目标ELF格式 - 11 -
4.4 HELLO.O的结果解析 - 13 -
4.5 本章小结 - 13 -
第5章 链接 - 14 -
5.1 链接的概念与作用 - 14 -
链接是指在程序的各模块之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。 - 14 -
5.2 在UBUNTU下链接的命令 - 14 -
5.3 可执行目标文件HELLO的格式 - 14 -
5.4 HELLO的虚拟地址空间 - 15 -
5.5 链接的重定位过程分析 - 16 -
5.6 HELLO的执行流程 - 16 -
5.7 HELLO的动态链接分析 - 16 -
5.8 本章小结 - 16 -
第6章 HELLO进程管理 - 17 -
6.1 进程的概念与作用 - 17 -
6.2 简述壳SHELL-BASH的作用与处理流程 - 17 -
6.3 HELLO的FORK进程创建过程 - 17 -
6.4 HELLO的EXECVE过程 - 17 -
6.5 HELLO的进程执行 - 18 -
在HELLO执行的某些时刻,比如SLEEP函数,内核可以决定抢占当前进程,并重新开始一个先前被抢占了的进程,这种决策就叫做调度。当内核调度了一个新的进程运行后,它就抢占HELLO进程,并且使用上下文切换机制来将控制转移到新的进程。 - 18 -
HELLO进程初始运行在用户模式中,直到HELLO进程中的SLEEP系统调用,它显式地请求让HELLO进程休眠,内核可以决定执行上下文切换,进入到内核模式。当定时器2.5后中断时,内核就能判断当前HELLO休眠运行了足够长的时间,切换回用户模式。下面通过图6-3详细说明。 - 18 -
6.6 HELLO的异常与信号处理 - 18 -
6.7本章小结 - 18 -
第7章 HELLO的存储管理 - 19 -
7.1 HELLO的存储器地址空间 - 19 -
7.2 INTEL逻辑地址到线性地址的变换-段式管理 - 19 -
7.3 HELLO的线性地址到物理地址的变换-页式管理 - 19 -
7.4 TLB与四级页表支持下的VA到PA的变换 - 19 -
7.5 三级CACHE支持下的物理内存访问 - 19 -
7.6 HELLO进程FORK时的内存映射 - 19 -
7.7 HELLO进程EXECVE时的内存映射 - 19 -
7.8 缺页故障与缺页中断处理 - 19 -
7.9动态存储分配管理 - 19 -
7.10本章小结 - 20 -
第8章 HELLO的IO管理 - 21 -
8.1 LINUX的IO设备管理方法 - 21 -
8.2 简述UNIX IO接口及其函数 - 21 -
8.3 PRINTF的实现分析 - 21 -
8.4 GETCHAR的实现分析 - 21 -
8.5本章小结 - 21 -
结论 - 22 -
附件 - 23 -
参考文献 - 24 -

第1章 概述
1.1 Hello简介
根据Hello的自白,利用计算机系统的术语,简述Hello的P2P,020的整个过程。
P2P: hello.c经过预处理(cpp)、编译(ccl)、汇编(as)、链接(ld)成为可执行目标程序hello,在启动命令后通过fork产生子进程
020: shell通过execve()加载并执行hello,进入程序入口载入物理内存,进入main函数执行代码,CPU为运行的hello分配时间片,程序结束后,shell父进程通过wait或waitpid回收hello进程,内核删除相关数据结构。
1.2 环境与工具
列出你为编写本论文,折腾Hello的整个过程中,使用的软硬件环境,以及开发与调试工具。
硬件环境:Intel i5-8400 CPU;16G RAM;NVIDIA GeForce 1060ti
软件环境:Windows 10 64位;VMware Workstation 15 Pro;Ubuntu 16.04
开发与调试工具:gcc gdb edb codeblocks
1.3 中间结果
列出你为编写本论文,生成的中间结果文件的名字,文件的作用等。
hello.c:源代码
hello.i :预处理后的文本文件
hello.s :hello.i编译后的汇编文件
hello.o :hello.s汇编后的可重定位目标文件
hello_objdump :hello的反汇编代码
hello:链接后的可执行文件
1.4 本章小结
对于hello的P2P与020做了介绍,列出了本次实验所用的环境、工具,以及生成的文件
(第1章0.5分)
第2章 预处理
2.1 预处理的概念与作用
预处理器根据以#开头的命令,修改原始的C程序。以得到另一个C程序,通常以.i作为文件拓展名
2.2在Ubuntu下预处理的命令
gc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值