当前位置: 首页 > news >正文

初识操作系统

目录

1.操作系统是什么

2.为什么要有操作系统

3.操作系统的相关关系

1.驱动程序

2.系统调用接口

3.用户调用接口

4.用户程序

4.用具体的例子理解操作系统


 

 

 

 


1.操作系统是什么

 

5dff43df89834d61b1092a3f78e2da7c.jpeg

 

(1)操作系统是一组管理计算机硬件与软件资源的计算机软件程序 。

(2)它可以控制和管理整个计算机系统的运行,合理地组织和调度计算机的工作和资源的分配,提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。

(3)操作系统可以分为命令接口(比如Linux),程序接口和图形用户界面(比如Windows)等类型。

 

2.为什么要有操作系统

 

我们难道不可以直接使用资源吗?当然不行,这就像你去银行取钱,总不可能直接让你去金库拿钱吧!

(1)操作系统可以管理和控制计算机的硬件和软件资源,如处理器,内存,磁盘,网络等,提高计算机的性能和效率。如果没有操作系统,每个程序都要直接面向硬件进行操作,这样会很复杂和低效,而且可能会破坏硬件。

(2)操作系统可以提供给用户和其他软件方便的接口和环境,如命令行,图形用户界面,触摸等,让用户可以访便地使用计算机完成各种任务。如果没有操作系统,用户就要学习很多专业的知识,如数字电路,计算机组成原理等,才能操作计算机。

(3)操作系统可以提供一些经典的案例和思路,帮助程序员解决一些常见的问题,如多线程编程,网络编程,文件管理等。
总之,操作系统是一种介于硬件和用户之间的特殊的软件,它为计算机提供了更高层次的抽象和服务。

 

3.操作系统的相关关系

说了这么多,那操作系统到底是怎样管理计算机硬件与软件资源的呢?

 

 8ced38f8d90049f9aba91ab6e692bd44.webp

 

我们来一步步分析上面的结构

1.驱动程序

我们可以发现,操作系统并没有直接访问硬件,这是为什么?

(1)兼容性:不同的硬件设备可能有不同的接口和通信协议,如果操作系统要直接控制它们,就要了解每一种设备的细节。这样会增加操作系统的复杂度和维护成本。操作系统通过使用驱动程序,把硬件的细节封装起来,提供统一的接口给用户程序,这样可以提高操作系统和硬件的兼容性

(2)效率:操作系统要管理多个用户程序和多个硬件设备,如果直接控制硬件,就需要频繁地切换上下文和状态。这样会降低操作系统的效率和响应速度。操作系统通过使用中断、缓冲区、虚拟内存等技术,减少对硬件的直接访问,提高对硬件的利用率,这样可以提高操作系统和硬件的效率
 

这个时候就需要驱动程序出马了。

(1)驱动程序是一种可以使计算机和设备通信的特殊程序,相当于硬件的接口。操作系统只有通过这个接口,才能控制硬件设备的工作 。

(2)驱动程序将操作系统的指令和数据转化为硬件可以识别和执行的机器语言,或者将硬件的反馈转化为操作系统可以理解的信息

(3)驱动程序可以把硬件的细节封装起来,提供统一的接口给用户程序。这样可以提高安全性、兼容性和效率 。

 

2.系统调用接口

系统调用接口是操作系统提供给用户程序访问系统资源和服务的一种方式,它是用户态和内核态之间的桥梁。有了系统调用接口,用户程序就可以通过中断指令(如int 0x80)向操作系统发出请求,而无需直接操作硬件或者了解操作系统的内部实现细节。系统调用接口的作用有以下几点 :

(1)保护系统资源,防止用户程序对系统资源的滥用或破坏,提高系统的安全性和稳定性。


(2)提供方便的机制,使用户程序可以与操作系统进行交互,使用操作系统的功能和服务,如文件操作、进程管理、网络通信等。


(3)隐藏操作系统的复杂性,提供统一的抽象层,使用户程序不需要关心不同硬件平台或操作系统的差异,提高程序的可移植性和兼容性

 

3.用户调用接口

