需要多少硬件理解才能完全理解作为计算机科学专业学生的“操作系统”和“计算机体系结构”课程?
答案 0 :(得分:4)
在那个级别,你知道的越多越好,但是必需品是计算机体系结构的布尔逻辑设计。了解如何从基本逻辑单元(和/或时钟)设计寄存器,加法器,多路复用器,触发器等。从基本了解ASM,内存映射IO和中断开始,您可以理解操作系统。
编辑:我不确定你的“硬件”是什么意思,你认为逻辑设计是硬件吗?或者你在谈论晶体管?我认为理解半导体的基础知识并不会有什么坏处,但架构被抽象出真正的硬件级别。我还要说操作系统是在架构之上抽象的。答案 1 :(得分:4)
在最基本的层面上,您应该了解Von Neumann architecture以及它如何映射到现实生活中的计算机上。在此之上,越多越好。而不仅仅是操作系统 - 垃圾收集和放大VM语言,堆,堆栈和指令的工作方式和执行方式,因此您可以了解哪些方面会出现问题,以及如何改进它以充分利用架构。
答案 2 :(得分:2)
“计算机科学不再是计算机,而是天文学与望远镜有关。”
答案 3 :(得分:2)
当您尝试针对您定位的硬件进行优化时,它会有所帮助。以硬盘驱动器为例,它有助于编写利用局部性的软件来最小化寻道时间。如果您只是将硬盘驱动器视为“工作正常”,并将文件和数据粘贴到整个地方,您将遇到严重的碎片问题并导致性能降低。
在设计操作系统时,需要考虑很多因为您正在尝试最大限度地提高性能。简而言之,了解它可以提供帮助,当然也不会有任何伤害。
答案 4 :(得分:2)
两个想法:
首先,一切都是平行的。多线程是一回事,多核是另一回事。在缓存,内存架构,资源分配等方面存在大量问题。其中许多都是为您“处理”的,但您对金属的了解越多越好。
其次,硬件中的数字表示。这和计算机科学本身一样古老,但它仍然让每个人都兴奋起来。不确定是谁说的,但它是完美的:“将无穷大的数字映射到有限数量的位上涉及近似值。”理解这一点和数值分析一般会一次又一次地节省您的培根。序列化和字节序等
此外,它很有趣!
答案 5 :(得分:1)
确定Comp Sci研究通常所需的硬件知识的基线知识集的一个好方法是访问各种着名大学的课程网站。对我来说,我会查看麻省理工学院,斯坦福大学,伊利诺伊大学厄本那/香槟分校(UIUC),佐治亚理工学院等的Comp Sci课程。然后我会从中得到一个平均的理解。
此外,您还可以亲自致电您所参加或申请的大学的辅导员,以获得个性化的需求。他们可以根据您的愿望为您提供指导。教授甚至更多。它们非常容易获取并且非常愿意就此类事情提供反馈。
最近,我看着抓住硕士学位。作为UIUC的校友,我通过电子邮件向那里的几位老教授发送电子邮件告诉他们我的兴趣。我向他们询问了几个旨在理解gradschool及其观点的问题。他们分享了,大多数邀请我打电话和聊天。
就个人而言,我同意@CookieOfFortune。您对计算机内部工作方式的了解越多,在编写软件时就可以越多地利用它。也就是说,这并不是说你真的需要在很大程度上理解电子学的物理学。这很有趣,当然,但你应该把重点放在电路,逻辑等方面。其中大部分内容都应该在一个好的操作系统课程中展示,或者至少为你提供跳板,让你自己学习更多。