如何理解操作系统

news2024/11/29 3:55:01

路灯很多,希望你找到自己的月亮。

作者:阿润菜菜


目录

操作系统是什么

为什么设计操作系统

理解操作系统的作用 

 如何理解操作系统对软硬件管理?

操作系统为什么要对软硬件资源进行管理呢?

什么是系统调用和库函数

总结


操作系统是什么

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。在整个计算机软硬件架构中,操作系统的定位是: 一款进行软硬件资源管理,一款纯正的“搞管理”的软件

为什么要有操作系统?

我们知道对于一个程序而言,它为了保障自己的程序运行流畅,势必就会要求自己分配到的资源越多越好,但是计算机的资源总是有限的,大家都自顾自抢资源的话,要么就是大家一起跑不动,要么就是某几个程序把别的程序的资源都挤占掉。

更麻烦的是,由于程序设计者不可能预测到自己的程序会和什么样的别的程序同时在一个电脑中运行,所以很有可能出现某个程序的临时数据恰好和另一个程序关键数据很相似的情况,于是就会发生这个程序破坏了那个程序数据之类的问题。

更更麻烦的是,我们的电脑硬件也是由不同的厂商制造的,它们的底层硬件系统也各有不同,无论是消费者还是软件出产方肯定都不希望某个软件在这个型号的电脑上能跑,换一个就跑不了的情况。

因此,我们需要操作程序来作为一个协调者——操作系统(Operation System,OS)。

笼统的理解,操作系统包括

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库, shell程序等等

为什么设计操作系统

  • 与硬件交互(数据流),管理所有的软硬件资源

  • 为用户程序(应用程序)提供一个良好的执行环境

理解操作系统的作用 

操作系统在计算机系统中承上启下的地位:向下封装硬件,向上提供操作接口。

操作系统承上启下作用

 如何理解操作系统对软硬件管理?

对管理者进行建模:

  • 管理者本质:决策作用 对被管理对象的数据进行管理
  • 管理的本质:先描述,在组织

通过故事理解: 

我们知道管理者与被管理者,是不需要沟通的!像是我们在大学里,谁是管理者呢?又是如何管理我们的呢?

这里可以理解成三层结构,管理者就是我们的校长,起决策作用(如校长会拿到学生的各种数据,其中连续多次挂科的同学就可能受到被劝退的决策😰);中间层是辅导员,起决策被执行作用(传达领导精神,收集数据汇总),执行者就是我们学生,起参与执行作用。对应在计算机上,就是操作系统(管理者)硬件驱动(中间层)硬件或软件(被管理者)。 其中管理者是如何拿到 被管理者的数据的呢?就是通过辅导员收集提交的数据。对应在计算机上,就是操作系统会接收来自硬件驱动收集的数据。

类似于校长通过学生的数据进行管理:

计算机管理硬件:

  1. 描述起来,用struct结构体,记录各种信息
  2. 组织起来,用链表或其他高效的数据结构,将各个对象的数据进行组织集合

操作系统为什么要对软硬件资源进行管理呢?

操作系统对下通过管理好软硬件资源(手段),对上给用户提供良好(安全、稳定、高效、功能丰富等)的执行环境(目的) ​。

我们来看看银行是怎么运作的?在银行中参与执行任务的就是电脑服务器和座椅板凳这些,对应在计算机中的软硬件;IT部门会管理维护电脑服务器,保安会维护金库,就像是直接和硬件交互的硬件驱动;而银行行长就像是我们的操作系统,对软硬件各种资源进行管理和决策。

还有个问题,银行为我们用户提供各种非常好的服务,但是银行相信我们吗?答案是不会。因为银行既要给我们提供服务,同时又不会允许我们访问内部细节(不会让你随便进入金库),所以银行就会有窗口,进行柜台操作,既提供了相关服务,又保护了自身的安全。类似地操作系统也有这种需求,所以就会有操作系统的系统调用接口。

什么是系统调用和库函数

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用(OS设计的C函数)。

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

操作系统作为计算机硬件之上的第一层软件,给用户提供的接口有图形界面 GUI 和命令接口,给应用程序提供的是「程序接口」,这个程序接口就是由一组系统调用组成的,是操作系统提供给开发人员使用的。可以理解为一种可供应用程序调用的特殊函数,「应用程序可以通过系统调用来请求获得操作系统内核的服务」

我们平常写代码就是在应用层。 

总结

  • 操作系统本质上是一个运行在计算机上的软件程序 ,用于管理计算机硬件和软件资源

  • 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及进程的管理。内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性

  • 操作系统存在屏蔽了硬件层的复杂性。同时通过系统调用保证系统的稳定性和安全性,防止用户进行非法操作。

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

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

相关文章

【docker13】Redis面试题

面试题 问题: 1~2亿条数据需要缓存,请问如何设计这个存储案例? 回答: 单机单台不可能的,肯定是分布式存储(那如何用redis实现呢?) 解决1: 哈希取余分区 优点: 简单粗暴…

项目管理系统的类型

“系统”一词有两个不同的定义:一、定义某事如何完成的原则和程序,二、复杂整体的部分。因此,根据所使用的定义,项目管理系统也可以有两种不同的含义。 第一个是指定义如何执行项目的完整过程和原则系统。此定义包括所有项目管理以…

windows10上安装Python3.11.1

1)下载Python3.11.1 Python官网下载地址:https://www.python.org/ package意思是下载压缩安装包,installer是.exe的安装程序。 根据自己电脑需求选择,这里我选择的是64位 2)安装 双击安装包,进行安装。…

VScode编译调试C++环境