然而我们平时使用计算机的时候并没有直接使用系统调用接口,因为使用系统调用接口的学习成本很大,于是就有了用户调用接口。
 

9c7c71caf5c349ecbd90ab3093830c4a.png 

 

(1)用户调用接口是用户和系统之间进行交互和信息交换的媒介,它可以分为命令接口和程序接口两种。

(2)命令接口是普通用户与操作系统的接口,可以通过键盘命令、 图形界面使用操作系统的功能。

(3)程序接口是应用程序与操作系统的接口,可以通过系统功能调用来请求操作系统的服务,如文件操作、进程管理、网络通信等。

(4)用户调用接口使用户可以通过命令或程序来使用操作系统的功能和服务,而无需了解操作系统的内部实现细节,这样可以提高用户的效率和体验,也可以减少用户程序对系统资源的误用或破坏的风险

 

4.用户程序

还记得我们刚开始学编程,用printf函数打印的“Hello World”吗?printf函数就算是一个用户程序。

所以,用户程序可以用不同的编程语言来编写,不同的编程语言有不同的语法和风格,但最终都要被编译或解释成机器能够识别和执行的指令。用户程序通过用户调用接口或系统调用接口来与操作系统交互,利用操作系统提供的功能和服务来完成各种任务。我们平时使用的各种应用软件,如文本编辑器、浏览器、游戏等,都是由用户或厂商程序编写的,也都需要通过用户调用接口或系统调用接口来与操作系统交互。

比如我平时玩的游戏,也是一个用户程序

 

4.用具体的例子理解操作系统

我们用学校管理学生的例子来理解操作系统是如何管理硬件资源的。

在学校里,校长就是管理者,虽然我们平时都很少或者几乎没有见过校长,但是校长却可以很好的管理学生。这说明管理者和被管理者并没有直接进行沟通,校长是通过联系辅导员来管理学生的。如果说校长是操作系统,辅导员就是驱动程序,学生就是硬件。

辅导员会把学生的信息用各种指标描述,比如成绩,学分,年级等等,描述学生的过程就是把学生数据化的过程,而这些需要用一个东西组织关联起来,这时候我们就可以使用各种数据结构来组织数据了。

b01a55a1349d41ea8630a10fe59d089d.png

 

总结下来,管理分两步,首先描述管理对象的各种属性,然后再用各种数据结构把这些数据组织起来。

 

 

 

相关文章:

初识操作系统

