操作系统
操作系统是为程序提供执行过程的系统软件。作为计算机的基础知识,有这么多高级技术的时代,为什么要学操作系统呢:
虽然面试是重要一环但你的职业生涯远远不是过了面试就高枕无忧到了工作的时候接触到的问题的广度不止面试的数据结构和算法。
现在几乎没有哪个scaled application不用multiprocess/ multithread/ coroutine的哪怕是最最简单的WebApplication似乎你只需要给URL Entrypoint指定逻辑但是其实多线程/ 协程人家framework都给你处理好了的只是把复杂的逻辑隐藏在后面而已甚至你在命令行运行一个程序都有shell自己的fork操作这也涉及到多进程知识。
当今library/framework给开发者隐藏了很多很多细节是希望尽可能把问题变得简单而不是限制住开发者的思维即使你不系统学数据结构、算法、操作系统、数据库也不耽误你上leetcode刷题不耽误写CRUD不耽误你写个简单的电商平台不耽误你做简单的运维你完全可以找到一份工作甚至还能养活你的家庭但是随着时间推移你一定不会满足于写这些简单的东西当你希望你的技术有所创新的时候比如思考怎样加速你的softwaredeployment怎样让你的电商网站提高一点并发量怎样给你的电商网站加一个秒杀系统(万级并发就几乎不是MySQL单master多slave和AWS上auto scaling这么简单就能解决的问题了想想怎么加MQ/Memcache/Redis吧你还要想想master/slave数据不一致呢)或者你的多线程程序log为什么总有奇怪的字符掺杂在一起(是不是没加线程锁?)甚至你希望重写一个webframework来提高自己的效率来多陪陪你的家人上面提到的基础知识就是你披荆斩棘的武器也能够省下将来你的hours or days of debug time你会知道技术能做到什么技术做不到什么以及什么是你不该做的
以上从一个方面回答了“为什么要学操作系统
”这个问题~ 带着这种想法吧OS啃下来吧(