【实验一】计算机是怎么工作的
来源:互联网 发布:云骐网络 编辑:程序博客网 时间:2024/04/30 16:40
作者:SA****6450 丁海蛟
一、实验任务:
使用Example的c代码分别生成.cpp,.s,.o和ELF可执行文件,并加载运行,分析.s汇编代码在CPU上的执行过程。
二、实验要求:
通过实验解释单任务计算机是怎样工作的,并在此基础上讨论分析多任务计算机是怎样工作的。
三、实验环境:
vmware9.0 ubuntu10.04
四、实验步骤:
1、在vmware9.0环境下的虚拟机ubuntu10.04中打开terminal,启动gedit编辑实验代码example.c。如图一所示。
图一
2、分别使用命令
–gcc –E –o example.cpp example.c
–gcc –x cpp-output –S –o example.s example.cpp
–gcc –x assembler –c example.s -o example.o
–gcc –o example example.o
生成.cpp,.s,.o和ELF可执行文件。如图二所示。
图二
3、使用objdump -S example命令,来查看程序的汇编过程,找到main() 、f()和g()函数段,如图三所示。
图三
五、实验分析
1、程序从main函数开始执行,首先将%ebp压入栈中,然后重新建立新栈,这个过程就是现场保护。再将8保存到ebp所对应的存储单元中,然后调用函数f(),再次进行现场保护,然后将ebp所对应的存储单元中存储的8保存到寄存器eax中,然后调用函数g()。再次进行现场保护后,进行3+8的计算,然后释放内存,返回到f()函数,执行f()函数中调用语句后面的一句,即leave,释放内存,然后返回到main()函数函数中调用语句后面的一句leave,然后返回,结束。
2、以上是单任务计算机的执行过程,按任务的要求,一条指令接着一条指令一路执行下去。但是对于多任务的计算机,采用时间轮片机制将时间分成固定的段,每段分配给不同的任务,所以每个任务的执行都不是完全连续的。但由于每段时间很短,不同任务之间切换的非常快,看起来不同任务是同时执行的。因为任务在不断的切换,当一个任务的时间段结束时,需要对该任务的现在状态进行现场保护,即对一些中间结果,下一条指令的地址等进行保存,当再次轮到该任务执行时,将刚刚保存的现场进行恢复,继续上次没有完成的工作。为了更加有效的执行任务,还采用了优先级和中断的机制,将不同的任务配置不同的优先级,对于那些优先执行或者需要紧急执行的任务,分配更高的优先级,当有更高优先级的任务出现时,发出中断,然后响应该中断,执行更加紧急的任务。通过时间轮片的机制,实现了多任务的过程。通过优先级和中断的机制,实现了效率优先,兼顾公平。
- 实验一:计算机是怎么工作的
- 【实验一】计算机是怎么工作的
- 实验一 分析计算机是怎么工作的
- Linux实验:计算机是怎么工作的
- 【实验一】计算机是怎样工作的?
- 计算机是怎么工作的?
- Linux操作系统实验一:计算机是怎样工作的
- 【Linux操作系统分析】实验一:计算机是怎样工作的
- Linux操作系统分析(一)计算机是怎么工作的?
- 实验:计算机是怎样工作的?
- swift计算机是怎么工作的
- 杨洋(161)-计算机是如何工作的(实验一)
- 汇编实验之hello world是怎么工作的
- 实验一 通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- Linux操作系统实验一:计算机的工作原理
- 聊聊计算机(一)------存储器是怎么存储数据的?
- Linux内核分析 实验一:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 计算机是如何工作的
- 邮件服务器拦截与反垃圾邮箱的相关方法
- 如何恢复Flex builder和Eclipse被删除的文件
- 网站安全检测:推荐8款免费的 Web 安全测试工具
- WPF Page NavigationService 为null
- C#中的串口通信
- 【实验一】计算机是怎么工作的
- PHP Resource id #5
- (转载)java工程师15本必读书籍推荐
- 我的IT从业心得
- 造成segment fault,产生core dump的可能原因
- mysql 5.6 新特性收录
- 10986 - Sending email//Bellman-Ford
- 通过进程名获取主框架窗口句柄
- poj - 3740 - Easy Finding(精确覆盖DLX)