Linux -- 操作系统(软件)

news2024/11/13 10:17:16

目录

什么是操作系统?

计算机的层状结构

为什么要有操作系统 

操作系统到底层硬件 

驱动程序

操作系统如何管理硬件?

操作系统到用户

系统调用接口

库函数

回到问题


什么是操作系统?

操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,它是用户与计算机硬件之间的接口。

操作系统的主要功能包括:

  1. 进程管理:操作系统负责创建和终止进程,同时管理进程之间的通信和同步。

  2. 内存管理:它分配内存给应用程序,并确保这些应用程序之间不会相互干扰,同时也回收不再使用的内存空间。

  3. 文件系统管理:提供文件创建、删除、读写等功能,以及组织和维护文件系统的结构。

  4. 设备管理:管理和控制各种外部设备,比如打印机、扫描仪等,使它们能够与计算机交互。

  5. 安全保护:确保系统的安全性和数据的完整性,防止未授权访问和恶意攻击。

  6. 用户界面:提供图形用户界面(GUI)或命令行界面(CLI),让用户可以方便地与计算机进行交互。

计算机的层状结构

为什么要有操作系统 

操作系统到底层硬件 

驱动程序

驱动程序(Driver)是一种特殊的计算机程序,它充当操作系统与硬件设备之间的桥梁,使得操作系统能够识别和控制各种硬件设备。每个硬件设备,无论是内置的(如硬盘、显卡)还是外接的(如打印机、鼠标),通常都需要相应的驱动程序才能正常工作。驱动程序提供访问硬件的接口,操作系统调用相关的接口来访问硬件。

操作系统如何管理硬件?

从生活中的例子来理解,以学校管理学生为例,每个学生都有自己的姓名、性别、学号、专业等,每个学生的姓名都是不一样的,但是每个学生都有姓名,姓名属于学生的一个属性,学校需要知道学生的相关信息,比如姓名、性别、学号、专业、绩点等,才可以决定哪些学生可以评奖学金、推优,哪些学生会被开除学籍。

在管理硬件上也是同理,操作系统需要知道硬件的设备名、状态(是开机还是关机)、优先级等,才能对硬件进行管理。

也就是说,我们需要知道硬件的相关属性,先描述这些属性,定义相关的变量来记录这些属性,才可以对硬件进行管理,即 先描述再组织

可以用 struct 将多个相关联的数据项组织在一个单元中,便于管理和操作。

定义出结构体之后,这个结构体就可以看作链表的一个结点。

  • 假设现在是开学季,需要对新生的数据进行管理,其实可以看作往链表中新增结点;
  • 如果需要开除学生,其实可以看作把该学生对应的结点从链表中删除;
  • 如果有学生转专业了,修改该学生的专业,也可以看作修改链表的结点中的变量;
  • 如果期末周结束了,辅导员需要查学生的绩点,可以看作查找该结点的内容。

从上面的例子可以看出,对学生的管理,变成了链表的增删查改!

操作系统对硬件的管理也是相同的道理,对硬件的管理,变成对链表的增删查改

操作系统除了管理硬件外,还需要管理驱动程序,而对驱动程序的管理和对硬件的管理是同理的,先描述再组织,定义出 struct 结构体后,变为对链表的增删查改

操作系统到用户

系统调用接口

以银行为例,用户去银行办理业务时,并不是自己进入到银行的后台系统,随意操作后台系统,随意篡改数据,随便修改银行卡的余额,而是通过前台窗口,与工作人员沟通,办理完业务的,银行不直接对外暴露内部的信息,而是提供窗口,相对安全地向外界提供服务。

计算机也是同理,用户并不是直接进入操作系统,去访问硬件的数据,而是通过系统调用接口,用户调用系统调用,来访问数据,以保证访问数据的过程是安全的,且数据不会被随意篡改

系统调用(System Call)是操作系统提供给应用程序的一组接口,用于请求操作系统内核执行特定的任务。通过系统调用,应用程序可以访问操作系统提供的底层资源和服务,如文件操作、网络通信、进程管理等。系统调用是用户态程序与内核态操作系统的桥梁,确保了应用程序能够安全、高效地使用系统资源

库函数

在上面银行的例子中,如果用户是一个什么都不懂的老年人,而且有听力障碍,这位老年人来办理业务时,一般的窗口没办法很好地为这种群体提供服务,那么银行就需要面向这种群体开辟新的窗口,提高银行的服务能力。

