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

news2024/10/10 10:31:56

当计算机只运行一个程序时,只需将所有的资源(CPU、内存、磁盘等)分配给这一个程序就行;当计算机同时运行2个或以上程序时,操作系统就需要充当一下角色:

  1. 资源分配器
  2. 资源隔离与秩序维护者
  3. 细节屏蔽者

一. 资源分配器

计算机的硬件就那么多,多个同时运行的程序就会争抢资源,那不就乱套了?这时,操作系统可以合理地给各个运行起来的程序分配资源,从这个角度,可以将操作系统理解成一个资源分配器

  1. 操作系统对CPU的分配
    操作系统对CPU的分配采用的是“分时”的策略,就是各个进程轮换使用CPU;即:进程A使用一会儿,然后暂停,进程B又使用一会,再暂停…;每一次使用的时间超级短,所以咱们看这些软件好像在同时运行;而进程使用CPU的顺序就是操作系统的进程调度
  2. 操作系统对内存和磁盘的分配
    操作系统对内存和磁盘的分配采用的是“分块”的策略,就是将内存或磁盘分为一块一块的,再分给每一个进程;除此之外,虚拟内存是操作系统在内存的使用上做的精彩的发明。点击链接可以看我之前的文章:磁盘与内存的亲密关系 -磁盘缓存和虚拟内存

二. 资源隔离与秩序维护者

多个同时运行的程序之间不能相互影响,也不能随意访问其他程序的内存区域等,这些都是需要操作系统进行资源隔离

另外,复杂的功能也需要多个进程合作完成,所以程序之间有时也需要进行通信,比如进程间通信等;这时操作系统必须提供必要的同步以及互斥机制,确保程序对共享资源的访问以及程序的运行顺序符合程序员的预期。

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

三. 细节屏蔽者

我们知道真正完成计算任务的是硬件,hardware,而硬件本身通常是非常难以编程的,因为这非常的细节、非常琐碎,程序员在读写文件时大概率不想关心要读写的数据到底保存在磁盘的哪个盘面、哪个柱面、哪个扇区上,也不想关心该使用什么样的机器指令可以控制磁盘的读写、怎样平衡好读写速率与磁盘寿命等等,你需要的是两个read/write函数就能读写文件这种抽象概念(实际上从磁盘的角度来说根本不存在文件这种概念)。
在这里插入图片描述
这时操作系统的作用就非常明显了,操作系统对上层应用屏蔽了底层的这些细节,让程序员可以将注意力放在自己的领域上。
因此,从这个角度看操作系统更像是一个细节屏蔽者,它提供的一个重要的功能就是:抽象,Abstraction。

四. 说明

本文为公众号:码农的荒岛求生,中的文章《为什么计算机需要操作系统?》的读书笔记,如有错误,请兄弟们指正,大家一起进步!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot整合第三方技术及整合案例

Springboot整合第三方技术一、Springboot整合Junit1、步骤2、classes属性二、整合Mybatis1、步骤2、常见问题三、整合Mybatis-plus1、步骤2、常见配置四、整合Druid1、步骤五、整合案例-数据层(基础的CRUD)1、创建springboot项目手工导入starter坐标2、配…

【正点原子FPGA连载】第二十六章gpio子系统简介 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十六章gpio子…

NVDLA Xilinx FPGA Mapping

Lei WangLeiWang1999要当世界第一!78357联系我常用的链接1. 1. 硬件系统设计概述1.1. 1.1 RTL 生成1.2. 1.2 IP Package1.2.1. 1.2.1 csb2apb1.2.2. 1.2.2 关闭 Clock Gating1.2.3. 1.2.3 IP Package1.3. 1.3 Block Design1.4. 1.4 Generate Bit HDF1.5. 1.5 Sanity…

java基础一JVM之JRE、JDK、解释器、编译器详解

1.JVM、JRE和JDK区别 1.JVM( Java Virtual Machine ): Java虚拟机,它是整个 Java 实现跨平台的最核心的部分,所有的 Java 程序会首先被编译为 .class 的类文件,这种类文件可以在虚拟机上执行,…

3.10-动态规划-01背包问题

问题描述,给定n种物品和一个背包。物品 i 的重量是 wi ,其价值为 vi ,背包的容量为 c ,问应该如何选择装入背包中的物品,使得装入背包的物品总价值最大? 写在前面 dp数组的含义--dp[i][j]表述容量为j 已经…

【计算机体系结构-03】ISA (Instruction Set Architecture) 指令集架构特性

1. 指令的类型 上一篇文章里主要介绍了几种机器模型,有机器模型后需要知道计算机有什么样的基本指令,接下来就来看看指令都有哪些类型。 [注]:以下指令主要为 MIPS 指令。 类型指令数据传输LD、ST、MFC1、MTC1、MFC0、MTC0计算ADD、SUB、AN…

