服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

为什么计算机需要操作系统?

日期: 来源:码农的荒岛求生收集编辑:码农的荒岛求生

大家好,我是小风哥,提前祝大家新年快乐,这是年前的最后一篇技术文啦。

今天我们从三个方面来简单聊聊为什么计算机系统操作系统这个话题。


资源分配器
如果你的CPU上只需要运行一个程序,那么你的确不需要操作系统。

可是,一旦你的CPU上需要再运行一个程序,那么马上就会面临一个问题:两个程序开始竞争资源,因为计算机的硬件就那么多:有限的处理器个数、有限的内存容量、有限的磁盘容量等等,当在只有一个CPU(核)的机器上要运行两个程序时,在某一个时刻CPU到底该运行哪个程序呢?

这显然不是程序1应该关心的事情,当然,也不是程序2该关心的事情,这就需要必须得有一个什么程序来关心,这个程序就是操作系统。
操作系统存在的目的就是为了合理的给各个运行起来后的程序分配资源,从这个角度你可以把操作系统理解为一个资源分配器
显然你不能把CPU切成多个小的CPU,而只能采用“分时”的策略,也就是“你用一会我用一会”,这就好比大家去游乐场玩过山车,由于过山车只有一个,而且不能拆分成更小的给大家用,因此大家只能排队,你用一会我用一会;
操作系统也采用此策略将CPU资源分配给各个进程,因此从操作系统的角度看“进程A用一会CPU后然后暂停,进程B再用一会儿”,即,操作系统不断的将CPU在各个进程之间切换,只不过切换的速度足够快,因此从用户看来进程在同时运行;操作系统决定以什么样的顺序将CPU分配给各个进程就是所谓的进程调度。

而像内存或者磁盘这类存储资源与CPU不同,我们可以很方便的将内存进行划分,因此可以采用“分块”的策略,也就是“ 你用一块我用一块”,这就是好比停车位,一个停车场中有很多停车位,大家可以同时去停车场中停车。
内存也是同样的道理,我们可以将内存的划分给不同的进程,因此不同的进程可以同时存在于内存中。
为高效使用有限的内存资源,操作系统在内存的使用上可谓绞尽脑汁,虚拟内存就是精彩的发明,其可以让更多进程常驻内存,当然,虚拟内存也带来不小的挑战,这些都需要靠软硬件结合来解决。

资源隔离与秩序维护者
程序A的运行不能干扰到程序B,即,如果程序A出现bug导致崩溃,那么它不能影响到系统中的其它程序,当然也包括操作系统这个程序;

程序A决不能随意访问程序B所在的内存区域等等,你肯定不希望其它程序能直接获取你的聊天信息,这些都需要操作系统进行资源隔离。
除此之外,复杂的任务需要借助多个程序通力合作才能完成,因此程序之间除了隔离之外也必须进行必要的通信,比如进程间通信等,这时操作系统必须提供必要的同步以及互斥机制,确保程序对共享资源的访问以及程序的运行顺序符合程序员的预期。
因此从这个角度看操作系统又是资源隔离与秩序维护者。

细节屏蔽者
操作系统和TCP/IP协议栈的作用是类似的,如果没有TCP/IP协议栈,那么在发送网络数据时你需要自己填写好tcp协议header,维护好tcp的链接状态,发送前要进行三次握手,发送的过程中需要保证数据包的可靠传输、还要自己维护tcp的拥塞控制等等,搞定tcp协议还不算完,不要忘了还有ip协议,除此之外还有数据链路层等等,如果这一切都要自己搞定,相信没有多少程序员能进行网络编程,而且大部分程序员在编写网络程序时相信对这些细节也不感兴趣。
这时tcp/ip协议栈就非常重要了,它通过socket对上层程序员屏蔽了网络的复杂度,程序员仅需要调用send/recv即可进行网络数据的收发,这大大简化了网络编程,因此你可以把内核中负责处理tcp/ip的那一部分理解为计算机网络的”操作系统“。
而操作系统也是同样的道理,我们知道真正完成计算任务的是硬件,hardware,而硬件本身通常是非常难以编程的,尤其设计I/O的部分,因为这非常的细节、非常琐碎,程序员在读写文件时大概率不想关心要读写的数据到底保存在磁盘的哪个盘面、哪个柱面、哪个扇区上,也不想关心该使用什么样的机器指令可以控制磁盘的读写、怎样平衡好读写速率与磁盘寿命等等,你需要的是两个read/write函数就能读写文件这种抽象概念(实际上从磁盘的角度来说根本不存在文件这种概念)。