其实用户在某种程度上和老年人一样,并不认识系统调用接口,我们对系统调用接口一无所知,用起来就会比较难受,不方便,所以需要对系统调用进行封装,库级别的封装,方便用户使用,降低使用成本,所以用户就不用直接使用系统调用了,直接使用库函数提供的函数即可,因为库函数更容易使用。

库函数(Library Function)是一组预编写的代码模块,它们被组织成库,供开发者在编写应用程序时调用。库函数提供了各种常用功能,帮助开发者简化编程任务,提高开发效率

许多库函数是跨平台的,可以在不同的操作系统和硬件上运行,这为开发多平台应用提供了便利,使代码具有可移植性。 

世界上不止 Linux 操作系统,还有安卓、iOS等,这些操作系统提供的系统调用是不一样的,如果程序员要去记住每个操作系统的函数,是不太现实的,提供了库函数,就可以让同一份代码在不同的操作系统中运行起来。

比如我们要打印一个数据,在 Linux 和 Unix 类操作系统中,通常使用 write系统调用来向标准输出(通常是终端)写入数据,在 Windows 操作系统中,通常使用 WriteFileWriteConsole函数来完成类似的功能,虽然各个操作系统的底层系统调用接口有所区别,但是高级语言(如C语言)提供了一套标准化的库函数(如printf),这些库函数内部会根据所处的操作系统环境调用相应的底层系统调用来完成任务。这样做的好处是让程序员可以编写跨平台的应用程序,而不必关心底层实现的细节。

系统调用接口是由操作系统提供的,而库函数是由用户提供的,库函数封装了系统调用

回到问题

操作系统需要对下管理好软硬件资源,对上提供一个良好(稳定、安全、高效)的运行环境,用户不能绕过操作系统直接去访问硬件,不能越级访问,必须贯穿操作系统!!

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

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

相关文章

【大数据算法】MapReduce算法概述之:MapReduce基础模型

MapReduce基础模型 1、引言2、MapReduce基础模型2.1 定义2.2 核心原理2.3 优点2.4 缺点2.5 局限性2.6 实例 3、总结 1、引言 小屌丝:鱼哥,鱼哥, 不得了啊 小鱼:啥事情这么慌慌张张的 小屌丝:这不是慌张啊 小鱼&#x…

深入解析 Transformers 框架(四):Qwen2.5/GPT 分词流程与 BPE 分词算法技术细节详解

前面我们已经通过三篇文章,详细介绍了 Qwen2.5 大语言模型在 Transformers 框架中的技术细节,包括包和对象加载、模型初始化和分词器技术细节: 深入解析 Transformers 框架(一):包和对象加载中的设计巧思与…

商品详情 API 接口的返回结果通常包含哪些信息?

商品详情 API 接口的返回结果通常包含以下几类信息: 一、商品基本信息: 商品 ID:唯一标识商品的编号,在电商平台的数据库中具有唯一性,用于区分不同的商品。商品标题:对商品的简要描述,通常包…

探索 Seata 分布式事务

Seata(Simple Extensible Autonomous Transaction Architecture)是阿里巴巴开源的一款分布式事务解决方案,旨在帮助开发者解决微服务架构下的分布式事务问题。它提供了高效且易于使用的分布式事务管理能力,支持多种事务模式&#…

AI写作(七)的核心技术探秘:情感分析与观点挖掘

一、AI 写作中的关键技术概述 情感分析与观点挖掘在 AI 写作中起着至关重要的作用。情感分析能够帮助 AI 理解文本中的情感倾向,无论是正面、负面还是中性。在当今信息时代,准确把握用户情绪对于提供个性化体验和做出明智决策至关重要。例如,…

容器化技术入门:Docker详解

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 容器化技术入门:Docker详解 容器化技术入门:Docker详解 容器化技术入门:Docker详解 引言 Doc…

Flutter运行App时出现“Running Gradle task ‘assembleDebug“问题解决

在参考了众多解决办法中最有用并且最快的方法 Gradle Distributions 在这个地方下载对应你这个文件中的gradle版本 然后将 最后一行本来不是这样的,我们把下载好的zip包保存到本地,然后用这个代替网址,最后成功运行

Spark中的shuffle

Shuffle的本质基于磁盘划分来解决分布式大数据量的全局分组、全局排序、重新分区【增大】的问题。 1、Spark的Shuffle设计 Spark Shuffle过程也叫作宽依赖过程,Spark不完全依赖于内存计算,面临以上问题时,也需要Shuffle过程。 2、Spark中哪…

