深入理解操作系统Operator System(2)

目录

操作系统对上的管理

系统调用接口

用户操作接口(库函数)

系统调用和库函数的概念

结构层次示意图

总结

为什么要有操作系统❓


上次主要介绍了操作系统的"管理"和操作系统对下的管理。本篇主要是对上的管理。

操作系统对上的管理

  • 用户可以直接访问硬件吗?

当然不能!!任何对硬件的操作都必须经过操作系统。像scanf/printf需要使用硬件,它们底层都必须使用操作系统


  • 操作系统内包含软硬件的属性数据,用户可以直接访问操作系统吗?

非常不合理!!让用户直接去操作系统内部访问软硬件资源属性数据不可能的。那我们怎样去访问操作系统呢?

就像银行不能让存钱的客户自己去银行的保险柜里放钱,然后把自己去银行的电脑上加上存钱的数额。这是非常危险和不切实际的。银行既要保证安全,又要让客户访问银行存钱。

  • 所以银行就会开设一个一个窗口。只要根据窗口就可以访问银行存钱了。
  • 同理可得,操作系统也开设一层软件层,也就是面向访问操作系统的窗口,称"系统调用接口"

可是有些爷爷奶奶年纪很大,不会自己去区号排序办手续存钱,这是银行就会提供"客户经理"和"前台"等服务去帮助它们。同样用户/程序员,觉得访问系统调用接口太过复杂。

  • 编译器就把系统调用接口封装称"库/shell外壳/指令"等用户操作接口以便用户使用。

系统调用接口

  • 系统调用是操作系统提供的函数
  • 系统调用是一层软件层
  • 操作系统不一样,提供的系统调用接口不一样

  • 用户输入参数到系统调用接口,接口传给操作系统,操作系统返回参数给接口传给用户
  • 系统调用使整个操作系统处于一种安全/稳定的状态
  • 使用户,安全稳定的获取到系统内的软硬件资源属性的数据
  • 我们学习对"软件"的管理,对进程/线程/文件/信号的管理都是对系统调用接口的学习
  • printf/scanf本质是调用系统调用对应的接口,由操作系统控制,通过驱动层写入硬件(显示器)

  • 综上所述:用户访问操作系统直接/间接都使用了系统调用接口

那怎样间接访问系统调用接口呢?

用户操作接口(库函数)

  • 间接访问系统调用接口:就是把系统调用接口封装成库直接提供给用户使用。
  • 我们已经使用过的:C/C++标准库
  • 我们下在VS2022的时候,下载时不仅仅安装了编译器,还安装对应的"库"

关于直接/间接使用系统调用函数直接关系到这段代码是否具有跨平台性。

  • 不具有跨平台性:直接使用系统调用接口
  • 具有跨平台性:使用用户操作系用的(库等)
  • 因为系统调用接口时和操作系统配套的。操作系统是Linux,那么系统调用接口也是Linux。同理,操作系统是windows,那么系统调用接口也是windows。二者的系统调用不能跨平台使用。
  • 例如:我们的printf在Linux或windows底下都可以使用,是因为虽然系统调用底层实现不一样,但是对上C/C++标准库(封装成库)是一样都可以使用,具有跨平台性。

系统调用和库函数的概念

  • 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
  • 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

结构层次示意图

总结

  • 获取数据。
  • 先描述,再组织。 
  • 对硬件的管理:操作系统是硬件的"管理者" ,所以用户访问硬件必须通过操作系统。
  • 计算机管理硬件
  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构
  • 对软件的管理:进程/线程/文件/型号的系统调用接口。
  • 驱动层。
  • 系统调用层/用户调用接口。

为什么要有操作系统❓

  • 以人为本
  • 操作系统对下层进行软硬件管理工作。(手段)
  • 操作系统对上层提供良好的(高效,稳定,安全)运行环境。(目的)
  • 操作系统就是一个工具。