这时操作系统的作用就非常明显了,操作系统对上层应用屏蔽了底层的这些细节,让程序员可以将注意力放在自己的领域上。
因此,从这个角度看操作系统更像是一个细节屏蔽者,它提供的一个重要的功能就是:抽象,Abstraction。
好啦,关于这个话题今天就聊到这里,希望对大家理解操作系统有所帮助。
最后,我建了微信技术群,扫描下方二维码备注写“加群”二字即可,一起见证我们的成长。

相关阅读

  • 系统调用与函数调用有什么区别?

  • 大家新年好,我是小风哥,这是今年的第一篇技术文,我们来聊聊系统调用与普通的函数调用之间的区别。作为程序员你肯定写过无数的函数,假设有这样两个函数:void funcB() {}void func
  • 产品更新 | 网镜国产化操作系统版本正式上线

  • 关于本次网镜更新推文,小编想说我们为什么要做支持国产化操作系统的应用。为什么要毫不动摇坚持自主可控的“国产化”道路?不自主意味着需要在国际市场上高价采购;不可控意味着
  • 详解西门子PLC 中函数FC与FB的应用与区别

  • 关注“工控小师妹”学习更多电工知识!一、FB和FC区别1、FB功能块,带背景数据块 FC——功能,相当于函数;2、FB,FC块均相当于子程序,既可以调用其它FB,FC块,也可以被OB,FB,FC块调用;二、F
  • Linux Capabilities利用总结

  • 前言Linux对于权限的管理,系统权限只有root才有,对于普通用户只有一些有限的权限;而对于普通用户如果想进行一些权限以外的操作,之前主要有两种方法:一是通过sudo提权;二是通过SUI

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 为什么计算机需要操作系统?

  • 大家好,我是小风哥,提前祝大家新年快乐,这是年前的最后一篇技术文啦。今天我们从三个方面来简单聊聊为什么计算机系统操作系统这个话题。资源分配器如果你的CPU上只需要运行一
  • 系统调用与函数调用有什么区别?

  • 大家新年好,我是小风哥,这是今年的第一篇技术文,我们来聊聊系统调用与普通的函数调用之间的区别。作为程序员你肯定写过无数的函数,假设有这样两个函数:void funcB() {}void func
  • 深入理解Linux系统调用

  • 大家好,我是小风哥。在前两篇文章《为什么计算机需要操作系统》《系统调用与函数调用有什么区别》中我们了解了什么是系统调用、为什么需要系统调用、系统调用与函数调用有什
  • 世界糖尿病日||中医话中医糖尿病“消渴病”

  • 2022.11.14世 界 糖 尿 病 日控制血糖全身健康- 人人享有糖尿病健康管理 -中医话·糖尿病西医学中的糖尿病在中医归属于“消渴病”的范畴,消渴是以多饮、多食、多尿、身体消
  • 喜讯!25项科研成果获奖,获奖数创历史新高!

  • 本文转自北京中医药大学官方公众号近日,中华中医药学会公布了2022年度中华中医药学会科学技术奖励评审结果。我校前期积极进行相关宣讲、做好组织申报工作,并召开多轮专家论证
  • ChatGPT与超级个体的诞生

  • 大家好,我是小风哥,这是一份迟来的chatGPT评测。今天简单试了下,试完有想充会员的冲动,Google这么慌是有道理的,这东西的确有点颠覆的意思,使用过程中后背阵阵发凉,这个工具会让能