初识操作系统
目录
1.操作系统是什么
2.为什么要有操作系统
3.操作系统的相关关系
1.驱动程序
2.系统调用接口
3.用户调用接口
4.用户程序
4.用具体的例子理解操作系统
1.操作系统是什么

(1)操作系统是一组管理计算机硬件与软件资源的计算机软件程序 。
(2)它可以控制和管理整个计算机系统的运行,合理地组织和调度计算机的工作和资源的分配,提供给用户和其他软件方便的接口和环境,它是计算机系统中最基本的系统软件。
(3)操作系统可以分为命令接口(比如Linux),程序接口和图形用户界面(比如Windows)等类型。
2.为什么要有操作系统
我们难道不可以直接使用资源吗?当然不行,这就像你去银行取钱,总不可能直接让你去金库拿钱吧!
(1)操作系统可以管理和控制计算机的硬件和软件资源,如处理器,内存,磁盘,网络等,提高计算机的性能和效率。如果没有操作系统,每个程序都要直接面向硬件进行操作,这样会很复杂和低效,而且可能会破坏硬件。
(2)操作系统可以提供给用户和其他软件方便的接口和环境,如命令行,图形用户界面,触摸等,让用户可以访便地使用计算机完成各种任务。如果没有操作系统,用户就要学习很多专业的知识,如数字电路,计算机组成原理等,才能操作计算机。
(3)操作系统可以提供一些经典的案例和思路,帮助程序员解决一些常见的问题,如多线程编程,网络编程,文件管理等。
总之,操作系统是一种介于硬件和用户之间的特殊的软件,它为计算机提供了更高层次的抽象和服务。
3.操作系统的相关关系
说了这么多,那操作系统到底是怎样管理计算机硬件与软件资源的呢?

我们来一步步分析上面的结构
1.驱动程序
我们可以发现,操作系统并没有直接访问硬件,这是为什么?
(1)兼容性:不同的硬件设备可能有不同的接口和通信协议,如果操作系统要直接控制它们,就要了解每一种设备的细节。这样会增加操作系统的复杂度和维护成本。操作系统通过使用驱动程序,把硬件的细节封装起来,提供统一的接口给用户程序,这样可以提高操作系统和硬件的兼容性。
(2)效率:操作系统要管理多个用户程序和多个硬件设备,如果直接控制硬件,就需要频繁地切换上下文和状态。这样会降低操作系统的效率和响应速度。操作系统通过使用中断、缓冲区、虚拟内存等技术,减少对硬件的直接访问,提高对硬件的利用率,这样可以提高操作系统和硬件的效率。
这个时候就需要驱动程序出马了。
(1)驱动程序是一种可以使计算机和设备通信的特殊程序,相当于硬件的接口。操作系统只有通过这个接口,才能控制硬件设备的工作 。
(2)驱动程序将操作系统的指令和数据转化为硬件可以识别和执行的机器语言,或者将硬件的反馈转化为操作系统可以理解的信息。
(3)驱动程序可以把硬件的细节封装起来,提供统一的接口给用户程序。这样可以提高安全性、兼容性和效率 。
2.系统调用接口
系统调用接口是操作系统提供给用户程序访问系统资源和服务的一种方式,它是用户态和内核态之间的桥梁。有了系统调用接口,用户程序就可以通过中断指令(如int 0x80)向操作系统发出请求,而无需直接操作硬件或者了解操作系统的内部实现细节。系统调用接口的作用有以下几点 :
(1)保护系统资源,防止用户程序对系统资源的滥用或破坏,提高系统的安全性和稳定性。
(2)提供方便的机制,使用户程序可以与操作系统进行交互,使用操作系统的功能和服务,如文件操作、进程管理、网络通信等。
(3)隐藏操作系统的复杂性,提供统一的抽象层,使用户程序不需要关心不同硬件平台或操作系统的差异,提高程序的可移植性和兼容性。
3.用户调用接口
然而我们平时使用计算机的时候并没有直接使用系统调用接口,因为使用系统调用接口的学习成本很大,于是就有了用户调用接口。
(1)用户调用接口是用户和系统之间进行交互和信息交换的媒介,它可以分为命令接口和程序接口两种。
(2)命令接口是普通用户与操作系统的接口,可以通过键盘命令、 图形界面使用操作系统的功能。
(3)程序接口是应用程序与操作系统的接口,可以通过系统功能调用来请求操作系统的服务,如文件操作、进程管理、网络通信等。
(4)用户调用接口使用户可以通过命令或程序来使用操作系统的功能和服务,而无需了解操作系统的内部实现细节,这样可以提高用户的效率和体验,也可以减少用户程序对系统资源的误用或破坏的风险。
4.用户程序
还记得我们刚开始学编程,用printf函数打印的“Hello World”吗?printf函数就算是一个用户程序。
所以,用户程序可以用不同的编程语言来编写,不同的编程语言有不同的语法和风格,但最终都要被编译或解释成机器能够识别和执行的指令。用户程序通过用户调用接口或系统调用接口来与操作系统交互,利用操作系统提供的功能和服务来完成各种任务。我们平时使用的各种应用软件,如文本编辑器、浏览器、游戏等,都是由用户或厂商程序编写的,也都需要通过用户调用接口或系统调用接口来与操作系统交互。
比如我平时玩的游戏,也是一个用户程序
4.用具体的例子理解操作系统
我们用学校管理学生的例子来理解操作系统是如何管理硬件资源的。
在学校里,校长就是管理者,虽然我们平时都很少或者几乎没有见过校长,但是校长却可以很好的管理学生。这说明管理者和被管理者并没有直接进行沟通,校长是通过联系辅导员来管理学生的。如果说校长是操作系统,辅导员就是驱动程序,学生就是硬件。
辅导员会把学生的信息用各种指标描述,比如成绩,学分,年级等等,描述学生的过程就是把学生数据化的过程,而这些需要用一个东西组织关联起来,这时候我们就可以使用各种数据结构来组织数据了。

总结下来,管理分两步,首先描述管理对象的各种属性,然后再用各种数据结构把这些数据组织起来。
相关文章:
初识操作系统
目录 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安装包…...
蓝桥杯倒计时 | 倒计时17天
作者🕵️♂️:让机器理解语言か 专栏🎇:蓝桥杯倒计时冲刺 描述🎨:蓝桥杯冲刺阶段,一定要沉住气,一步一个脚印,胜利就在前方! 寄语💓:…...
【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ÿ…...
python面向对象编程解释
python是一个面向对象的编程语言 面向过程的开发语言有C,面向对象除了python还有java等语言 具体来讲: 面向过程 :举个例子,比如说,把大象装进冰箱总共分几步,第一步,把冰箱门打开,…...
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的元素…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
