关于计算机系统的夺命12问,你能坚持到第几问?

2年前 (2022) 程序员胖胖胖虎阿
140 0 0

目录

      • 1、什么是x86架构?
      • 2、为什么32位的CPU的最大内存只有4GB?
      • 3、CPU的频率是什么?
      • 4、什么是内存?
      • 5、内存的多通道设计?
      • 6、简单概述一下什么是DRAM与SRAM?
      • 7、只读存储器(ROM)是什么?
      • 8、简单概述一下你对显卡的理解?
      • 9、假设你的显示器使用1024*768分辨率,且使用去全彩(每个像素占用3B的容量),请问你的显卡至少需要多少内存才能使用这样的饱和度?
      • 10、谈谈硬盘与存储设备
      • 11、谈谈你眼中的操作系统
      • 12、系统调用是什么意思?

1、什么是x86架构?

CPU其实内部含有一些微指令,我们所使用的软件都要经过CPU内部的指令集来完成。AMD、Intel所开发出来的x86架构CPU被大量使用于个人电脑,为何称为x86架构?这是因为最早的那块Intel研发出来的CPU代号称为8086,后来依此又开发出80286/80386等,因此这种架构的CPU被称为x86架构。

2、为什么32位的CPU的最大内存只有4GB?

所谓的位bit,指的是CPU一次读取数据的最大量。64位CPU代表一次可以读取64位的数据,32位CPU则是一次读取32位的数据。因为CPU读取数据量有限制,因此能够从内存中读写的数据也就有所限制。
CPU的各项数据通通来自于内存,内存能提供给CPU的数据量越大,系统的性能也会比较快。
与CPU的频率类似,内存也有其工作频率,这个频率的限制来自于CPU中的内存控制器,CPU内置的内存控制芯片对内存的工作效率最高可达到1600MHz,这只是工作频率(每秒几次)。一般来说,每个时钟周期能够传输的数据量,大多为64位,这个64位指的就是位宽,CPU可以从内存中取得的最快宽带就是1600MHz64bit = 1600MHz8B=12.8GB/S。
与总线位宽相似的,CPU能够处理的数据量成为字长,字长依据CPU的设计,有32位和64位。因为CPU每次能够解析的数据量有限,因此由内存传过来的数据量就会有所限制,这也导致32位的CPU最多只能支持最大到4GB的内存。

3、CPU的频率是什么?

外频指的是CPU与外部组件进行数据传输时的速度,倍频指的是CPU内部用来加速动作性能的一个倍数,两者相乘才是CPU的频率速度。
新的CPU设计中,已经将北桥的内存控制芯片整合到CPU内,而CPU与内存、显卡通信的总线成为系统总线。南桥就是所谓的输入输出IO总线,主要在连接磁盘、USB、网卡等设备。

4、什么是内存?

个人电脑的内存主要组件为动态随机存取内存,随机读取内存只有在通电时才能记录与使用,断电之后数据就消失。因此我们也称这种RAM为挥发性内存。
DDR是所谓的双倍数据传输速度(Double Data Rate),它可以在一次工作周期中进行两次数据的传输,感觉上就好像是CPU的倍频。
所有的数据都要加载到内存当中才能被CPU读取,如果内存容量不够大的话会导致某些大容量数据无法被完整地加载,此时已存在内存当中但暂时没有被使用到的数据必须要先被释放,使得可用内存容量大于该数据,那份新数据才能够被加载。所以,通常越大的内存代表越快的系统,这是因为系统不会常常释放一些内存中的数据。以服务器来说,内存的容量有时比CPU的速度还要重要。

5、内存的多通道设计?

由于所有的数据都必须要存放在内存,所以内存的数据位宽当然越大越哈。但传统的总线位宽一般大约仅为64位,为了加大这个位宽,芯片组厂商就将两个内存集合在一起,如果一根内存可达到64位,两根内存就可以达到128位,这就是双通道的设计理念。
如上所述,要启用双通道的功能你必须要安插两根内存条,这两条内存条最好连型号一模一样比较好,这是因为启动双通道内存功能时,数据时同步写入/写出这一对内存中,如此才能够提升整体的带宽。所以除了容量大小要保持一致之外,型号也最好相同。

6、简单概述一下什么是DRAM与SRAM?

除了内存之外,电脑中还有许多类似内存的存储结构存在,最为我们所知的就是CPU内的二级告诉缓存。如果某些很常用的程序或数据可以放置到CPU内部的话,那么CPU数据的读取就不需要跑到内存重新读取,这样就可以大大提升程序的性能了。
关于计算机系统的夺命12问,你能坚持到第几问?
如图所示,因为二级缓存(L2 Cache)整合到CPU内部,因此这个L2内存的速度必须要与CPU频率相同。使用DRAM时无法达到这个频率速度的,此时就需要静态随机存取内存(Static Random Access Memory,SRAM)的帮助。SRAM在设计上使用的晶体管数量较多,价格较高,且不易做成大容量,不过由于其速度快,因此整合到CPU内成为高速缓存以加快数据的读写是个不错的方式。新一代的CPU都有内置容量不等的L2缓存在CPU内部,以加快CPU的运行性能。

7、只读存储器(ROM)是什么?

