码迷,mamicode.com
首页 > 其他好文 > 详细

大跃进

时间:2017-08-10 22:30:33      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:空间   虚拟机   输入   计算机   应用层   知识   并发   时间   查看   

处理器比作经理,把打印机比作一名员工.
处理器告诉打印机要打印什么文件的时候,当打印机完成之后,打印机会告诉处理器,这件事情办完了,你有什么其他安排吗?

这就叫做中断.

中断可以分两种:
一种是严重的,一种是不严重的.

比如有的电脑不可以断电,电池电量很低的时候,电源就会给CPU发出一个中断.
或者内存里面的电路出现了一些问题,导致数据都乱了,处理器这个时候再工作下去也没有任何意义了.

所以,这种中断CPU收到之后,就会放弃工作. (非屏蔽中断)

产生中断信号的来源,成为中断源.

当然,还有一种中断,不会意味着灾难,有时候可能也会紧急.

键盘中断、打印机中断、定时器中断.这种中断,我们可以让CPU不搭理,也可以搭理.(可屏蔽中断)


由于中断机制,CPU才能有条不紊地“同时”完成多个任务,中断机制实质上帮助我提高了并发“处理”能力。它也能给计算机系统带来同样的好处:如果在键盘按下的时候会得到一个中断信号,CPU就不必死守着等待键盘输入了;如果硬盘读写完成后发送一个中断信号,CPU就可以腾出手来集中精力“服务大众”了——无论是人类敲打键盘的指尖还是来回读写硬盘,跟CPU的处理速度相比,都太慢了。

也因为中断机制,为我们以后的程序能够"同时运行"奠定了基础.

比如你一边打字聊QQ,一边听歌,还挂着游戏.
这些程序之间运行一下,"中断",再运行下一个程序."再中断".

造成了一种错觉,好像这些程序同时运行.

CPU收到中断,每个中断都有一个编号.
根据这些编号,CPU根据收到的中断编号,执行不同的程序.
在8086里面,要定位一个程序,需要知道段地址和偏移地址.

技术分享


8086规定了256个中断.

中断向量表在内存的某个位置保存着,
一共存储了256个中断所对应处理程序的段地址和偏移地址.
在8086中,在内存的0000:0000到0000:03FF


这256个中断对应着执行哪些不同的程序,由操作系统和BIOS替我们已经完成了.

当然,我们也可以把某个中断编号对应要执行的程序都提前写好,放到一块空闲的内存中.
并且把这个中断编号对应着中断向量表里面的段地址和偏移地址,改到我们放入的那块内存.


 

 技术分享


而加载器要把“真正的程序”加载到内存得肯定得知道几件事情。

1.首先得知道“真正的程序”在硬盘上的起始扇区?
2.这个程序占用了硬盘多少个扇区。
3.内存中的什么地方是空闲的?
4.怎么样把它们从硬盘上搬到内存里面。
5.搬进来之后,让CPU如何跳到那块程序代码区执行指令。


所以,用户程序中。
大概分为两部分:
一部分是我们之间写的代码。 指令和数据。
另外一部分是这个程序的一些特征信息:程序有多大,要占多少内存空间?



操作系统里面本身也为我们设计了非常完美优秀的加载器。
同样,不同的操作系统也要求我们设计用户程序的时候,把一些用户信息的大小.
占多少内存都说明一下,并且把这些说明放到程序中指定的一些位置中.


操作系统载入这个程序的时候,会先根据这个程序的一些概要信息,做一些初始化的工作.
所以,我们在操作系统上写好的代码,生成的文件为什么无法直接让操作系统"理解".
迫不得已使用虚拟机,并且写入了引导区.


之前学习的都是16位的汇编程序,但现在我们的电脑都已经64位CPU了,中间还有一个32位CPU.
所以,我们的操作系统针对不同的CPU开发的,也分为16位操作系统,32位操作系统,64位操作系统.

因为是向下兼容的.所以64位CPU可以安装32位的操作系统.
同样64位的操作系统,也可以运行一些32位的应用程序.



64位CPU可以理解成是32位CPU的一个拓展.
但是32位CPU跟16位的CPU变化比较大.

特别是在32CPU里面多了2种模式.
实模式、保护模式、虚拟8086模式.



我们安装一个软件的时候,有时候会提示32位和64位. 或者x86或者x64,其实对应着就是32位的操作系统和64位的操作系统.
学会了32位汇编语言,64位以后用的时候,也很容易.

后面的课程,我们就直接在操作系统上进行.
我们先来安装一个工具,这个工具叫做ollydbg.

可以用来查看调试32位Windows下的应用程序的机器指令.



之前大家学习的是16位汇编语言,并且是无操作系统.
现在一下子跳跃到了32位的CPU,并且是有一个很庞大的Windows系统替我们做了很多事情.

我相信很多朋友已经迫不及待的想做一个软件出来了,接下来的几节课,我们简单学习一下32位汇编的一些常用指令.
开始C语言的课程.


这中间有太多关于硬件和操作系统方面的知识,对于我们现在这个阶段去研究这些内容,会耗费大量的时间和精力.
所以接下来我们开始学习一些应用层软件的开发知识,做一些实用的软件,到了一定的高度,再来研究这些底层的知识点

 

大跃进

标签:空间   虚拟机   输入   计算机   应用层   知识   并发   时间   查看   

原文地址:http://www.cnblogs.com/xiaodaxiaonao/p/7341461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!