看了那么多资料,为什么还是学不会操作系统?

记得当初刚找工作时,面试官问了我很多操作系统方面的知识:你了解操作系统原理吗?Linux 环境会部署吗?底层是怎么实现的?都会哪些 Linux命令?一系列问题把我问得一脸懵逼。

幸好大学学过操作系统,顺利过关入职了。当时还纳闷,我做开发,掌握语言不就好了,为什么还要掌握操作系统。

入职工作后我恍然大悟:弄懂了操作系统解决问题的思路,遇到问题就不至于两眼一抹黑。

在我看来,每一个程序员都应该深入研究操作系统的原理。为什么这么说呢?

1.打开Linux操作系统这扇门,你才是合格的软件工程师。根据2018年W3Techs数据统计,服务器端,Unix-Like OS 占的比例近70%,其中Linux可以称得上是中流砥柱;移动端, Android 也是基于Linux内核,可以说,编程世界中,Linux 是主流,不会Linux操作系统的你会格格不入。

2.研究操作系统内核代码,你能学到数据结构与设计模式的落地实践。在Linux内核里,你会看到数据结构和算法的经典使用案例。你甚至还会看到系统对并发情况保护这种复杂场景。在实践中遇到问题的时候,也可以直接参考内核中的实现。

3.了解Linux操作系统生态,能让你事半功倍地学会新技术。Linux 最大的优点就是开源。无数优秀软件运行在 Linux 上,比如数据 MySQL、消息队列 RabbitMQ、大数据 Hadoop、虚拟化 KVM 等等,学习 Linux,你可以亲密接触大牛思想,这对于你个人的技术进步和职业发展都非常有益。

可以说,如果想在技术之路上走得更远,找到更高薪的工作,深入地学习并掌握操作系统是必经之路。可是很多人在学习过程中很容易迷路,主要有下面两个原因:

1.操作系统涉及方方面面的知识,包括数据结构与算法、计算机组成原理、网络协议、编译原理等等CS专业的硬核知识,可以说是最复杂的软件系统;

2.理解操作系统更需要理论与实践深度结合,很多具体的编程问题,比如并发、网络编程、性能调优等等,都需要你理解操作系统的工作原理。

我一直希望有一种方式,可以生动有趣地学习 Linux 操作系统,更快地上手。直到我发现了下面这张图,用“上市公司”的比喻,把 Linux 操作系统零散的知识点用图谱的形式表现出来,很好诠释了Linux的学习路线,太形象了!

扫描二维码关注公众号,回复: 5701346 查看本文章

程序员为什么一定要用Linux?

大多数人推荐Linux,基本上都会说Linux让你更高效、更优秀。

然而工具只是工具。

那么Linux的好处到底在哪里呢?

1、开源

为什么这么多的的设备都选择使用 Linux?因为它是开源软件(open source software),具有不同的含义。

使用一个安全的操作系统工作变得必不可少的事,而 Linux 恰好满足了这个需求。因为它是开源的, 任何人都可以查看代码并研究来判定是否有一些潜在的能够造成安全风险的缺陷。

2、多用户、多任务、多线程

Linux系统同时可以支持多个用户,每个用户对自己的文件设备有特殊的权利,能够保证各用户之间互不干扰,就像手机开了助手一样,同时登陆多个qq账号,当硬件配置非常高时,每个用户还可以同时执行多个任务、多个线程同时工作、提高效率,简直是完美的一塌糊涂,单凭多用户而言就完爆其他操作系统。

3、稳定性和高效性

你也许会听到Windows服务器长时间运行而突然宕机,但你绝不会听到Linux系统服务器因为长时间不关机会卡死,在Linux上几乎是不会出现这种情况的。Linux服务器可以无休止的运行下去不宕机,因为它继承了Unix卓越的稳定性和高效性。正因为它的稳定才获得了众多用户的青睐,因为它的高效,它的使用范围更加广阔,然而Linux还可以提供一些高可靠性的服务,比如:LNMP、虚拟化、数据库服务等等。

4、安全性和SELinux

其安全性相比其他系统也要安全很多,由于Linux拥有相当庞大的用户和开源社区支持,因此能很快发现系统漏洞,并迅速发布安全补丁及时更新,同时还具有很强的“免疫力”特点,很少受到病毒攻击,对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。

不过,利用Linux自带防火墙(iptables,firewalld)、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘,同时还有安全增强机制SElinux,在linux内核中提供强制访问控制,功能非常全面,能够很好保护系统和服务,不过很多人喜欢把它关闭,这相对安全性就不是很好了。

还有Tcp_wrappers也能够提供很好的网络服务访问控制,Linux系统对于用户和文件管理权限的管理也是相当出色的,能够很好的控制权限,保证文件的机密性,也是其他系统无法比拟,所以Linux系统在一定程度上是坚不可摧的。

5、性能优势

由于Linux要保证其稳定性,所以并没有像其它操作系统一样内核如此臃肿庞大、漏洞百出,随着Linux内核的不断更新,不断提升着优势,Linux操作系统能把服务器的硬件优势体现的淋漓尽致,因为Linux系统吸取了Unix系统近1/4世纪发展的经验,最主要的是Linux开放源代码,保证系统稳定性,更好的调用硬件功能,同时还提供了丰富的系统资源工具top,freee,df,vmstat,dmesg,iostat,sar,uptime等,方便查看资源的利用率。

以上这些足够让你投向Linux的怀抱了。

当然,除了这些,还有一些说不定道不明的定西,比如:

bigger than bigger

把你的Linux系统拿出去,开始用命令行做点事情。

比如说,输入 sudo rm -rf /*

在外行人看来,非常之酷炫!(酷炫有风险,命令需谨慎)

【附】相关架构及资料

加群 Android IOC架构设计领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

领取方式:

点赞+加群免费获取 Android IOC架构设计

猜你喜欢

转载自blog.csdn.net/weixin_44109213/article/details/88873195