【Linux进程】再谈软件—操作系统(Operator System)

news2024/11/29 10:49:02

目录

操作系统(Operator System)

概念

设计OS的目的

如何理解 "管理"——先描述再组织

系统调用和库函数概念

总结


操作系统(Operator System)

概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。

笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等)

操作系统是一款进行管理(硬件和软件)的软件!

设计OS的目的

  • 与硬件交互,管理所有的软硬件资源
  • 为用户程序(应用程序)提供一个良好的执行环境

在一套系统中,需要有管理者进行统筹。对上,给用户一个稳定高效的执行环境。对下,管理好软硬件资源,提供稳定的软硬件环境,因此就有了操作系统。

在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件

如何理解 "管理"——先描述再组织

下面我们来列举一个管理的例子:

我们上大学的时候,在学校有很多事情都是需要我们辅导员负责。但辅导员对我们的管理规则并不是辅导员制定的,而是校长这一层的领导制定的,所以辅导员并不是我们的管理者,辅导员只能算是执行者,我们的校长这样的领导才是我们真正的管理者。比如小李在学校犯了错,辅导员并不能把他开除,但是校长可以。

  • 所以区分管理者和执行者的关键是看他有没有拥有决策权!

我们把校长类比成操作系统(决策者),辅导员为驱动程序(执行者),学生是被管理者(底层硬件)。

这里可能有人会有疑问,我们平时在学校连校长的面都见不到,他是怎么管理我们的呢?其实校长(决策者)是通过辅导员(执行者)管理我们的,下面我们就来理解一下管理的方法——先描述,再组织

管理的精髓:先描述,再组织

先描述(描述被管理对象):我们刚开始来学校的时候,每个院的学生都会到特定的地方去报道,然后填上你的基本信息,最后将你的信息录入到电脑中,这些信息就是我们的数据。每一套信息就对应着一名学生,校长通过对这些信息的管理就能够做到对学生的管理。

再组织(组织被管理对象):当学生的数量特别大的时候,校长就需要将这些信息组织起来,组织的方式有很多种,我们可以通过我们之前学过的数据结构来组织,比如说链表。每种组织方式都有其自己的优势,假设我们校长这里是通过链表的形式将学生的信息组织起来的。

因此校长对学生的管理,就变成了对这个链表的增删查改,当有新生来学校报道时,只需要在链表中增加一个节点,当有一个学生从学校毕业后,只需要将该学生的信息从该链表中移除即可。

现在我们再来回答上面的问题:我们平时在学校连校长的面都见不到,他是怎么管理我们的呢?

  1. 管理者和被管理者是不需要见面的
  2. 管理者在不见被管理者的情况下,如何做好的管理呢? 只要能够得到管理信息,就可以在未来进行管理决策 ---- 管理的本质: 是通过对_数据 的管理,达到对人的管理
  3. 管理者和被管理者面都不见,我们怎么拿到对应的数据呢? 通过执行者

系统调用和库函数概念

用户与操作系统的交互

操作系统里面,里面会有各种数据。可是,操作系统不相信任何用户!
所以用户在使用操作系统的时候,它并不是直接跟操作系统打交道的。因为操作系统为了保证自己数据安全,但是也为了保证给用户能够提供服务,操作系统以接口(系统调用)的方式给用户提供调用的入口。来获取操作系统内部的数据。

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

  • 库函数通常是高级语言提供的,提供了一种方便的接口,使得程序员可以执行某些常见的任务,而无需直接与操作系统进行交互。库函数通常是在编程语言的标准库中提供的,例如C语言的标准库中包含了很多常用的库函数。
  • 系统调用是操作系统提供的一种机制,允许程序请求操作系统的服务。库函数通常使用系统调用来与操作系统内核进行交互,以实现更高级的功能。例如,C语言中的库函数如printf()和scanf()等都使用了系统调用。

因此,库函数和系统调用的关系是上下层的调用与被调用的关系,库函数使用系统调用与操作系统进行交互,以实现更高级的功能。

总结

操作系统对上,给用户一个稳定高效的执行环境。对下,管理好软硬件资源,提供稳定的软硬件环境。

