我做后端开发为什么要学习操作系统

1.为什么要学习操作系统?

作者:invalid s
链接:https://www.zhihu.com/question/26709017/answer/33840795
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

1、开眼界
作为最常见的复杂软件,操作系统包含了时序与分时等时间相关的经典案例,又是接口与抽象方面的极佳例子,涵盖了常见软件开发中所可能遇到的大部分场景。弄懂了操作系统解决问题的思路,将来遇到问题就不至于两眼一抹黑。
2、打基础
真正做起工程就会知道,很多很多问题是操作系统相关的。
比如说,做一个网络代理软件,不过是从socket上收一个包然后转发给另一个socket而已,这好像和操作系统没多大关系吧?但真做了,你会发现,用一个线程处理网络IO,只要写对了,那么哪怕系统压力很大,只要CPU顶得住,就可以保证引入的延迟总是在几个毫秒之内;但如果用了多线程分别处理收/发,那么只要网络压力稍大,引入的延迟就会增加,很快额外延迟就可能突破几十个毫秒(这实际上已经完全不能用了)。
想搞明白这是为什么,对操作系统调度原理、时间片等概念没有足够深刻的理解,是不可能的。
尤其是,当你突然遇到类似“系统压力一大网络延迟急剧升高”的bug时,如果对操作系统没有深入理解,你连准确描述都做不到,连查资料、求帮助都不知道该往哪个方向努力,更不用说debug了。
——应用层开发的确只需要接触冰山在海面上的可见部分;但这只够你开发一些蹩脚的软件;冰山藏在海面下的9/10,和冰山的可见部分毕竟是一体的:浮于表面的软件同样会影响冰山的不可见部分、并被冰山的不可见部分影响。如果没有基本了解,当冰山的不可见部分透过可见部分坑到你时,你绝没能力为这些蹩脚软件debug。
————————————————————
类似的,完全不懂何谓文件系统、何谓目录树的用户,一样可以用windows上网、办公。但一旦出了问题,他就只能求人帮忙——而且必须上门,因为你给他说怎么怎么操作,他是不可能听懂的(同样的,如果不上门,只听他描述,你也绝对听不懂他遇到了什么问题:我能说自己已经被这种人坑了无数次了吗)。
2.作为一个合格的后端开发人员为什么程序员要学linux?

在编程界的大神中无一不会Linux,面对一个黑窗口,只依靠键盘完成那些很秀的操作,旁边如果有编程小白,那估计要目瞪口呆了。作为一个开发者,或者说一个合格的后端开发人员,熟练使用linux和编写基本的shell是必须的,后端经常在开发后需要部署和调试web服务,静态的如Nginx、Apache, 动态的如Tomcat、PHP等,以及web服务的依赖数据库、缓存服务等等,这些都需要在linux上操作,可以说如果不会linux操作的后端开发进一步发展是很难的。

现在,容器技术的出现大大减低了开发人员配置各种服务的难度,提升了开发效率,但是仍然需要深入的了解一下linux,只会靠几条简单命令是走不长远的。
在这里插入图片描述
学习linux不仅可以提高技术,关键是(滑稽)可以在小白面前show(滑稽),毕竟当别人认为你厉害的时候那你就厉害了,OK让我们开始学习linux吧。

之前写的文章,后续会持续更新

linux常用命令
linux基础命令脑图版
linux系统目录详解
find和linux三剑客详解
linux常用权限管理
linux文件属性详解
待续…

下面是自己学习一段时间linux的体会。
说说linux和Windows的区别。平常我们常用的操作系统都几乎都是Windows,我们熟悉Windows的“我的电脑”,“C、D、E盘符”,当我们的电脑插上个U盘或手机电脑里又会多了一个盘符驱动器,当我们运行程序是双击桌面上的图标就行了,然而在linux里“一切截然不同”(非桌面linux,笔者几乎不用桌面的),操作都是一个个命令,所见的都是文件和文件夹,其实都是一个一个的“文件”——linux里一切皆文件,那Windows里的对应,盘符变成了/dev文件夹下的sda,sdb等文件,操作命令变成了一些可以直接执行的二进制文件,常见的“桌面图标”变成了“链接文件”。
磁盘

第一次接触linux的人总会感觉别扭、操作复杂。这是学习linux的常态,因为我们已经熟悉所见所得的图形界面操作,而linux只有一个黑色的窗口,唯一会动的只有闪动“光标”,色彩基本只有黑白,这个“黑色窗口”有个好听的名字"shell",它用来接收和解释执行用户输入的命令,当然shell并不只代表这个含义,shell也代表一种编程脚本,也代表一个用户连接的“会话(session)”。回到刚刚的话题,为什么第一次接触linux感觉操作复杂而且别扭呢?因为使用linux需要记一些命令和参数,无疑增加了一点负担,据说linux有将近1000个命令,但实际上,进行复杂的操作只需要100个命令,如果过只进行基本操作只需要基础一二十个命令即可,当熟悉命令后,我相信每个学习linux的认都会有“操作真简单,迅速”的感叹~

学习linux后有什么用。首先,最直接的,你可以搭建属于自己的网站、博客系统,可以实现文件共享系统,可以搭建邮件系统等等。其次,可以对操作系统有更深入的理解,文件是怎样管理的,内存和磁盘上的数据是怎样读取的,了解linux系统后会有更深入的理解。对于开发者来说,尤其后端人员,更重要的是方便自己进行部署测试和开发,可以更深入的了解业务系统的结构组成。

开卷有益,感觉不错请把下方的小手点亮~
————————————————
版权声明:本文为CSDN博主「Elltor」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43217942/article/details/107728518

猜你喜欢

转载自blog.csdn.net/Mrrr_Li/article/details/120392031