🙂感谢大家的阅读,若有错误和不足,欢迎指正。下篇进入【进程】的概念了。在学习进程之前,就问大家,操作系统是怎么管理进行进程管理的呢?很简单,先把进程描述起来,再把
进程组织起来!

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

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

相关文章

04-ESP32S3-GPIO

ESP32S3-IDF GPIO GPIO简介 ESP32S3提供了多达45个物理GPIO管脚,这些管脚不仅可以作为通用的输入输出接口,还可以连接到内部外设信号。通过GPIO交换矩阵、IO MUX和RTC IO MUX,可以灵活地配置外设模块的输入信号来源于任何GPIO管脚&#xff0…

k8s存储

目录 前瞻 emptyDir存储卷 hostPath存储卷 nfs共享存储卷 PVC 和 PV NFS使用PV和PVC 配置nfs存储 定义PV 定义PVC 测试访问 搭建 StorageClass nfs-client-provisioner ,实现 NFS 的动态 PV 创建 在192.168.75.40节点上安装nfs,并配置nfs服务 …

python:标准正态同质性检验(Standard Normal Homogeneity Test,SNHT) 突变点检测(以NDVI时间序列为例)

作者:CSDN @ _养乐多_ 本文将介绍标准正态同质性检验(Standard Normal Homogeneity Test,SNHT) 突变点检测代码。以 NDVI 时间序列为例。输入数据可以是csv,一列NDVI值,一列时间。代码可以扩展到遥感时间序列突变检测(突变年份、突变幅度等)中。 结果如下图所示, 文…

【UE5】映射方式:动作映射(Action Mappings) 与 轴映射(Axis Mappings)

在游戏中有很多功能需要键盘按键触发,接下来我们会制作键盘输入设置 项目资源文末百度网盘自取 打开项目设置面板 选择Input 按键的映射方式有两种: 一种是动作映射 / 操作映射(Action Mappings),这种方式可以响应按键的按下和抬起。当键盘…

AI安全白皮书 | “深度伪造”产业链调查以及四类防御措施

以下内容,摘编自顶象防御云业务安全情报中心正在制作的《“深度伪造”视频识别与防御白皮书》,对“深度伪造”感兴趣的网友,可在文章留言中写下邮箱,在该白皮书完成后,会为您免费寄送一份电子版。 “深度伪造”就是创建…

关于安卓ZXing条码识别(一)引入源码

背景 从0-1引入安卓zxing,实现条码识别 环境 win10 as4 jdk8 引入 首先,官方网站,就是源码。链接 选择你要引入的分支,这里博主选择的是最近更新的分支,如下图: 上图中,1和2都需要引入&am…

鸿蒙开发学习:【ets_frontend组件】

简介 ets_frontend组件是方舟运行时子系统的前端工具,结合ace-ets2bundle组件,支持将ets文件转换为方舟字节码文件。 ets_frontend组件架构图 目录 /arkcompiler/ets_frontend/ ├── test262 # test262测试配置和运行脚本 ├── testTs…

《TCP/IP详解 卷一》第13章 TCP连接管理

目录 13.1 引言 13.2 TCP连接的建立与终止 13.2.1 TCP半关闭 13.2.2 同时打开与关闭 13.2.3 初始序列号 13.2.4 例子 13.2.5 连接建立超时 13.2.6 连接与转换器 13.3 TCP 选项 13.3.1 最大段大小选项 13.3.2 选择确认选项 13.3.3 窗口缩放选项 13.3.4 时间戳选项与…

AWS 入门实践-远程访问AWS EC2 Linux虚拟机

远程访问AWS EC2 Linux虚拟机是AWS云计算服务中的一个基本且重要的技能。本指南旨在为初学者提供一系列步骤,以便成功地设置并远程访问他们的EC2 Linux实例。包括如何上传下载文件、如何ssh远程登录EC2虚拟机。 一、创建一个AWS EC2 Linux 虚拟机 创建一个Amazon…