操作系统中,注定了,一定存在大量的数据结构!

计算机管理硬件——先描述再组织

1. 描述被管理对象,用struct结构体。
2. 组织被管理对象,用链表或其他高效的数据结构。

用户在使用操作系统的时候,它并不是直接跟操作系统打交道的。因为操作系统为了保证自己数据安全,但是也为了保证给用户能够提供服务,操作系统以接口(系统调用)的方式给用户提供调用的入口。来获取操作系统内部的数据。

库函数和系统调用的关系是上下层的调用与被调用的关系,库函数使用系统调用与操作系统进行交互,以实现更高级的功能。

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

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

相关文章

206. 反转链表、Leetcode的Python实现

博客主页:🏆看看是李XX还是李歘歘 🏆 🌺每天分享一些包括但不限于计算机基础、算法等相关的知识点🌺 💗点关注不迷路,总有一些📖知识点📖是你想要的💗 ⛽️今…

Springboot+shiro,完整教程,带你学会shiro

您的第一个 Apache Shiro 应用程序 引入依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoc…

一文深入了解 CPU 的型号、代际架构与微架构

在 10 月 16 号的时候&#xff0c;Intel 正式发布了第 14 代的酷睿处理器。但还有很多同学看不懂这种发布会上发布的各种 CPU 参数。借着这个时机&#xff0c;给大家深入地讲讲 CPU 的型号规则、代际架构与微架构方面的知识。 CPU 在整个计算机硬件中、技术体系中都算是最最重…

关于pytorch张量维度转换及张量运算

关于pytorch张量维度转换大全 1 tensor.view()2 tensor.reshape()3 tensor.squeeze()和tensor.unsqueeze()3.1 tensor.squeeze() 降维3.2 tensor.unsqueeze(idx)升维 4 tensor.permute()5 torch.cat([a,b],dim)6 torch.stack()7 torch.chunk()和torch.split()8 与tensor相乘运算…

嵌入式Linux系统的闪存设备和文件系统学习纪要

嵌入式Linux系统的闪存设备和文件系统学习纪要 Linux下的文件系统结构如下&#xff1a; NAND Flash 是一种非易失性存储器&#xff08;Non-Volatile Memory&#xff09;&#xff0c;常用于闪存设备和固态硬盘&#xff08;SSD&#xff09;中。以下是几种常见的 NAND Flash 种类&…

234. 回文链表、Leetcode的Python实现

博客主页&#xff1a;&#x1f3c6;看看是李XX还是李歘歘 &#x1f3c6; &#x1f33a;每天分享一些包括但不限于计算机基础、算法等相关的知识点&#x1f33a; &#x1f497;点关注不迷路&#xff0c;总有一些&#x1f4d6;知识点&#x1f4d6;是你想要的&#x1f497; ⛽️今…

iptables 与 firewalld

iptables 一、主机型&#xff08;包过滤防火墙&#xff09; 1、简介&#xff1a; 包过滤型防火墙是一种网络安全设备或软件&#xff0c;它工作在 2、3、4 层&#xff0c;通过检查网络数据包的源地址、目标地址、协议、端口等信息&#xff0c;根据预定义的规则来决定是否允许…

垃圾回收GC

为什么要有垃圾回收? JVM之所以要有垃圾回收,是因为它能够自动管理内存,避免内存泄漏和内存溢出的问题,垃圾回收机制会自动检测和清理不再使用的对象,释放内存空间,使得开发者不需要手动管理内存,降低了开发难度和错误风险,同时,垃圾回收还可以优化内存分配,提高程序性能和响…

1985-2020年我国30m土地利用覆盖数据介绍

土地覆盖(LC)决定了地球各圈层之间的能量交换、水和碳循环。准确的 LC 信息是环境和气候研究的基本参数。考虑到在过去几十年中&#xff0c;随着经济建设的发展&#xff0c;中国发生了巨大的变化&#xff0c;连续和精细的 LC 监测是迫切需要的。然而&#xff0c;目前&#xff0…

File类、方法递归

