HITICS-程序人生-Hello's P2P

本文详细分析了hello程序从预处理、编译、汇编、链接到执行的全过程,探讨了进程管理、存储管理和IO管理。通过对hello程序的分解,揭示了操作系统中程序执行的细节,包括shell如何通过fork和execve创建并执行进程,以及存储器地址空间的变换和异常处理。此外,还讨论了printf和getchar的实现原理。
摘要由CSDN通过智能技术生成

摘  要

本论文的目的是,通过hello程序了解计算机系统概念的实现。其内容为分析预处理、编译、汇编和链接等的概念和结果。了解进程相关的概念以及进程是如何管理的。类似的分析了解存储管理和IO管理方面。本文的研究的方法是,首先引入它们概念的定义,其次自己虚拟系统上实验测试,然后分析其结果,如果需要,引用图标和运行结果的截图。所以深入理解计算机系统概念部分对一个实际程序中的运用。虽然hello是一个简单些的代码组成的程序,但是通过它的分析,提示很多的系统的思想。它的思想就将一切软硬件设备组织到好处,程序运行的背后是代码的流动,充满的思想。

 

关键词:程序;存储;进程;编译;计算机系统;                           

 

 

 

 

 

 

 

 

 

 

目  录

 

第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 本章小结.................................................................................... - 7 -

第3章 编译........................................................................................ - 8 -

3.1 编译的概念与作用.................................................................... - 8 -

3.2 在Ubuntu下编译的命令......................................................... - 8 -

3.3 Hello的编译结果解析............................................................. - 8 -

3.4 本章小结.................................................................................. - 12 -

第4章 汇编...................................................................................... - 13 -

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

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

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

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

4.5 本章小结.................................................................................. - 16 -

第5章 链接...................................................................................... - 17 -

5.1 链接的概念与作用.................................................................. - 17 -

5.2 在Ubuntu下链接的命令....................................................... - 17 -

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

5.4 hello的虚拟地址空间............................................................ - 18 -

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

5.6 hello的执行流程.................................................................... - 20 -

5.7 Hello的动态链接分析........................................................... - 20 -

5.8 本章小结.................................................................................. - 20 -

第6章 hello进程管理............................................................... - 21 -

6.1 进程的概念与作用.................................................................. - 21 -

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

6.3 Hello的fork进程创建过程................................................. - 21 -

6.4 Hello的execve过程............................................................. - 21 -

6.5 Hello的进程执行................................................................... - 22 -

6.6 hello的异常与信号处理........................................................ - 22 -

6.7本章小结................................................................................... - 24 -

第7章 hello的存储管理........................................................... - 26 -

7.1 hello的存储器地址空间........................................................ - 26 -

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

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

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

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

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

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

7.8 缺页故障与缺页中断处理...................................................... - 30 -

7.9动态存储分配管理................................................................... - 30 -

7.10本章小结................................................................................. - 31 -

第8章 hello的IO管理............................................................ - 32 -

8.1 Linux的IO设备管理方法...................................................... - 32 -

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

8.3 printf的实现分析................................................................... - 33 -

8.4 getchar的实现分析............................................................... - 35 -

8.5本章小结................................................................................... - 35 -

结论.................................................................................................... - 36 -

附件.................................................................................................... - 37 -

参考文献............................................................................................ - 38 -

 

 

 

第1章 概述

1.1 Hello简介

hello程序键盘输入代码,得到.c文件首先进行预处理。编译得到汇编语言的代码,其次进行汇编处理生成目标文件。与库函数进行链接和重定位之后形成可执行文件。它在shell中运行和转入命令参数。shell通过fork函数,把hello变成一个进程。再通过execve执行此进程。CPU让hello运行跟其他程序,执行逻辑控制流。当程序终止后,父进程shell回收其进程,释放相关数据结构及占用内存空间。

1.2 环境与工具

处理器 Intel(R) Core(TM) i3-6100U CPU @ 2.30GHz,2304 Mhz,2 个内核,4 个逻辑处理器,已安装的物理内存(RAM) 4.00 GB。

操作

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值