首先去官网下载vscodehttps://code.visualstudio.com/ 为了编译C/C,要使用gcc,Windows本身不支持gcc,所以有了MinGW,我用的是dev带的MinGW,也可以自己安装MinGW,或者用VS的编译器(MinGW gcc下载…

喜报!COSCon'22中国开源年会获评 2022 中国最受开发者欢迎的技术活动

2023 年 1 月 5 日,中国技术先锋年度评选2022 中国最受开发者欢迎的技术活动榜单正式发布。作为中国领先的新一代开发者社区,SegmentFault 思否依托社区活动板块(https://segmentfault.com/events)及全站数百万开发者用户行为数据…

浏览器怎么录制网页视频?3种网页视频录制方法

我们每天都会在浏览器上观看大量的视频,尤其是在爱奇艺、腾讯、哔哩哔哩等网页上。有时候就会观看到一些精彩的视频画面,就想要将这些画面给下载。那怎么把网页视频录制下来?今天本文就给大家分享3种有效的网页视频录制方法,有需要…

Linux 环境使用定时任务执行shell脚本

前言:Linux添加定时任务需要依赖crond服务,如果没有该服务,需要先安装:yum -y install crontabs 1、crond服务相关命令介绍 启动crond服务:service crond start 停止crond服务:service crond stop 重启cro…

【NI Multisim 14.0原理图设计基础——放置元器件】

目录 序言 🍉 一、放置元器件 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设计者方便、快捷地使用虚拟元器件和仪器、仪表进行电路设计和仿真。 首先启动NI Multisim 14.0,打开如图所示的启动界面,完成初始化后&…

第一行代码Androiod第三版 笔记 第九章丰富你的程序,运用手机多媒体

文章目录前言一、通知渠道是什么?二、快速入门1. 书写通知2.通知有了 ,点击也没动静啊- PendingIntent3 点击完之后,通知不消失怎么办4 通过setStyle() 来是实现长文字通知5 还想放张图6 不同通知之间也有等级差异三、 使用相机7 调用相机8 从…

Linux工具学习之【gcc/g++】

✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Whatever is worth doing is worth doing well. 任何值得去做的事情&#xff0…

SpringBoot中使用Swagger详解

在Spring Boot中规范的使用Swagger进行接口测试 文章目录Swagger是什么?为什么要用Swagger?准备工作创建项目编写接口验证高级配置文档注释接口过滤自定义响应SwaggerUI的使用遇到的问题:Swagger是什么? Swagger是一套基于OpenAP…

【Kubernetes 企业项目实战】02、基于 Prometheus 和 K8s 构建智能化监控告警系统(上)

目录 一、Prometheus 基本介绍 二、Prometheus 特点 样本 三、Prometheus 组件介绍 四、Prometheus 工作流程 五、Prometheus 和 zabbix 对比分析 六、Prometheus 的几种部署模式 6.1 基本高可用模式 6.2 基本高可用 远程存储 6.3 基本 HA 远程存储 联邦集群方案…

Word文档内容如何添加双删除线

我们有时需要在Word里面添加双删除线,那么怎么添加呢?看看小编是怎么操作的吧。 首先,运行speedoffice并打开Word文件,选中需要添加双删除线的内容; 然后,点击鼠标右键,在右键菜单中选择“高级…

如何搭建云进销存-采购管理系统?

1、简介 1.1、案例简介 本文将介绍,如何搭建云进销存-采购管理。 1.2、应用场景 云进销存-采购管理应用支持多种商品特性管理,灵活适配不同主流行业商品管理要求,并可通过报表追溯查询,实现差异化的品类管理及分析。 2、设置…

【Linux】-- 进程终止进程等待

目录 深入理解fork 进程终止 进程常见退出场景 退出码 总结 进程等待 进程等待必要性 wait与waitpid 阻塞等待 非阻塞等待 总结 深入理解fork 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为…

Rhce第三次作业

1. 基于同一IP的不同端口访问不同的网站(可以通过域名去访问)ipport1 -> 对应一个域名ipport2 -> 对应一个域名使用域名1我应该访问到 ipport1对应的内容使用域名2我应该访问到 ipport2对应的内容/etc/hosts文件下写入ip和域名,进行域名解析写入192.168.137.1…

vue3学习笔记之TransitionTransitionGroup

文章目录Transition&TransitionGroup动画组件1. Transition1.1 Transition API1.2 基于CSS的过渡效果自定义过渡class Animate动画库同时使用 transition 和 animation深层级过渡与显式过渡时长duration(总持续时间)1.3 JavaScript 钩子 GreenSock…

FPGA知识汇集-GPGPU与FPGA

虽然FPGA的功能很强大,但是并非所有的设计都会使用到这样的芯片。很多系统架构师在开始的时候会斟酌到底是使用FPGA还是其他的代替方案,例如GPGPU(通用的图形处理单元)。 由于GPGPU特有的架构和处理能力,在很多现代的设…

SpringBoot+VUE前后端分离项目学习笔记 - 【20 权限菜单 上】

数据库 新建sys_role角色表 与sys_menu菜单表 CREATE TABLE sys_role (id int NOT NULL AUTO_INCREMENT COMMENT id,name varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 名称,description varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 描述…

【C++】list模拟实现

看源码观察结构 由源码可以得知,list的底层是带头双向循环链表 — 结点类模拟实现 list实际上是一个带头双向循环链表,要实现list,则首先需要实现一个结点类,而一个结点需要存储的信息为:数据、前驱指针、后继指针 而对于该结点类的成员函数来说,我们只需实现一个构造函数即…