主板上面的组件是非常多的,每个组件的参数具有可调整性。
主板上面如果有内置的网卡或显卡时,该功能是否要启动与该功能的各项参数,被记录在主板上面的一个称为CMOS的芯片中,这个芯片需要借助额外的电源来使用记录功能。
CMOS内数据的读取与更新,都是在BIOS(Basic Input Output System)中写入到主板上面的一个存储芯片中,这个存储芯片在没有通电时也能够记录数据,这就是只读存储器(Read Only Memory,ROM)。ROM是一种非易失性的存储。另外,BIOS对于个人电脑来说是非常重要的,因为它是系统在启动的时候首先回去读取的一个小程序。
另外,固件很多也是通过ROM写入的,固件像软件一样也是一个呗电脑所执行的程序,然后他是对于硬件内部而言更加重要的部分。

8、简单概述一下你对显卡的理解?

显卡又称为VGA(Vedio Graphics Array),它对于图形显示扮演着相当关键的角色。一般对于图形影像的显示重点在于分辨率与颜色深度,因为每个图像显示的颜色会占用内存,因此显卡上面会有继承内存并被称为显存,这个显存容量将会影像到你的屏幕分辨率与颜色深度。
除了显卡之外,现在由于3D游戏与一些3D动画的流行,因此显卡的运算能力越来越重要。一些3D的运算任务早起是由CPU完成,但是CPU并非完全针对这些3D运算需求来来进行设计的,而且CPU平时已经非常忙碌了,所以后来显卡厂商直接在显卡上面嵌入一个3D加速的芯片,这就是所谓的GPU称谓的由来。
显卡主要也是通过GPU的控制芯片来与CPU、内存等通信。如前面提到的,对于图形影像来说,显卡也是需要高速运算的一个组件,所以数据的传输也是越快越好,因此显卡的规格由早期的PCI升级为AGP,近期AGP又被PCI-Express所取代。

9、假设你的显示器使用1024*768分辨率,且使用去全彩(每个像素占用3B的容量),请问你的显卡至少需要多少内存才能使用这样的饱和度?

因为1024768分辨率中会有786432个像素,每个像素占用3B,所以总共需要7864323/1024/1000=2.3MB以上才行,但如果考虑屏幕的刷新率(每秒钟屏幕的刷新次数),显卡的内存还是越大越好。

10、谈谈硬盘与存储设备

机械硬盘有个很致命的问题,就是需要驱动马达去转动碟片,这会造成很严重的磁盘读写延迟,你要知道数据在哪个扇区上面,然后再命令马达开始转,之后再让磁盘去读取正确的数据。另外,如果数据放置的比较离散,那么读写的速度就会延迟更明显,速度快不起来。因此,厂商就拿闪存去制作高容量的设备,这些设备的连接接口也使用SATA或SAS,而且外型还做的跟传统磁盘一样,这种称为固态硬盘。
固态硬盘最大的好处就是没有马达,不需要转动。而且通过闪存直接读写的特性,因此除了没数据延迟且快速之外,还很省电。
由于硬盘内部机械手臂上的磁头与碟片的接触是很细微的空间,如果有抖动或是污物附着在磁头与碟片之间就会造成数据的损坏或是物理磁盘整个损坏,因此,正确的使用电脑的方式,应该是在电脑通电后,不要移动主机,避免震动磁盘,导致磁盘数据发生问题。另外,也不要轻易插拔就以为顺利关机,因为机械手臂必须回归原位,所以使用操作系统的正确关机方式,才能够比较好的保护磁盘,因为它会让磁盘的机械手臂回归原位。

11、谈谈你眼中的操作系统

操作系统其实是一组程序,这组程序的重点在于管理电脑的所有活动以及驱动系统中的所有硬件,操作系统内核可以让CPU可以开始判断逻辑与运算数值、让内存可以开始加载/读取数据与程序代码、让硬盘可以开始被存取、让网卡可以开始传输数据、让所有外置设备可以开始运转等。总之,硬件的所有操作系统都必须要通过操作系统来实现。
但是单有内核用户也不知道能做什么事情,因为内核主要在管理硬件与提供相关的功能(比如读写硬盘、网络功能、CPU资源分配等),这些管理操作都非常重要,如果用户能够直接使用内核的话,万一用户一不小心将内核程序停止或者破坏,将会导致整个系统的崩溃。因此内核程序放置到内核当中的区块是受保护的,并且启动后就一直常驻在内存当中。

12、系统调用是什么意思?

既然硬件都是由内核管理的,那么如果我想要开发软件的话,自然要去参考这个内核的相关功能, 操作系统通常会提供一套应用程序接口给程序员来开发软件,工程师只要遵守该API那就很容易开发软件了,比如C语言,只要遵守C语言的函数即可,不需要再去考虑其它内核的相关功能。
电脑系统主要由硬件构成,然后内核程序主要在管理硬件,提供合理的电脑系统资源分配(包括CPU资源、内存资源等),因此只要硬件不同(如x86架构与RISC架构的CPU),内核就得要进行修改才行。由于内核只会进行电脑系统的资源分配,所以再上面还需要有应用程序的提供,用户才能够使用系统。
操作系统的内核层直接参考硬件规格写成,所以同一个操作系统程序不能够在不一样的硬件架构下运行。
操作系统只是管理整个硬件资源,包括CPU、内存、输入输出设备及文件系统等。如果没有其它的应用程序辅助,操作系统只能让电脑主机准备就绪而已,无法进行其它功能。应用程序的开发都是参考操作系统提供的API,所以该应用程序只能在该操作系统上面运行而已,不可以在其它操作系统上运行。

相关文章

暂无评论

暂无评论...