LeetCode_25_困难_K个一组翻转链表

文章目录 1. 题目2. 思路及代码实现(Python)2.1 模拟 1. 题目 给你链表的头节点 h e a d head head ,每 k k k 个节点一组进行翻转,请你返回修改后的链表。 k k k 是一个正整数,它的值小于或等于链表的长度。如果节…

全面对比Amazon DocumentDB 与 MongoDB

在云中部署 MongoDB 似乎有多种选择。例如,Amazon DocumentDB自称是完全支持 MongoDB API 的 AWS 原生数据库。虽然它支持一些 MongoDB 功能,但需要注意的是 DocumentDB 并不完全兼容 MongoDB。要在 AWS 上访问功能齐全的“MongoDB 即服务”,…

单链表(下)

我们在单链表(上)中了解了一些需要实现的函数,这一篇就让我们一起来实现。 1.创建新节点 2.打印 3.尾插 4.头插 5.尾删 6.头删 7.查找 8.计算节点个数 9.在指定位置之前插入数据 10.在指定位置之前插入数据 11.删除指定位置的节点 12.删除指…

快速部署本地知识库大模型(Langchain+ChatGLM3)

使用AutoDL AI算力云:AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL,注册后充值后进入控制台 点击租用新实例,选择机器和社区镜像langchain-chatchat如下 创建成功后进去JupyterLab 打开终端运行如下命令 $ cd /root/Langchain-Chatch…

python编程从入门到实践答案二

python编程从入门到实践 第五章 if语句1.条件测试:2.更多的条件测试:3.外星人颜色#1:4. 外星人颜色#2:5. 外星人颜色#3:6. 人生的不同阶段:7. 喜欢的水果:8. 以特殊方式跟管理员打招呼&#xff…

基于springboot+vue实现高校学生党员发展管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现高校学生党员发展管理系统演示 摘要 随着高校学生规模的不断扩大,高校内的党员统计及发展管理工作面临较大的压力,高校信息化建设的不断优化发展也进一步促进了系统平台的应用,借助系统平台可以实现更加高效便捷的党员信息…

Elasticsearch从入门到精通-03基本语法学习

Elasticsearch从入门到精通-03基本语法学习 👏作者简介:大家好,我是程序员行走的鱼 📖 本篇主要介绍和大家一块学习一下ES基本语法,主要包括索引管理、文档管理、映射管理等内容 1.1 了解Restful ES对数据进行增、删、改、查是以…

Ajax (1)

什么是Ajax&#xff1a; 浏览器与服务器进行数据通讯的技术&#xff0c;动态数据交互 axios库地址&#xff1a; <script src"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> 如何使用呢&#xff1f; 我们现有个感性的认识 <scr…

网页设计中通过css在一个固定宽度的div容器中让一行超出的文本隐藏并省略掉

实现效果&#xff1a; 实现的关键css&#xff1a; overflow&#xff1a;hidden&#xff1b;这个表示超出容器的内容进行隐藏 white-space&#xff1a;nowrap&#xff1b;表示文本不断行显示 text-overflow&#xff1a;ellipsis&#xff1b;表示超出的部分用省略号进行表示 …

jar运行报错Unable to read meta-data for class

目录 一、场景描述 二、解决办法 1&#xff09;情况一 2&#xff09;情况二 贴一下部署报错堆栈信息&#xff1a; java.lang.IllegalStateException: Unable to read meta-data for class com.zhh.zhhd.biz.config.Test1Configat org.springframework.boot.autoconfigure.…

数字化转型导师坚鹏:科技创新产业发展研究及科技金融营销创新

科技创新产业发展研究及科技金融营销创新 课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不清楚科技创新产业的发展现状&#xff1f; 不知道科技金融有哪些成功的案例&#xff1f; 不知道科技金融如何进行营销创新&#xff1f; 课程特色&#xff1a; 以案例…