计算机系统
大作业
题 目 程序人生-Hello’s P2P
专 业 计算学部
学 号 1190200917
班 级 1903012
学 生 郑瑞捷
指 导 教 师 史先俊
计算机科学与技术学院
2021年5月
摘 要
俺是Hello,额是每一个程序猿¤的初恋(羞羞……)
却在短短几分钟后惨遭每个菜鸟的无情抛弃(呜呜……),他们很快喜欢上sum、sort、matrix、PR、AI、IOT、BD、MIS……,从不回头。
只有我自己知道,我的出身有多么高贵,我的一生多么坎坷!
多年以后,那些真正懂我的大佬(也是曾经的菜鸟一枚),才恍然感悟我的伟大!
……………………想当年: 俺才是第一个玩 P2P的: From Program to Process
懵懵懂懂的你笨笨磕磕的将我一字一键敲进电脑存成hello.c(Program),无意识中将我预处理、编译、汇编、链接,历经艰辛-神秘-高贵-欣喜,我-Hello一个完美的生命诞生了。
你造吗?在壳(Bash)里,伟大的OS(进程管理)为我fork(Process),为我execve,为我mmap,分我时间片,让我得以在Hardware(CPU/RAM/IO)上驰骋(取指译码执行/流水线等);
你造吗?OS(存储管理)与MMU为VA到PA操碎了心;TLB、4级页表、3级Cache,Pagefile等等各显神通为我加速;IO管理与信号处理使尽了浑身解数,软硬结合,才使我能在键盘、主板、显卡、屏幕间游刃有余,
虽然我在台上的表演只是一瞬间、演技看起来很Low、效果很惨白。
感谢 OS!感谢 Bash!在我完美谢幕后为我收尸。 我赤条条来去无牵挂!
我朝 CS(计算机系统-Editor+Cpp+Compiler+AS+LD + OS +
CPU/RAM/IO等)挥一挥手,不带走一片云彩! 想想俺也是 O2O: From Zero-0 to Zero-0。
历史长河中一个个菜鸟与我擦肩而过,只有CS知道我的生、我的死,我的坎坷,“只有 CS
知道……我曾经……来…………过……”
**关键词:**程序;系统;
**
**
目 录
第1章 概述
1.1 Hello简介
P2P:意为From Program to
Process。从源文件到目标文件的转化是由编译器驱动程序完成的。hello.c文件经过cpp预处理,ccl编译,as汇编,ld链接后,最终生成可执行文件hello。最后在Linux系统中通过内置命令行解释器shell加载hello程序,为程序创建进程。
020:意为From Zero to
Zero。Shell通过execve,在子进程中加载hello。为hello创建新的区域结构,然后映射虚拟内存,设置程序计数器,使之指向代码段的入口点,载入物理内存。之后从main函数开始执行,CPU为hello分配时间片执行逻辑控制流。执行完成后shell父进程会回收hello进程,并且内核删除hello所有痕迹。
1.2 环境与工具
硬件环境:X64 CPU ,2.50GHz , 8G RAM
软件环境:Windows 10 64位 ,Vmware 14 ,Ubuntu 16.04 LTS 64 位
开发工具:gcc + gedit , Codeblocks , gdb edb
1.3 中间结果
hello.i:hello.c经预处理得到的ASCII码的中间文件。
hello.s:hello.i编译之后得到的一个ASCII汇编语言文件。
hello.o&