File:代表文本 IO流&#xff1a;读写数据 1、 File 类构建对象的方式是什么样的&#xff1f; File 的对象可以代表哪些东西&#xff1f; 注意 File 对象既可以代表文件、也可以代表文件夹。 ● File 封装的对象仅仅是一个路径名&#xff0c;这个路径可以是存在的&#xff0c…

JavaScript从入门到精通系列第二十七篇:详解JavaScript中的包装类

大神引荐&#xff1a;作者有幸结识技术大神孙哥为好友获益匪浅&#xff0c;现在把孙哥视频分享给大家 孙哥链接&#xff1a;孙哥个人主页 作者简介&#xff1a;一个颜值99分&#xff0c;只比孙哥差一点的程序员 本专栏简介&#xff1a;话不多说&#xff0c;让我们一起干翻JavaS…

uniapp 查看安卓第三方插件抛出的异常

0.安装好andriod studio 和hbuilder 1.配置环境变量 鼠标右键此电脑-》设置》关于》高级系统设置》环境变量》系统变量》path中加入 具体的hbuildr adb目录看个人 2.在cmd中输入命令adb version 查看是否配置成功 出现版本号就是配置成功了 3.去hbuilder中&#xff0c;导航栏运…

04.Oracle的体系架构

Oracle的体系架构 一、主要组件 一、主要组件 下面是一张网图&#xff0c;大家可以了解一下oracle的体系架构 Oracle数据库的体系架构可以分为以下几个主要组件&#xff1a;实例&#xff08;Instance&#xff09;、数据库&#xff08;Database&#xff09;、表空间&#xff…

Kafka保证百万级数据写入和重发问题

Kafka作为当下流行的高并发消息中间件&#xff0c;大量用于数据采集&#xff0c;实时处理等场景&#xff0c; 那么它如何做到百万级写入速度呢?我们在享受它带来的高并发&#xff0c;高可靠等便利时&#xff0c;同时不得不面对可能存在的问题&#xff0c;项目中最常见的就是丢…

【KMP算法,数组】

文章目录 KMP算法数组数组的抽象类型定义数组的顺序存储三维数组 KMP算法 KMP算法设计思想&#xff1a; 利用已经部分匹配的结果而加快模式串的滑行速度&#xff0c;且主串S的指针i不必回溯&#xff0c;可提速到O(nm)&#xff1b; 定义next[j]函数&#xff0c;表明当模式中第j…

【ArcGIS微课1000例】0077:ArcGIS生成经纬网(shp格式)

使用ArcGIS制图的时候,可以很方便的生成经纬网、方里网及参考格网,但是在需要shp格式的经纬网,进一步在南方cass中使用经纬网的时候,就需要单独生成了。 如下图所示为全球大陆矢量数据,我们基于该数据来生成全球指定间距的经纬网数据。 在ArcGIS中,生成经纬网和方里网均…

Qwt 使用QwtDial绘制汽车仪表盘

1.概述 QwtDial是Qwt库中的一个类&#xff0c;用于绘制一个可旋转的仪表盘。 以下是类继承关系&#xff1a; 2.常用方法 void setOrigin(double origin) 设置仪表盘的原点角度&#xff0c;以度为单位&#xff0c;默认为0度&#xff0c;正值为逆时针旋转&#xff0c;负值为顺时…

两个字符串的删除操作

题目描述 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。每步可以删除任意一个字符串中的一个字符。 示例 思路 其实这道题的思路和最长公共子序列的思路一致&#xff0c;本题让我们求word1 和 word2 相同所需的最小步数&#xff0…

【QT】事件过滤器

事件过滤器1、给控件安装过滤器 2、重写过滤器事件bool eventFilter(两个参数); 基于上一个项目&#xff1a;【QT】事件分发器-CSDN博客 我的代码有问题&#xff0c;不能实现事件过滤器的功能&#xff0c;先记录下来 在头文件中要声明该函数。 #include "widget.h"…

单链表练习

单链表练习 相关内容&#xff1a; 1.再理解&#xff1a;LNode、*LinkList 2.单链表的整表创建&#xff08;头插法和尾插法&#xff09; 3.单链表的读取、插入、删除 4.单链表的整表删除 //单链表的初始化、创建、插入、删除、查找 //结点的结构体&#xff1a;数据域、指针域 …