初识操作系统

目录

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

 

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

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32入门教程课程简介(B站江科大自化协学习记录)

课程简介 STM32最小系统板面包板硬件平台 硬件设备 STM32面包板入门套件 Windows电脑 万用表、示波器、镊子、剪刀等 软件介绍 Keil MDK 5.24.1 是一款嵌入式软件开发工具,它提供了一个完整的开发环境,包括编译器、调试器和仿真器。它支持各种微控制…

浅谈Dubbo的异步调用

之前简单写了一下dubbo线程模型,提到了Dubbo底层是基于NIO的Netty框架实现的,通过IO线程池和Work线程池实现了请求和业务处理之间的异步从而提升性能。 这篇文章要写的是Dubbo对于消费端调用和服务端接口业务逻辑处理的异步,在2.7版本中Dubb…

异构数据库转换工具体验:将SQLServer数据转换迁移到MySQL

背景 想将一个线上数据库从 SQLServer 转换迁移到 MySQL ,数据表70多张,数据量不大。从网上看很多推荐使用 SQLyog ,还有 Oracle MySQL Server 官方的 Workbeach 来做迁移,但是步骤稍显繁琐;后来从一篇文章的某个角落…

进程间通信【Linux】

文章目录1. 进程间通信1.1 什么是进程间通信1.2 进程间通信的必要性1.3 进程间通信的本质1.4 进程间通信的方式2. 匿名管道2.1 匿名管道的概念2.2 匿名管道的原理注意2.3 实现匿名管道pipe函数步骤1. 创建管道2. 创建子进程3. 构建单向信道子进程父进程构建一个变化的字符串写入…

代码质量提升,代码扫描 review 之 Codacy 工具使用

目录一、什么是Codacy二、GitHub 上使用 Codacy三、Codacy上导入GitHub项目一、什么是Codacy Codacy 是用于代码 review 检测(即代码审查)的工具,目前支持对40多种编程语言检测,如 c、c、c#、java 、python、javascript 等。 Codacy 可用于 GitHub 和 …

【Java 并发编程】我们为什么要学并发编程?

我们为什么要学并发编程?1. 为什么要并发编程?1.1 面试需要1.2 性能调优(1)加快响应时间(2)代码模块化、异步化(3)充分利用 CPU 的资源2. 并发编程的基础概念2.1 进程和线程&#xf…

python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复

在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件。今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件。 一、获取邮箱的SMTP授权码。…

树与二叉树的存储与遍历

文章目录一、树概念二、二叉树三、二叉树的存储与遍历一、树概念 如前面的顺序表,链表,栈和队列都是线性的数据结构,树是非线性的结构。树可以有n个结点,n>0,当n0是就表示树为空 n>0,代表树不为空,不为空的树&am…

Idea+maven+spring-cloud项目搭建系列--11 整合dubbo

前言: 微服务之间通信框架dubbo,使用netty (NIO 模型)完成RPC 接口调用; 1 dubbo 介绍: Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提…

如果大学能重来,我绝对能吊打90%的大学生,早知道这方法就好了

最近收到很多大学生粉丝的私信,大多数粉丝们都迷茫着大学计算机该怎么学,毕业后才能找到好工作。 可能是最近回答这方面的问题有点多,昨晚还真梦回大学…其实工作了20多年,当过高管,创过业,就差没写书了。…

基于 Docker 的深度学习环境:入门篇

这篇文章聊聊如何从零到一安装、配置一个基于 Docker 容器的深度学习环境。 写在前面 这段时间,不论是 NLP 模型,还是 CV 模型,都得到了极大的发展。有不少模型甚至可以愉快的在本地运行,并且有着不错的效果。所以,经…

【数据结构】实现二叉树的基本操作

目录 1. 二叉树的基本操作 2. 具体实现 2.1 创建BinaryTree类以及简单创建一棵树 2.2 前序遍历 2.3 中序遍历 2.4 后序遍历 2.5 层序遍历 2.6 获取树中节点的个数 2.7 获取叶子节点的个数 2.8 获取第K层节点的个数 2.9 获取二叉树的高度 2.10 检测值为val的元素是否…

Fiddler抓取https史上最强教程

有任何疑问建议观看下面视频 2023最新Fiddler抓包工具实战,2小时精通十年技术!!!对于想抓取HTTPS的测试初学者来说,常用的工具就是fiddler。 但是初学时,大家对于fiddler如何抓取HTTPS难免走歪路&#xff…

使用stm32实现电机的PID控制

使用stm32实现电机的PID控制 PID控制应该算是非常古老而且应用非常广泛的控制算法了,小到热水壶温度控制,大到控制无人机的飞行姿态和飞行速度等等。在电机控制中,PID算法用的尤为常见。 文章目录使用stm32实现电机的PID控制一、位置式PID1.计…

史诗级详解面试中JVM的实战

史诗级详解面试中JVM的实战 1.1 什么是内存泄漏?什么是内存溢出?1.2 你们线上环境的JVM都设置多大?1.3 线上Java服务器内存飙升怎么回事?1.4 线上Java项目CPU飙到100%怎么排查?1.5 线上Java项目OOM了,怎么回事?1.1 什么是内存泄漏?什么是内存溢出? 内存溢出:OutOfMe…

JavaScript中的for in和for of的区别(js的for循环)

简述:js中的for循环大家都知道,今天来分享下for in和for of在使用时区别和注意事项,顺便做个笔记; 测试数据 //数组const arr [1, 2, 3, 4, 5]//对象const obj {name: "小李",color: ["plum", "pink&q…

【巨人的肩膀】JAVA面试总结(七)

💪MyBatis 1、谈谈你对MyBatis的理解 Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,加载驱动、创建连接、创建statement等繁杂的过程,开发者开发时只需要关注如何编写SQL语句,可以…

蓝桥杯C/C++VIP试题每日一练之完美的代价

💛作者主页:静Yu 🧡简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者 💛社区地址:前端知识交流社区 🧡博主的个人博客:静Yu的个人博客 🧡博主的个人笔记本:前端面试题 个人笔记本只记录前端领域的面试题目,项目总结,面试技…

Python 十大开源Python库,看看你熟悉几个?

嗨害大家好鸭!我是芝士❤ 对于码农来说, 关注的永远是新近有什么流行的、 既能解决问题又好用的利器。 本文就为你盘点十大开源Python库。 1、Pipenv 第一名非它莫属, 这个工具2017年初才发布, 但它已经能够影响每个Python开发…

菜鸟刷题Day7

⭐作者:别动我的饭 ⭐专栏:菜鸟刷题 ⭐标语:悟已往之不谏,知来者之可追 一.整理字符串:1544. 整理字符串 - 力扣(LeetCode) 描述 给你一个由大小写英文字母组成的字符串 s 。 一个整理好的字…