然后,时钟周期到了,需要切换:
这时候,处理器将进程 1 的寄存器内容保存起来(这个涉及到线程控制块,后面的课程会说),加载进程 2 执行需要的内容到寄存器开始执行,然后访问的是进程 2 的内存空间。
如果进程 2 尝试访问不是进程 2 内存空间的内存,比如进程 1 的内存空间会发生什么呢?这时候就会发生 Segmentation Fault(core dumped)这个错误,然后进程就会被操作系统停止。
其实,操作系统这里提供了一个保护边界,虽然这些进程都在同一个硬件上运行,但是操作系统可以防止进程访问不该访问的地方,保护进程不受其他进程的影响。
最后,操作系统也作为粘合剂提供一些必不可少的服务,也就是程序会用到的公共服务(common service),例如文件系统服务,可视化界面服务,网络服务等等。这些公共服务通常是与库紧密链接的,你在写程序的时候使用这些库来使用这些服务。
这样,我们第一节课的内容基本就讲完了,你也对操作系统有了一个基本的理解与概念,最后我们提一下是什么让操作系统令人兴奋和具有挑战性。
这就是操作系统令人兴奋的地方,世界是一个巨大的分布式系统,如图所示,所有的设备从一端横跨全球的大规模集群,到小型微机系统设备和物联网设备以及介于两者之间的所有设备。这就是为什么我认为操作系统是如此令人兴奋,因为只有正常的操作系统才能让一切正常工作。
你们肯定知道摩尔定律(这也是伯克利大学的教授提出的),即每 1.5 年左右晶体管数量会翻倍。
但是在 21 世纪初,这个速度还是减缓了,因为人们发现把这些晶体管越来越多地放到芯片上,在电容和功率方面遇到了问题。在过去,你可以等上几年就能得到相当于你现在使用的机器两倍的性能,在21世纪的某个时候,这种趋势突然停止了。这怎么办呢?突然间人们不得不制造多核处理器,并设计大量并行计算。
功率密度,电容,很多东西都是导致人们突然制造多核的原因,而不是以让速度更快为目的的,但是速度确实提高了.但是,摩尔定律要结束了,虽然不是正式的结束,但是已经无法维持原来的增长了。但这并不意味着人们不再把许多设备挤在一起,用网络连接它们,这只是意味着网络变得更加重要,而网络正常工作的基石就是我们要学习的操作系统
另一件事是存储容量不断增长:
所以我们有更多的设备更多的存储空间,更多的设备更多的存储空间更多的人意味着对操作系统的需求更大,这就是为什么我们要学习操作系统的另一个原因。
但是,学习操作系统的是一件很有挑战的事情,挑战主要来自于复杂度。应用程序由许多软件模块组成,运行在许多不同硬件平台上的许多设备上,可能还会受到恶意攻击导致失败,通过在所有可能的环境和组件组合下测试来完善软件是不可行的,我们必须学习如何以基本可行的方式来构建这些复杂的系统。