作者回复: 须臾即 同学你好,在后面的具体内容里面,我会给出一些代码示例,大家也可以想一想,怎么通过写点代码,用软件模拟的方式去理解计算机内部的硬件实现机制。
比如全家器和半加器,我们完全可以通过只使用bit数组的与、或、非、异或来实现一遍,更方便我们理解全加器和半加器的硬件电路实现。
作者回复: 👍“教别人”是一种非常高效的学习方式,自己有没有弄清楚,在教别人的过程中,会体会得明明白白的。
作者回复: 杨怀同学你好,这个问题还真是一两句话讲不清楚。线程切换更多是 操作系统 层面实现的问题。我推荐你可以去看 刘超 老师在极客时间的专栏《趣谈Linux操作系统》。
我这里简单讲一下,线程切换不是由中断触发的,而是由操作系统控制在用户态触发进行切换的。切换并没有确定的时间。
而我们在组成原理里面说的中断,一般指的是硬件的中断,是硬件设备会向我们的CPU发出信号,这个是直接通过硬件电路层面来触发。就好像一个电路引脚的信号从高电平变成了低电平,导致CPU收到的电信号就发生了变化,通常是改变了特定寄存器里面的值(中断寄存器),再触发一系列的处理逻辑。
作者回复: 希望这个专栏能对大家有所帮助!
作者回复: 👍加油
作者回复: 👍,感谢分享给大家。
作者回复: 👍加油,坚持到底就是胜利
作者回复: 👍加油
作者回复: 其实并没有什么特别好的方法。一方面,是遇到了更多的疑难问题,更复杂的系统,在实践中需要去用更底层更本质的理解计算机运作的方式去处理问题,自然要回头把这些基础知识捡起来;另一方面,是不是抽点时间回头看看一些“大部头”的教科书也会很有自我满足感。
作者回复: 👍好奇心是一个优秀程序员必然会有的特质
作者回复: 👍这也是一个好方法,先了解知识面,再寻找自己有兴趣点的深入,学习也是个反复迭代的过程
作者回复: 👍加油
作者回复: 👍维基百科是个好材料,特别是英文版的内容和对应的引用也可以算得上是一份好教材了
作者回复: 👍加油
作者回复: 当然是人称csapp的《深入理解计算机系统》
作者回复: Amanda,可以用高级语言写啊,比如验证高速缓存和内存的性能差异,可以用高级语言写。比如实现电路层面的整数加法,也可以用bit数组,用与、或、非、异或,通过代码层面来写一个程序实现半加器和全加器来帮助理解加法的电路实现。
当然,你也可以用vhdl这样的硬件描述语言来干这件事。
作者回复: 👍带着问题去学习是最快的成长方式之一