Code前端首页关于Code前端联系我们

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

terry 2年前 (2023-09-27) 阅读数 94 #数据结构与算法

我们从三个角度简单谈谈计算机操作系统。

资源分配器

如果您的CPU上只需要一个程序,那么您真的不需要操作系统。

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

但是,当你必须在CPU上运行另一个程序时,你立即面临一个问题:两个程序开始争夺资源因为计算机的硬件太多了:处理器数量有限,数量有限。由于内存容量、磁盘容量有限等原因,当在只有一个处理器(核心)的机器上运行两个程序时,CPU 在给定时间应该运行哪个程序?

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

当然,这不是程序1应该关心的事情。当然,程序2不应该关心这个。这需要一个关心它的程序。该程序是一个操作系统。

操作系统的目的就是为每个运行的程序合理分配资源。 从这个角度来说,你可以把操作系统理解为一个资源分配器

当然,你不能把CPU切成几个小CPU,只能采用“分时策略”,即“你用一会,我用一会”。这就像去游乐园玩过山车一样。由于只有一部过山车,无法分成较小的供大家使用,所以大家只能排队。你穿一会,我穿一会;

操作系统也采用这种策略为各个进程分配CPU资源,所以从操作系统的角度来看,“进程A使用CPU一段时间然后停止,进程B使用CPU一段时间。” 》即操作系统不断地在进程之间切换CPU,但切换速度足够快,因此在用户看来,进程是在同时运行的;操作系统决定将CPU分配给不同进程的顺序称为进程调度。

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

内存或磁盘等存储资源与处理器不同。我们可以很容易地共享内存,因此我们可以使用“阻塞”策略,即“你用一块,我用一块”。这就好比停车场,停车场里有很多停车位,每个人都可以同时停在停车场里。

这同样适用于内存。我们可以将内存划分为不同的进程,这样不同的进程就可以同时在内存中

为了高效地利用有限的内存资源,操作系统对内存的使用达到了疯狂的程度。虚拟内存是一项奇妙的发明,它可以让更多的进程保存在内存中。当然,虚拟内存也带来了很多问题。挑战,必须通过软件和硬件的结合来解决。

资源隔离和秩序维护者

程序A的运行不能干扰程序B。即如果程序A出现错误导致崩溃,则不能影响系统中的其他程序,包括操作系统。当然。 ;

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

不允许程序A随意使用程序B所在的内存区域等等,你确实不希望其他程序直接获取你的聊天数据。这些需要隔离操作系统资源。

此外,复杂的任务需要多个程序的合作。因此,程序之间除了隔离之外,还必须进行必要的通信,比如进程之间的通信。当前,操作系统必须提供必要的同步和互斥机制,以保证程序对共享资源的访问以及程序的运行健康度满足程序员的期望。

从这个角度来看,操作系统也是资源隔离和秩序的维护者。

信息屏蔽器

操作系统和TCP/IP协议栈的功能类似。如果没有TCP/IP协议栈,发送网络数据时需要自己填充tcp协议头,并且维护tcp链接状态需要在发送前进行三次握手。在传输过程中,需要保证数据包的可靠传输,维护TCP拥塞控制等。仅仅运行TCP协议是不够的。不要忘记还有IP 协议。另外,另外还有数据链路层等等。 如果这一切都需要你自己来做的话,我相信很多程序员都无法对网络进行编程,并且大多数程序员认为在编写网络程序时这些细节就都明白了。也不感兴趣。

tcp/ip协议栈现在非常重要。它通过套接字使高级程序员免受网络复杂性的影响。程序员只需调用send/recv即可发送和接收网络数据,大大简化了组网。通过编程,您可以将负责处理 tcp/ip 的内核部分视为计算机网络的“操作系统”。

这同样适用于操作系统。我们知道,真正执行计算任务的是硬件,而硬件本身通常很难编程,尤其是I/O设计,因为它非常详细和琐碎。在读写文件时,程序员可能不想关心正在读取或写入的数据存储在哪个磁盘表面、柱面或磁盘扇区上,也不想关心应该使用哪些机器指令。管理磁盘读写。如何平衡读写速度和磁盘寿命等,需要两个读/写操作能够读写文件的抽象概念(实际上,从磁盘的角度来看,文件的概念并不存在)全部)。

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

操作系统的作用目前非常明显。操作系统保护底层细节不受上层应用程序的影响,让程序员可以专注于自己的领域。

因此,从这个角度来看,操作系统不仅仅是细节的覆盖。它提供的一个重要功能就是:抽象。

来自 程序员的荒岛求生 by 程序员的荒岛求生

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门