Vue3和Vue2的slot-scope插槽用法

目录 🧨🧨🧨第一种插槽(匿名插槽) 🧨🧨🧨第二种插槽(具名插槽)以及插槽简写 具名插槽的使用 🧨🧨🧨第三种插槽(作用域插…

使用HTTP代理后,网速反而变慢是什么原因?

如今越来越多的人利用HTTP代理开展业务,但在实际使用时,经常会有用户发现使用了HTTP代理后,网速非但没有变快,反而还更慢了。我们今天就来说说,这是什么原因造成的,从根本入手对于我们能更有利的解决问题。…

2.Spring IOC

目录 一.如何进行注册 二、如何进行注入 三、扫描注解的原理 反射文件操作 四、什么是IOC/DI? 五、演示使用Spring开发的案例:用户管理|登陆、注册 五、常见错误总结 1、注解使用Repository 2、UserController的构造方法注入: 3、…

【FreeRTOS】第一章:介绍

FreeRTOS是什么? Free和RTOS,Free就是免费的、自由的意思,RTOS 全称是 Real Time Operating System。中文名就是实时操作系统。可以看出FreeROTS 就是一个免费的 RTOS 类系统。这里要注意,RTOS 不是指某一个确定的系统,而是指一类…

联想电脑安装ubuntu18.04双系统超详细教程(23年最新教程,99%成功率)

文章目录前言电脑配置制作系统盘安装ubuntu系统更新显卡驱动安装wifi驱动完成前言 ubtuntu的长期支持版本现在应该已经出道21.04版本了,如果你对于版本没有要求的话,建议直接安装最新版ubuntu,因为新版的系统驱动都会进行更新,也…

自学 Java 怎么入门?

玩Java多年的老司机带你上车全面系统学习Java,并且还能教你如何学习才能在今年拿到一份不错的offer。 说到系统全面,就是以目前绝大部分公司招聘要求的知识内容为基准,毕竟我们学习Java都是为了高薪工作,《史记》中说”天下熙熙皆…

2.【SpringBoot源码】SpringBoot核心启动流程

目录 一、简介 二、创建SpringApplication对象 1)、推导出当前启动的项目的类型 2)、设置Initializer初始化器 3)、初始化Listener监听器 4)、反推出main方法所在的Class对象 三、运行SpringApplication#run(java.lang.String...)方法 1)、获取运行监听器 2)、发布…

unity使用对象池实现冲锋留下的残影效果

目录 效果展示 实现思路 残影代码 对象池代码 控制冲刺产生残影 CD冷却图标 效果展示 实现思路 对象池,有想要用的物体时可以从池子里取,用完再放回去。 因为在生成残影再销毁,这个过程中创建和销毁都需要耗费大量资源,因此…

shell 条件测试详解

目录 shell条件测试 一,条件测试的基本语法 1,test 2,[ ] 3,[[ ]] 二,文件测试表达式 1,判断目录是否存在: 2,判断文件file1是否有写的权限,结果为有 3&#xf…

重学MySQL基础(一)

文章目录重学MySQL基础(一)MySQL 连接管理MySQL字符编码InnoDB 记录存储结构InnoDB 表的主键生成策略:InnoDB 数据页结构页目录页的效验和索引事务报错记录在MySQL中创建函数时出现这种错误恶补SQL语句SQL中的条件语句SQL中的字符串函数SQL中…

python调用go语言踩坑记录

目录 基本操作 1 在go文件中加注释,设置为导出方法,导出C依赖 2 导出so文件(mac或者linux下只需要so) 3 进行调用 报错记录 踩坑1 关于结构体 2 cannot use (_Cfunc_CString)("12345") (value of type *_Ctype_char) as ty…

spring中事务失效场景

文章目录spring中事务失效场景一、权限访问问题二、方法用final修饰三、无事务嵌套有事务的方法四、没有被spring管理五、设计的表不支持事务六、没有开启事务七、错误的事务传播八、自己捕获了异常九、手动抛出别的异常十、自定义回滚异常spring中事务失效场景 一、权限访问问…

软件研发管理经验总结 - 事务管理

软件研发管理经验总结 - 事务管理 相关系列文章 软件产品研发管理经验总结-管理细分 软件研发管理经验总结 - 事务管理 目录软件研发管理经验总结 - 事务管理一、概述二、事务管理过程1、制定开发计划2、启动会议3、阅读前一天的日报4、例会/早会5、调整计划6、协调资源7、日报…

LeetCode——2325. 解密消息

一、题目 给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下: 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐,形成对照表。 按照对照表…