Recitation 4
-
Use your own word to describe “end-to-end” argument.
底层的核心功能对于底层来说才是最重要的,如果底层的功能太复杂超过了它的核心功能,或许不需要把太复杂的功能放在底层实现,而放在由底层建立起来的更高层来实现,这样,让底层专注于其核心功能,反而可能会使得整个系统更快。
-
Give at least three cases that are suitable to use this principle.
现在网络传输的各种数据加密算法都是在高层实现的,加密算法类型多,逻辑复杂,底层实现代价太高。
新进先出的传输机制,需要使用到高层来进行信息重组。
消息的确认报文,最好由高层来完成。
-
Give at least three cases that are NOT suitable to use this principle.
底层本来就是可靠的,比如一些高精度的设备。它们已经在底层电路保证了可靠性,就不需要在高层来管理这些。
有资金有能力能在底层实现可靠性的,比如航空领域和金融领域,因它们行业的特殊性,必须要在底层实现可靠性。
需要同步性而不是准确性,语音传输,同步性的需求比准确性要大,不能为了准确性而造成大的延迟。
-
[Discussion] Consider the design of the file system based on inode (as we learn from class and the lab ). Which part(s) of the design do you think can be removed? In another word, which part(s) of the design is(are) not flexible enough and should be implemented by the user? (Hint: don’t be limited by the FS API.)
inode的属性完全由file system管理,完全限定了一个文件的最大大小,这样的处理或许不太灵活。从这个角度看,file system的功能超出了其核心功能。inode的管理或许可以从其中分离出来。
此外,文件系统还有错误恢复功能,通过日志来备份,这在一定程度上影响了系统的性能,而且对于文件系统来说并不是必须的。
-
[Discussion] The same question, for the OS.Take your time preparing for this.
微内核
内存仅仅实现最小集合的抽象,而其它一些多余的模块则由第三方来提供,运行在用户态。这样可大大减小内核中存在的bug,也可以将模块的错误限制在那个模块中,它的错误不会影响到内核,提高容错性。以及由于某些原本运行在内核态的模块现在运行在用户态,减少了上下文切换,在某种程度上,速度得到提升。