本文将从硬件、操作系统和编程语言三个方面对计算机的层级进行详细阐述,其中硬件部分主要包括CPU、存储器和总线等内容;操作系统则是以内核和用户空间为划分标准展开讨论;在介绍编程语言这一块时会比较具体地谈到了低级与高级语言的区别,并且会结合实际应用场景来说明它们之间的优缺点。
1、硬件层次结构
计算机的硬件可以大致分为四个不同的层次结构:物理电路(逻辑门)、微指令控制、指令执行和汇编语言。硬件体系结构分成五个层次结构:数字逻辑电路、微程序控制、指令集架构、操作系统接口和抽象应用模型。
首先我们看CPU,目前市面上常见的CPU都是基于x86或ARM的架构设计,而赋予CPU功能的其实就是微指令集,通俗地说,它相当于CPU里的一个“翻译官”,负责将指令转换成二进制码。而寄存器则是存储器的高速缓存,用于暂时保存CPU要处理的数据。最后就是总线,作为将各个部件组合起来相互沟通的桥梁,分为地址总线、数据总线和控制总线三种。
接下来,我们进入到存储层次结构。计算机中常见的内存类型包括RAM、ROM等,其中RAM又可分为静态RAM(SRAM)和动态RAM(DRAM),它们之间主要的区别在于前者不需要定期刷新而后者则需要。除了这些基本概念外,还有一些与存储芯片相关的术语值得提及,如“位宽”,它指的是电路中数据的位数,比如32位芯片每次读取或写入都可以操作32位二进制数。
最后就是硬盘的事情了,对于普通用户而言,硬盘其实就只是一个容量很大的地方,但事实上,它同样也有着很多细节可讲。比如,在电脑系统启动时,BIOS(即固化于主板上的程序)会首先检测硬盘是否正常运转,并且根据它的特性向操作系统报告一些重要信息,如容量、扇区大小等等。
2、操作系统层次结构
计算机的操作系统可以分为内核空间和用户空间。其中内核对外提供了一组接口(称为“系统调用”),使得进程能够访问各种底层资源,如硬件、文件等。而不同的操作系统则又有着各自不同的内核架构设计,在一个典型的Linux系统中,内核部分会被划分为三大模块:进程管理、文件系统和设备驱动。这些模块之间并非孤立存在,相互合作形成了一个完整的系统。
在内存管理方面,操作系统需要保证各个进程与系统所使用的内存不发生重叠,并且还需尽可能地利用好可用内存。此外,操作系统还必须要掌握 I/O 操作的技巧,即输入/输出。I/O 中存在两种不同类型的操作,分别是阻塞和非阻塞,阻塞操作将一直等待直到读取或写入完成,而非阻塞操作则不会进行无限期等待,反之,它们总会在某个时间点返回错误提示信息。
最后介绍一下中断处理这个概念,中断是指CPU打断当前正在执行的程序来响应突发事件的行为。中断本质上是计算机系统中一种唤醒处理器并提示其需要执行某些重要任务的方法。如果没有中断,许多关键事件将不能及时获得 CPU 处理,从而导致整个计算机系统处于卡死状态。
3、编程语言层次结构
至此,我们已经介绍完了硬件和操作系统这两方面的内容。接下来就开始探究编程语言的结构设计。
首先,我们来看低级语言。它们直接对应着CPU能