计算机常识汇总

硬件结构框架

  PC中最重要的三个部件分别是CPU,内存,I/O控制器;基于C或者汇编语言写底层程序时,需要了解这三部分(对于更高级的程序语言,比如java等是基于一个抽象的虚拟机进行编程的,物理机器的相关细节甚至包括操作系统都通过虚拟机进行了屏蔽).

三个部件的组织形式.

  早期的PC,CPU和内存的工作频率基本一致,并且也没有太多的IO设备,所以所有设备通过一条总线挂在一起,如下图:



  后来由于CPU频率不断提升,导致内存频率跟不上CPU的频率,所以产生了和内存频率(即CPU的外频)一样的系统总线,同时图形设备也需要和CPU以及内存进行大量的数据交换.另外相对于这些高速设备还有一些低速设备,比如磁盘,USB等设备.如果这些设备和前面一样直接连接在一条总线上,硬件设计就会很复杂,所以对总线进行了分级设计,就是南北桥设计.南桥用于高速设备,基于PCI结构,北桥用于低速设备,基于ISA结构.如下图:


操作系统

操作系统的作用:

  • 管理硬件资源,最大限度的有效利用硬件资源,通过提供进程等机制;
  • 为应用程序提供统一的应用程序接口,即API(Application Programming Interface);
  • 屏蔽硬件的差异性;

很多复杂性的工程问题,都可以通过分层的思想来降低复杂度。操作系统也是类似。操作系统和应用软件以及硬件的关系如下图:


发展过程:

  • 多道程序,监控硬件资源一旦闲置就启用新的等待程序,缺点是调度策略粗糙;
  • 早期的分时系统,程序执行过程中主动让出硬件资源一段时间,供其他程序运行,但这个让出是应用程序主动让出,而不是被动。这是的操作系统只负责让出后,加载新的程序;
  • 多任务系统,有了进程和优先级的概念,抢占执行,目前的操作系统都是基于多任务的,比如:Linux,windows NT等。

CPU的大小端模式

大小端模式是CPU的硬件属性,Inter是小端模式,一般嵌入式是大段模式。大段模式和小段模式的CPU,存放数据方式如下:



对于32bit数据0x12345678,的实际存放如上图,16bit数据类似,但是8bit数据没有区别。也就是说:
小端模式,低地址存放低有效位,更符合逻辑;
大段模式,低地址存放高有效位,查看内存更为方便,因为内存低地址在前面。

函数调用过程

IA32中用程序栈来支持函数(过程)调用,栈主要特性是“后进先出”的一个单向队列,只能对栈顶进行操作,数据压入栈顶,弹出栈顶的数据。并且在IA32中,栈顶是低地址,栈底是高地址,esp寄存器永远指向栈顶。如下为一个栈的原始结构:

用pushl %eax,将%eax寄存器中的内容压入栈中(注意pushl是32bit压栈),执行效果如下:


对于上面的单个压栈指令pushl %eax,实际上等同于,下面两条指令:

subl $4,%esp ;栈顶指针%esp = %esp-4
movl %eax,(%esp) ;数据移动

popl出栈指令,与压栈指令的过程刚好相反。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总线 计算机的各个功能部件通过总线连接在一起构成完整的计算机系统,总线是多个系统功能部件之间进行数据传送的公共通路...
    罗蓁蓁阅读 10,564评论 0 10
  • (转)从PC总线到ARM的内部总线转自:http://blog.chinaunix.net/u1/34474/sh...
    spfanlost阅读 5,255评论 0 2
  • 校园的天空依旧还是那么蓝,我抱着书本,从图书馆慢悠悠走回寝室。我抬头看天,看云,我歪着脑袋看树,就是不想看路。迎面...
    心语年华阅读 3,085评论 0 0
  • 自由和安全感是相反的,你若要安全感,就会失去自由,你要的安全感越多,失去的自由就越多,可以说监狱是最有安全感的地方...
    Phanleys阅读 9,275评论 0 0
  • 日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。
    珠海红叶原创阅读 1,616评论 1 1

友情链接更多精彩内容