操作系统(1)

来源:互联网 发布:今日头条 微博 知乎 编辑:程序博客网 时间:2024/06/15 16:02

这门课叫做操作系统,首先我想问自己,我为什么学操作系统?

既然要知道为什么要学习操作系统,那么我就应该初步了解什么是操作系统?书上说,操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序的集合。清华大学的教授给操作系统的定义做出了两方面的理解,第一,操作系统是一个控制程序,他是一个系统软件,他给用户提供一个运行的环境,用户使用计算机系统的时候,提供所需要的服务,例如,如果用户使用不当,那么这个时候,他需要项目的一些错误处理。第二,他是一个资源管理器,这里的资源包括硬件资源和软件资源,归纳起来这些资源包括处理机,存储器,i/o设备以及文件(数据和程序)。总结了以上书籍和专家对操作系统的介绍,我总结了操作系统就是一个提供服务,管理计算机资源的系统软件。

明白了操作系统的概念,那么回归到最初的问题,我为什么要学习操作系统?对于初步计算机行业的小菜鸟,根本没有任何的经验与体会,上网百度了很多,有几个网友的解释确实深入人心。

1、开眼界作为最常见的复杂软件,操作系统包含了时序与分时等时间相关的经典案例,又是接口与抽象方面的极佳例子,涵盖了常见软件开发中所可能遇到的大部分场景。弄懂了操作系统解决问题的思路,将来遇到问题就不至于两眼一抹黑。

2、打基础真正做起工程就会知道,很多很多问题是操作系统相关的。比如说,做一个网络代理软件,不过是从socket上收一个包然后转发给另一个socket而已,这好像和操作系统没多大关系吧?但真做了,你会发现,用一个线程处理网络IO,只要写对了,那么哪怕系统压力很大,只要CPU顶得住,就可以保证引入的延迟总是在几个毫秒之内;但如果用了多线程分别处理收/发,那么只要网络压力稍大,引入的延迟就会增加,很快额外延迟就可能突破几十个毫秒(这实际上已经完全不能用了)。想搞明白这是为什么,对操作系统调度原理、时间片等概念没有足够深刻的理解,是不可能的。尤其是,当你突然遇到类似“系统压力一大网络延迟急剧升高”的bug时,如果对操作系统没有深入理解,你连准确描述都做不到,连查资料、求帮助都不知道该往哪个方向努力,更不用说debug了。

3.——应用层开发的确只需要接触冰山在海面上的可见部分;但这只够你开发一些蹩脚的软件;冰山藏在海面下的9/10,和冰山的可见部分毕竟是一体的:浮于表面的软件同样会影响冰山的不可见部分、并被冰山的不可见部分影响。如果没有基本了解,当冰山的不可见部分透过可见部分坑到你时,你绝没能力为这些蹩脚软件debug。

4.师傅在教拳脚功夫,也在教练气法门。如上述某些答案所言,大侠没那么多,普通人也就是强身健体,别说练武了,能会一套花架子都能混个不错的职位。但这不妨碍老师孜孜不倦地告诉学生们,有年少得意和大器晚成两种英雄,你们喜欢哪一个?这就是选择的自由:你不喜欢底层,照样可以毕业;你不喜欢本专业,照样可以去干自己想干的工作;甚至你不喜欢自己老婆了,还可以离婚。这是选择的自由,当然选择也必然有诸多后果和担当。个人很喜欢当初实习单位的一句标语,做最擅长的,其余的外包。如果你真心喜欢什么东西,不需要别人催促,自己都会求知若渴,这才是真爱。


听了专业人士的解释,突然感觉自己动力满满,不积小流无以成江河。还是应该听取前辈们的经验,好好学习操作系统。