目录 1.操作系统是什么 2.为什么要有操作系统 3.操作系统的相关关系 1.驱动程序 2.系统调用接口 3.用户调用接口 4.用户程序 4.用具体的例子理解操作系统 1.操作系统是什么 (1)操作系统是一组管理计算机硬件与软件资源的计算机软件程序 。 (…...

#详细介绍!!!线程池

本篇详细: 1.介绍了什么是线程池 2.使用线程池有什么好处 3.线程池的工作流程 4.线程池的各个参数介绍 5.如何编写Java代码来创建线程池 6.使用线程池的注意事项 目录 一:什么是线程池 二:为什么使用线程池来管理线程 三:线程池…...

【嵌入式Linux学习笔记】基于Linux官方库的标准外设驱动

对于标准的外设如LED,KEY,PWM等,以及标准通信协议,Linux都自带有标准的驱动库,不需要我们自行编写,只需要配置好相应的GPIO属性和电气属性,即可匹配相应的驱动,在应用程序中直接使用…...

网络爬虫抓包工具

📚介绍:Charles是著名的抓包工具🐂,可以抓取移动端与pc端网络访问🕷的所有数据。我们将使用它抓取我们与小程序交互的所有信息。🎇我们可以百度搜索Charles官网下载适用于自己系统的Charles安装包&#x1f…...

蓝桥杯倒计时 | 倒计时17天

作者🕵️‍♂️:让机器理解语言か 专栏🎇:蓝桥杯倒计时冲刺 描述🎨:蓝桥杯冲刺阶段,一定要沉住气,一步一个脚印,胜利就在前方! 寄语💓&#xff1a…...

【Spring Cloud Alibaba】7.Sentinel熔断器仪表盘监控

文章目录简介什么是 Sentinel控制台获取源码方式下载jar包方式启动访问服务配置项目,启用Sentinel完整配置测试简介 接下来我们通过Sentinel控制台来实现对服务消费者提供的熔断机制进行监控和控制,本操作先要完成之前的步骤,详情请参照【Sp…...

个人博客系统项目测试报告

项目背景介绍 背景:当在学习一项技能的时候,我们总会习惯通过博客来记录所学的知识点,方便后期遗忘时随时查看和快速复习。本次开发的Web网站程序便是为了更加轻量和方便地记录自己的学习笔记 概述:一个Web网站程序,…...

flutter安装自用笔记

参照文章: 开发环境搭建 Flutter环境配置步骤: 1.系统配置要求 2.Java环境 3.Flutter SDK 4.Android 开发环境一、系统配置要求 操作系统:Windows 7 SP1 或更高的版本(基于 x86-64 的 64 位操作系统) 磁盘空间&…...

tomcat线程池以及在SpringBoot中的启动过程

tomcat两大组件:连接器Connector,容器Container tomcat线程池 Tomcat线程池扩展了ThreadPoolExecutor,行为稍有不同 重写了ThreadPoolExecutor的execute方法 如果总线程数达到maximumPoolSize,不会立刻抛RejectedExecutionExcept…...

第十四届中国大学生创新创业大赛

文章目录比赛官网比赛题目含金量非常高建议参加的学生推荐几个我感兴趣的题目联系比赛官网 官网地址:http://www.fwwb.org.cn/ 实际叫做:中国大学生创新创业大赛 比赛题目 题目公布查看地址:http://www.fwwb.org.cn/topic/index 题目有…...

LeetCode:322. 零钱兑换——动态规划从案例入门

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀算法专栏: 👉🏻123 一、🌱322. 零钱兑换 题目描述:给你一个整数数组coins,…...

【lwIP(第四章)】网络接口

目录一、lwIP网络接口简介二、lwIP的netif结构三、lwIP的netif相关函数1. lwIP网络接口的全局变量2. netif_add()函数3. netif_remove()函数4. netif_set_default()函数一、lwIP网络接口简介 lwIP协议栈支持多种不同的网络接口(网卡),由于网卡…...

Vue3 pinia入门篇(一)

系列文章目录 主要为了记录如何使用Pinia在Vue3中的使用方式(下面会介绍为什么使用Vue3选型) 文章目录系列文章目录不用Vue2使用Pinia举例子?1.笔者的个人看法:2.总结一、Pinia是什么1.状态管理工具(类比Vuex&#xff…...

python面向对象编程解释

python是一个面向对象的编程语言 面向过程的开发语言有C,面向对象除了python还有java等语言 具体来讲: 面向过程 :举个例子,比如说,把大象装进冰箱总共分几步,第一步,把冰箱门打开&#xff0c…...

ARM(IMX6U)嵌入式软件裸机开发之环境搭建与配置

目录 前沿 Ubuntu 和 Windows 文件互传 Ubuntu 下 NFS 和 SSH 服务开启 Ubuntu 交叉编译工具链安装 Source Insight 软件安装和使用 Visual Studio Code 软件的安装和使用 前沿 为什么我们要学习裸机开发呢? 1、裸机开发是了解所使用的 CPU 最直接、最简单的方…...

Java文件复制多种方法

1、InputStream与OutputStream 创建两个文件 - 源和目标。然后我们从源创建InputStream并使用OutputStream将其写入目标文件进行 java 复制文件操作。 private static void copyFileUsingStream(File source, File dest) throws IOException {InputStream is null;OutputStr…...

Java语言-----封装、继承、抽象、多态、接口

目录 前言 一.封装 1.1封装的定义 1.2访问修饰符的使用 二.继承 2.1继承的定义 2.2继承的方法 2.3继承使用注意点 三.多态 3,1多态的定义 3.2动态绑定 3.3方法重写 3.4向上(向下)转型 四.抽象 4.1抽象的概述和定义 4.2抽象的使用 五…...

基于深度学习的瓶子检测软件(UI界面+YOLOv5+训练数据集)

摘要:基于深度学习的瓶子检测软件用于自动化瓶子检测与识别,对于各种场景下的塑料瓶、玻璃瓶等进行检测并计数,辅助计算机瓶子生产回收等工序。本文详细介绍深度学习的瓶子检测软件,在介绍算法原理的同时,给出Python的…...

仿网易云小程序(一)

目录 一、项目准备 二、项目初始化 1.新建项目 2.封装service请求 三、底部导航栏的设计 四、MV页面的设计 1.将获取到的数据进行渲染 2.播放量数据进行处理转换 3.时长数据进行处理转换 五、MV组件的抽离封装 六、请求的抽离video 七、下拉重新请求新的数据 八、跳转到…...

【C++】vector模拟实现及其应用

文章目录vector的介绍vector的使用及其实现vector的定义vector iterator 的使用vector空间增长问题vector的增删查改vector的介绍 vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素…...

JS看这一篇就够啦,JS基础大全,可用于快速回顾知识,面试首选

1 JS简介 更多JS内容可以看MDN:点击传送 浏览器分成两部分:渲染引擎和 JS 引擎 渲染引擎:用来解析HTML与CSS,俗称内核,比如 chrome 浏览器的 blink ,老版本的 webkitJS 引擎:也称为 JS 解释器…...

武汉凯迪正大GB4208外壳防护等级试具

一、IP1X 试验探棒 产品概述: 符合IEC61032图1试具A、GB16842试具A、GB4208IP1、IEC60529IP1、IEC60065 等标准要求。用于防止手背触及的防护检验。 技术参数: 1、探球直径:50mm 2、挡板直径:45mm 3、挡板厚度:…...

Cent OS 从零部署ruoyi-cloud教程

1、java环境安装 https://blog.csdn.net/m0_61035257/article/details/125705400 Java_home设置 https://blog.csdn.net/m0_51104427/article/details/123924893 2、mysql安装 https://blog.csdn.net/ShockChen7/article/details/126965940 若安装的是Mysql8,建议…...

ChatGPT相关核心算法

ChatGPT 的卓越表现得益于其背后多项核心算法的支持和配合。本文将分别介绍作为其实现基础的 Transformer 模型、激发出其所蕴含知识的Prompt/Instruction Tuning 算法、其涌现出的思维链能力、以及确保其与人类意图对齐的基于人类反馈的强化学习算法。 1.基于Transformer的预…...

Python导入模块,Python import用法(超级详细)

使用 Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位…...

大量产品“GPT 化”,开源大模型 AI 应用开发框架发布

大型语言模型(LLM)的出现,让我们看到了 AI 在自然语言处理方面的潜力,它涌现出来的创造力和思维能力令人叹为观止,并在新一代人机交互领域释放了大量的想象空间。 目前,决策者、产品负责人和开发者都在抢滩…...

STM32——IIC总线(MPU6050应用)

目录 一、IIC介绍 二、MPU6050 三、MPU6050实例 四、EEPROM ---------------------------------------------------------------------------------------------------------------------------- 每次都是IIC好没新意啊,我决定这次录视频的时候举两个例子&…...

ADB使用经验

adb是Android Debug Bridge的缩写,是一种用于与Android设备通信的命令行工具。它可以通过USB连接或Wi-Fi连接,允许开发者在计算机和Android设备之间进行文件传输、安装应用程序、调试应用程序等操作。要使用adb,需要先将Android设备与计算机连…...

详解LinkedHashSet和LinkedHashMap

目录 一.LinkedHashSet和LinkedHashMap 1.基本介绍 2.与HashSet和HashMap的区别 3.LinkedHashSet和LinkedHashMap具体的方法 1.LinkedHashSet 2.LinkedHashMap 二.模拟代码实现LinkedHashMap 三.具体应用 一.LinkedHashSet和LinkedHashMap 1.基本介绍 顾名思义,根据名…...

C++ LinuxWebServer 2万7千字的面经长文(下)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! Linux Web Server项目虽然是现在C求职者的人手一个的项目,但是想要吃透这个项目,还是…...