0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

小林coding 来源:码农的荒岛求生 2023-02-03 11:00 次阅读

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

资源分配器

资源隔离与秩序维护者

细节屏蔽者

资源分配器

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

95254d74-a323-11ed-bfe3-dac502259ad0.png

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

9533bd14-a323-11ed-bfe3-dac502259ad0.png

这显然不是程序1应该关心的事情,当然,也不是程序2该关心的事情,这就需要必须得有一个什么程序来关心,这个程序就是操作系统。

操作系统存在的目的就是为了合理的给各个运行起来后的程序分配资源,从这个角度你可以把操作系统理解为一个资源分配器。

显然你不能把CPU切成多个小的CPU,而只能采用“分时”的策略,也就是“你用一会我用一会”,这就好比大家去游乐场玩过山车,由于过山车只有一个,而且不能拆分成更小的给大家用,因此大家只能排队,你用一会我用一会;

操作系统也采用此策略将CPU资源分配给各个进程,因此从操作系统的角度看“进程A用一会CPU后然后暂停,进程B再用一会儿”,即,操作系统不断的将CPU在各个进程之间切换,只不过切换的速度足够快,因此从用户看来进程在同时运行;操作系统决定以什么样的顺序将CPU分配给各个进程就是所谓的进程调度。

9557b30e-a323-11ed-bfe3-dac502259ad0.png

而像内存或者磁盘这类存储资源与CPU不同,我们可以很方便的将内存进行划分,因此可以采用“分块”的策略,也就是“ 你用一块我用一块”,这就是好比停车位,一个停车场中有很多停车位,大家可以同时去停车场中停车。

内存也是同样的道理,我们可以将内存的划分给不同的进程,因此不同的进程可以同时存在于内存中。

为高效使用有限的内存资源,操作系统在内存的使用上可谓绞尽脑汁,虚拟内存就是精彩的发明,其可以让更多进程常驻内存,当然,虚拟内存也带来不小的挑战,这些都需要靠软硬件结合来解决。

资源隔离与秩序维护者

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

95954f52-a323-11ed-bfe3-dac502259ad0.png

程序A决不能随意访问程序B所在的内存区域等等,你肯定不希望其它程序能直接获取你的聊天信息,这些都需要操作系统进行资源隔离。

除此之外,复杂的任务需要借助多个程序通力合作才能完成,因此程序之间除了隔离之外也必须进行必要的通信,比如进程间通信等,这时操作系统必须提供必要的同步以及互斥机制,确保程序对共享资源的访问以及程序的运行顺序符合程序员的预期。

因此从这个角度看操作系统又是资源隔离与秩序维护者。

细节屏蔽者

操作系统和TCP/IP协议栈的作用是类似的,如果没有TCP/IP协议栈,那么在发送网络数据时你需要自己填写好tcp协议header,维护好tcp的链接状态,发送前要进行三次握手,发送的过程中需要保证数据包的可靠传输、还要自己维护tcp的拥塞控制等等,搞定tcp协议还不算完,不要忘了还有ip协议。

除此之外还有数据链路层等等,如果这一切都要自己搞定,相信没有多少程序员能进行网络编程,而且大部分程序员在编写网络程序时相信对这些细节也不感兴趣。

这时tcp/ip协议栈就非常重要了,它通过socket对上层程序员屏蔽了网络的复杂度,程序员仅需要调用send/recv即可进行网络数据的收发,这大大简化了网络编程,因此你可以把内核中负责处理tcp/ip的那一部分理解为计算机网络的”操作系统“。

而操作系统也是同样的道理,我们知道真正完成计算任务的是硬件,hardware,而硬件本身通常是非常难以编程的,尤其设计I/O的部分。

因为这非常的细节、非常琐碎,程序员在读写文件时大概率不想关心要读写的数据到底保存在磁盘的哪个盘面、哪个柱面、哪个扇区上,也不想关心该使用什么样的机器指令可以控制磁盘的读写、怎样平衡好读写速率与磁盘寿命等等,你需要的是两个read/write函数就能读写文件这种抽象概念(实际上从磁盘的角度来说根本不存在文件这种概念)。

95a975ae-a323-11ed-bfe3-dac502259ad0.png

这时操作系统的作用就非常明显了,操作系统对上层应用屏蔽了底层的这些细节,让程序员可以将注意力放在自己的领域上。

因此,从这个角度看操作系统更像是一个细节屏蔽者,它提供的一个重要的功能就是:抽象,Abstraction。

好啦,关于这个话题今天就聊到这里,希望对大家理解操作系统有所帮助。

历史好文:

4G 内存的机器上,申请 8G 内存会怎么样?