window11安装elasticsearch+Kibana

1、下载elasticsearch与elasticsearch 下载elasticsearch 查看elasticsearch对应的Kibana版本 下载elasticsearch解压后文件目录如下 可执行脚本文件,包括启动elasticsearch服务、插件管理、函数命令等 bin配置文件目录,如elasticsearch配置、角色配置、jvm配置等 conf 默认…

linux rocky 9.4部署和管理docker harbor私有源

文章目录 Harbor简介安装Harbor技术细节1.安装系统(略),设置主机名和IP2.安装docker3.安装docker-compose4.安装Harbor私有源仓库5 测试登录1.本机登录2.客户端登录Harbor服务器配置docker源1. 下载镜像2.把镜像上传到Harbor私有仓库源3.客户端下载镜像,并且启动容器linux …

【计算机网络五】HTTP协议!网站运行的奥秘!

目录 HTTP协议 1.HTTP是什么? 2.Fiddler抓包查看HTTP协议格式 3.HTTP请求 4.HTTP响应 HTTP协议 1.HTTP是什么? HTTP ( 全称为 " 超文本传输协议 ") 诞生与 1991 年 . 目前已经发展为最主流使用的一种应用层协议 . HTTP 的前几个版本…

嵌入式硬件实战基础篇(一)-STM32+DAC0832 可调信号发生器-产生方波-三角波-正弦波

引言:本内容主要用作于学习巩固嵌入式硬件内容知识,用于想提升下述能力,针对学习STM32与DAC0832产生波形以及波形转换,对于硬件的降压和对于前面硬件篇的实际运用,针对仿真的使用,具体如下: 设…

ubuntu 24.04运行chattts时cuda安装错误原因分析

使用ubuntu 24.04,按照2noise/ChatTTS官方流程安装依赖时报错。ChatTTShttps://github.com/2noise/ChatTTS 这是因为cuda版本不对,ChatTTS目前的版本,要求支持cuda 12.4及以上,但是如果nvidia显卡驱动版本较老,无法支…

【动态规划】斐波那契数列模型总结

一、第 N 个泰波那契数 题目链接: 第 N 个泰波那契数 题目描述: 题目分析: 1、状态表示: dp[i] 表示:第 i 个斐波那契数的值 2、状态转移方程: 由题意可知第 i 个数等于其前三个数之和 dp[i] dp[i-…

2024 第五次周赛

A: 直接遍历即可 #include<bits/stdc.h> using namespace std;typedef long long ll; typedef pair<ll, ll>PII; const int N 2e6 10; const int MOD 998244353; const int INF 0X3F3F3F3F;int n, m; int main() {cin >> n;int cnt 0;for(int i 0; i …

【数据库系列】postgresql链接详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Uniapp底部导航栏设置(附带PS填充图标教程)

首先需要注册和登录ifconfont官网&#xff0c;然后创建项目添加需要的图标 创建和添加图标库请参考&#xff1a;Uniapp在Vue环境中引入iconfont图标库&#xff08;详细教程&#xff09; 打开iconfont官网&#xff0c;找到之前添加的图标库&#xff0c;下载png图片 如果需要的…

提取神经网络数学表达式

来自《老饼讲解神经网络》 www..bbbdata.com 当我们在matlab训练好网络后&#xff0c;可以使用神经网络工具箱的sim(net,x)函数进行预测输出。但往往想提取出它的数学表达式&#xff0c;该怎么提取呢&#xff1f; 下面以《一个简单的神经网络例子》中的模型为例&#xff0c;提取…

【从零开始鸿蒙开发:01】自定义闪屏页

文章目录 大体介绍文件介绍各部分代码SplashPage.etsIndex.etsHomePage.etsroute_map.jsonmodule.json5 流程 大体介绍 文件介绍 其中&#xff1a; pages为我们的页面内容&#xff08;我个人理解功能性小于activity但是大于fragment&#xff09;route_map.json 为自定义的路由…

录制的音频听起来非常缓慢,声音很模糊

一、主题 录制的音频听起来非常缓慢&#xff0c;声音很模糊 二、问题背景 硬件&#xff1a;T113&#xff0c;R528等平台系列产品 软件&#xff1a;Tina5.0 三、问题描述 1、复现步骤 使用arecord进行录音。 arecord -Dhw:audiocodec -f S16_LE -r 16000 -c 2 -d 5 /tmp/t…