计算机科学中的硬件知识?

4
作为一名计算机科学专业的学生,要完全理解“操作系统”和“计算机架构”课程,需要掌握多少硬件知识呢?

澄清一下,你似乎在问作为计算机科学专业学生,你需要多少硬件理解才能完全理解你将要学习的"操作系统"和"计算机体系结构"课程。是这样吗? - Mike Caron
@yx:我认为他在问你是否需要了解硬件才能理解操作系统和计算机架构之类的东西。不过我不确定,这是一个非常神秘的问题。 - Welbog
@mike,这样说就有意义多了,一开始我还以为他把操作系统当成硬件来处理呢。 - z -
7个回答

4
在这个层面上,你知道的越多越好,但最基本的是计算机体系结构的布尔逻辑设计。了解如何从基本逻辑单元(与、或、时钟)设计寄存器、加法器、复用器、触发器等。如果你对汇编语言、内存映射IO和中断有基本的理解,你可能可以理解操作系统。
编辑:我不确定你所说的“硬件”是什么意思,你是否认为逻辑设计是硬件?还是你在谈论晶体管?我想了解半导体的基础知识也没有坏处,但架构被抽象到真实的硬件层面之上。我还会说,操作系统是在架构之上抽象出来的。

4

在最基本的层面上,你应该了解冯·诺伊曼体系结构以及它如何映射到现实计算机。除此之外,了解得越多越好。不仅仅是操作系统-在垃圾回收和虚拟机语言中,还需要了解堆、栈和指令的工作原理以及执行方式,这样你就可以知道哪些会表现不佳,如何改进以发挥体系结构的最佳性能。


2

计算机科学与天文学一样,不再仅仅关乎计算机或望远镜。


是的,但你的比喻并不完全正确。计算机体系结构就像(插入一些望远镜设计领域)与望远镜有关。 - z -
3
只要不被误解,任何适当的引言都可以使用。一个对望远镜一无所知的天文学家很难在天文学领域取得成功。 - e.James
确切地说,这就是关键所在。如果你不知道望远镜的工作原理、背后的物理学、它的特点和限制,那么你就是一个非常糟糕的天文学家。 - Tamas Czinege
广播界的人怎么样?理论家呢?轨道和位置的数学建模呢?望远镜与此无关。 - S.Lott
@S.Lott:尽管望远镜的物理学不控制它们的工作,但望远镜的操作影响了它们科学史和它们可以对世界进行的观察类型(什么样的理论是无法被证伪的?)。我认为这是一个很好的比喻,说明为什么硬件对于计算机科学家来说是重要的。 - mqp
“硬件对于一些计算机科学家非常重要”,但并非所有人都如此认为。实际上,在某些领域,望远镜/硬件是无关紧要的,而在其他领域则可能会令人困惑或有害。硬件知识只是一个(狭窄)的专业主题。 - S.Lott

2

当你试图优化针对的硬件时,它非常有用。以硬盘为例,编写利用局部性减少寻道时间的软件会有所帮助。如果您只是将硬盘视为“它可以工作”,并将文件和数据随意存放,那么您将遇到严重的碎片问题,并导致性能降低。

在设计操作系统时,考虑到这些因素可以最大限度地提高性能。因此,简而言之,学习一些相关知识可以有所帮助,肯定不会有任何坏处。


2
两点想法:
第一,一切都是并行的。多线程是一回事,多核是另一回事。有大量关于缓存、内存架构、资源分配等方面的问题。许多问题已经为您“处理好了”,但您对金属了解得越多,就会变得更好。
第二,硬件中的数字表示。这是计算机科学自成立以来的老问题,但它仍然会让每个人都陷入困境。不确定是谁说过这句话,但它是完美的:“将无限的数字映射到有限数量的位上涉及到近似。” 了解这个和一般的数值分析将会一次又一次地挽救你。序列化和大小端等也很有趣!

1

确定计算机科学学习所需的硬件知识基线的好方法是访问一系列著名大学的课程网站。对我来说,我会查看MIT、斯坦福、伊利诺伊大学厄巴纳/香槟分校(UIUC)、佐治亚理工等大学的计算机科学课程。然后我会从中得到一个平均的理解。

此外,您还可以亲自致电您所就读或申请的大学的指导顾问,以获取个性化的需求视角。他们将根据您的愿望为您提供指导。教授们更是如此。他们非常易于接触,并且非常愿意就此类事情提供反馈。

最近,我考虑攻读硕士学位。作为UIUC的校友,我给那里的几位老教授发了电子邮件,告诉他们我的兴趣。我向他们提出了几个旨在了解研究生院和他们的观点的问题。他们分享了他们的经验,大多数人都邀请我打电话聊天。

个人而言,我同意@CookieOfFortune的观点。你对计算机内部工作原理的了解越多,就越能在编写软件时利用这些知识。不过,并不需要深入了解电子物理学。当然,它很有趣,但你的焦点应该放在电路、逻辑等方面。这些内容在一个好的操作系统课程中应该得到充分讲解,或者至少提供给你自主学习的起点。


0
作为一个很好的例子,我们可以参考BIOS,作为第一个程序(BIOS本身就是一种操作系统,而操作系统也是一个程序)在可以说是第一台个人电脑(IBM PC 5150)上创建的,在BIOS中可以看到很多代码(这些代码硬编码在主板上的第六个ROM中),用于测试硬件或实现某些功能(它们被称为中断),只有在深入了解底层硬件且在上下文中才能理解这些代码(大约5000行等效汇编代码)。
以8237 DMAC为例,你可以从其数据手册中了解它,这似乎是了解一个芯片最好的地方,但是当你在主板上看时,我们会发现甚至其中一些行为已经改变以获得更多的控制(比如8237上的AEN引脚,尽管它是强制性使用的,但没有被使用,而IBM PC 5150的设计者决定用另一种方式实现该引脚的功能)。
这意味着要理解任何操作系统,最好首先了解最低级别的程序(即BIOS),要理解BIOS,您需要了解底层硬件,但这个底层硬件必须在上下文中理解。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接