键盘敲入 A 字母时,操作系统期间发生了什么...

真棒!20 张图揭开内存管理的迷雾,瞬间豁然开朗

进程和线程基础知识全家桶,30 张图一套带走

多个线程为了同个资源打起架来了,该如何让他们安分?

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211568
  • 计算机
    +关注

    关注

    19

    文章

    7488

    浏览量

    87847
  • 操作系统
    +关注

    关注

    37

    文章

    6801

    浏览量

    123280
  • 分配器
    +关注

    关注

    0

    文章

    193

    浏览量

    25746
  • 程序
    +关注

    关注

    117

    文章

    3785

    浏览量

    81000

原文标题:为什么计算机需要操作系统?

文章出处:【微信号:小林coding,微信公众号:小林coding】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    计算机操作系统PPT

    计算机操作系统PPT操作系统引论(1章)进程管理(2-3章)存储管理(4章)设备管理(5章)文件管理(6章)操作系统接口(7章)系统安全性(
    发表于 11-07 11:19

    计算机软件与操作系统

    计算机软件与操作系统  功能强大的计算机自从走进了人类的生活就发挥着越来越重要的作用,随着时代的发展,计算机已与人们的日常生活息息相关。不能不说计算
    发表于 09-13 10:09

    计算机操作系统

    计算机操作系统-进程(2)进程的状态与转换
    发表于 05-25 16:45

    什么是计算机操作系统

    什么是计算机操作系统操作系统是一种为应用程序提供服务的系统软件,是一个完整的计算机系统的有机组成部分。从层次上来看,
    发表于 12-14 06:50

    计算机操作系统课件

    计算机操作系统课件内容如下第1章  计算机操作系统概述.ppt1.1  存储程序式计算机模型1.2 
    发表于 11-07 09:43 0次下载
    <b class='flag-5'>计算机</b><b class='flag-5'>操作系统</b>课件

    2004年计算机操作系统试题

    计算机专业计算机操作系统试题 2004年1月一、选择题(选择一个正确答案的代号填入括号中,共40分)1.操作系统是为了提高计算机的C1](
    发表于 01-07 19:24 2次下载

    计算机操作系统》课程教学探讨

    计算机操作系统课是一门涉及知识面广的专业基础课程,该课程的教学一直在计算机专业教学计划中居重要位置.本文在分析了目前国内计算机操作系统教学现
    发表于 04-18 21:12 48次下载

    计算机操作系统试题及答案

    计算机操作系统试题及答案。
    发表于 11-12 16:41 0次下载

    计算机操作系统原理与设计

    计算机操作系统原理与设计算机操作系统原理与设计 计算机操作系统原理与设计
    发表于 06-03 14:30 42次下载

    操作系统是什么?计算机操作系统的详细资料介绍

    操作系统计算机学科的基础课程,是理解计算机运行原理的重要基石,学习操作系统不仅能够让编程人员了解计算机运行逻辑而且还有助于培养编程“软实力
    的头像 发表于 02-04 12:24 1.7w次阅读
    <b class='flag-5'>操作系统</b>是什么?<b class='flag-5'>计算机</b><b class='flag-5'>操作系统</b>的详细资料介绍

    计算机操作系统的几种分类方式

    操作系统是管理计算机硬件与软件的计算机程序,是计算机系统的核心,是计算机系统中最基础和最重要的系统
    的头像 发表于 03-21 14:58 2w次阅读

    计算机操作系统的最基本特征是什么_计算机操作系统是什么的接口

    计算机操作系统是用户与计算机的接口,在计算机中,操作系统是其最基本也是最重要的基础性系统软件;
    发表于 09-03 15:36 1.5w次阅读

    “鸿蒙”操作系统关键特性解读

    1、计算机为什么需要操作系统? 大部分人认为,操作系统本来就是与计算机(IT设备)一体的。究竟计算机
    的头像 发表于 12-17 16:27 2491次阅读

    鸿蒙操作系统的关键特性

      1、计算机为什么需要操作系统? 大部分人认为,操作系统本来就是与计算机(IT设备)一体的。究竟计算机
    的头像 发表于 12-24 16:53 2283次阅读
    鸿蒙<b class='flag-5'>操作系统</b>的关键特性

    三个维度剖析为何计算机需要操作系统

    今天我们从三个方面来简单聊聊为什么计算机需要操作系统这个话题。 ##### **资源分配器** 如果你的CPU上只需要运行一个程序,那么你的确不
    的头像 发表于 02-15 11:50 977次阅读
    三个维度剖析为何<b class='flag-5'>计算机</b><b class='flag-5'>需要</b><b class='flag-5'>操作系统</b>