再谈操作系统

news2024/11/26 22:37:14

在这里插入图片描述

文章目录

  • ⭐1. 什么是操作系统
  • 🌟2. 为什么要有操作系统
  • 🌠3. 操作系统如何管理

⭐1. 什么是操作系统

先入为主,操作系统是一款管理软件

操作系统分为两部分

  • 操作系统本身,主要做一些进程管理、内存管理、文件管理、驱动管理等工作,这种核心部分叫做内核
  • 用户界面,计算机与用户进行交互的方式

🌟2. 为什么要有操作系统

整个计算机是层状结构:

image-20230713223047740

  • 底层硬件是以冯诺依曼的组织结构用总线所连接起来

  • 所以的硬件要与操作系统匹配使用,就需要有对应的驱动程序

    比如说,我们所使用的鼠标,当鼠标插入电脑的时候,可能需要等个一两秒,这个时间段,就是在加载鼠标所需的驱动程序

  • 操作系统在这个中间,起到一个承上启下的作用

    有了操作系统,就能帮助用户管理好下面的软硬件资源,给用户提供一个良好(安全、稳定、高效)的运行环节。

    这里的用户,其实并不是指的广大普通用户,普通用户使用的各种软件,并不是真正意义上使用操作系统,这些软件都是程序员开发出来的。所以,要让程序员有一个良好的开发环境,才能在此基础上开发出各种优秀的软件。

  • 不过,操作系统不相信任何用户(包括开发人员),但是为了给用户提供服务,所以以接口的方式给用户提供调用的入口,来获取内部的数据,这种方式就成为系统调用,所有访问操作系统的行为,就只能提供系统调用。

    银行信任用户吗?答案是不信任,运送货币时采用武装押运、无死角的监控、保险柜,这些要保证银行的安全

    但如果将银行全封闭,那怎么给用户提供存钱、取钱的服务呢?

    所以在柜台就开了一个很小的窗口,存取钱的时候通过柜台这个小窗口,来为用户提供服务

    对应操作系统也是一样,不信任用户,防止有用户恶意篡改数据,所以不会让用户直接访问里面的数据,但为了不妨碍为用户提供服务,所以提供了一些接口让用户来调用访问,这样既保证了操作系统的安全,也为用户提供了满足需求的服务

  • 系统调用对应用户来说并不是那么容易,于是就有了shell外壳,操作系统提供给用户与操作系统交互的一种命令行接口。它是一个命令解释器,可以解释和执行用户输入的命令,并与操作系统进行通信(可以理解为媒婆)。

    除了shell,操作系统还有一些库,这些库就是对系统调用接口进行封装(C标准库、数学库、网咯库),更加方便于用户来调用

🌠3. 操作系统如何管理

打个比方:

在一所大学里面,谁是管理者?毫无疑问——校长

那谁是被管理者?学生

但是每次都是校长对接我们学生吗?那可不是,大学四年说不定都见不到校长一两面

那我们连管理者都见不到,我们还能被管理起来,这可以说明管理者和被管理者不一定是需要见面的

那校长是如何不通过见面,还能管理到我们的呢?其实校长只需要拿到我们学生的数据就能知道了,例如学生的成绩、是否违法校纪校规、是否获得表彰什么的,就能了解到学生的各方面,从而对学生进行管理。有时候会组织访谈,坐在会议室里面聊聊天,但这是真正意义上的聊天吗?本质上还是通过聊天获取到数据:最近过的好不好、学习有没有什么困难、有没有什么意见等等,这些都是通过聊天获取到的信息

所以,管理者只要能够将信息管理起来,就能通过这些信息做出决策,从而达到对人的管理

管理者和被管理者不见面,那这么拿到数据呢?这个一般就是通过辅导员来拿到各专业学生的数据

这里的辅导员,属不属于管理者呢?管理者和被管理者的区别就是一个做决策、一个执行决策

而辅导员,只是执行校长的决策,更多做的是执行层面的事情,所以真正意义上并不是管理者

在这个体系中,校长就相当于操作系统、辅导员相当于驱动程序、学生相当于软硬件资源

操作系统通过获硬件的状态数据来进行管理,这些数据由驱动程序来收集,然后再交给操作系统

image-20230714173228325

但是一个大学,学生成千上万,辅导员将数据汇总到校长,面对大量的数据,校长肯定是难以对这些数据进行分析的。

假设校长懂技术,现在就将学生的各项信息描述起来:学院、学号、姓名、性别、专业、成绩等等

struct student
{
	char faculty[];	//	院系
	char stu_num[];	//	学号
	char name[];	//	姓名
	char gender[];	//	性别
	char major[];	//	专业
	char garde[];	//	成绩
	struct sturdent* next;
};

那这样,就得到了一个描述学生信息的链表,从而管理好这个链表结构即可。如果要查找成绩最好的,只需要调用配套的统计成绩的方法。这就将学生的管理工作转变成了对链表的增删改查

那对于操作系统也是同理,管理任何软硬件资源对象,最终都可以转换成对某种数据结构的增删查改

校长虽然会处理这些数据,但是他也可以向辅导员发指令,比如说,某个学生违法校规,要开除,那这时候就可以和辅导员说,你哪个学生被开除了,然后再由辅导员去通知这个学生,校长只需要在这个链表中把这个学生的信息删除即可;如果新转来一个学生,辅导员把他的信息统计上来交给校长,然后校长往链表插入这个学生对象即可。


以上这些过程,都是先描述对象,再组织,这贯穿于整个编程过程,C++/Java/Python这些高级语言,都是面向对象编程,要写一个学生信息管理系统,首先肯定是定义出一个类,然后再用某种数据结构将这些对象组织起来,只不过组织这个过程,这些语言大部分已经帮我们完成了,例如C++的stl。

通过这些再来总结一下:六个字——先描述,在组织

  1. 管理者和被管理者不一定要交互
  2. 要做出管理,只需拿到数据即可
  3. 将数据进行描述,然后再组织起来(数据结构的增删查改)
  4. 操作系统将一个一个的软硬件设备描述起来,每个设备都有对应的结构体,根据其属性采用某种数据结构组织,所以操作系统内注定存在大量的数据结构

那本期的分享就到这里咯,如有不足欢迎指正,我们下期再见,如果还有下期的话

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

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

相关文章

【AGC】删除控制台应用重建报错url is null问题

【关键字】 AGC、agconnect-services.json、InvalidParameterException 【问题描述】 有开发者反馈在删除了AppGallery Connect中某个应用及其对应的项目,再重新创建相同的应用(包名一致),并且重新下载agconnect-services.json到…

【c++修行之路】IO流架构及使用

文章目录 前言输入输出库文件读写序列化与反序列化结语 前言 大家好久不见,今天一起来学习c中的IO流。 输入输出库 这两张架构图略显复杂,这里给出一张比较清楚的IO流架构图: 也就是说,我们平时使用的诸如cin、cout、cerr、cl…

2023华为产品测评官-开发者之声 | 华为云CodeArts征文活动,多重好礼邀您发声!

"2023华为产品测评官-开发者之声"活动激发了众多开发者和技术爱好者的热情,他们纷纷递交了精心编写的产品测评报告。活动社群充满活力,参与者们热衷于交流讨论,互相帮助解决问题,一起探索云技术的无限可能。…

C# Nullable学习

在C#1.x,一个值类型变量是不可以被赋予null值的,否则会产生异常。 在C#2.0中,提供了Nullable类型,允许用它定义包含null值(即空值)的数据类型,这对处理数据库中包含可选字段以及很多方面都有帮…

【云原生】Docker网络Overlay搭建Consul实现跨主机通信

目录 1.overlay网络是什么? 实现overlay环境 1.overlay网络是什么? 在Docker中,Overlay网络是一种容器网络驱动程序,它允许在多个Docker主机上创建一个虚拟网络,使得容器可以通过这个网络相互通信。 Overlay网络使用…

linux - bc 命令安装

一.引言 迁移新机器后发现没有 bc 命令,之前 shell 脚本的一些计算逻辑会出错,下面快速安装一下。 二.安装 bc 请确保在 root 权限下执行该命令: sudo yum install bc 出现下述界面即安装成功: 三.测试 bc 测试下脚本里 % 的…

Nautilus Chain 更换全新测试网,主网即将在不久上线

目前,Nautilus Chain 正在为主网上线前的最后阶段做准备,据悉该链更新了全新的测试网,在此前版本的测试网的基础上进行了全新的技术升级,最新测试网版本与生态发展的技术规划更为贴近。本次测试网升级将会是最后一次测试网版本的迭…

ylb-接口8手机号注册

总览: 在web模块下的service包,补充短信接口(SmsService):检查用户发送的验证码是否正确 package com.bjpowernode.front.service;public interface SmsService {/*** param phone 手机号* return true:发…

聚集十二罗汉,探索宇宙本质,马斯克神秘的xAI

作者 | 德新编辑 | 王博 马斯克组团入局通用人工智能。 7月12日,马斯克发推官宣成立新的公司xAI。据官网介绍,这是一家试图「探索理解宇宙本质」的公司。 新公司公布了12名首批成员,除了马斯克外,他们曾经在「AlphaStar、AlphaCod…

springboot线上买菜系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…

【Linux进阶之路】冯诺依曼体系结构与操作系统

前言 存储器与CPU 在正式介绍今天的话题之前,博主先来带大家搞清楚一些硬件的概念,方便接下来的理解。 存储器,顾名思义就是用来存储的设备,那在计算机里,存储器包含什么呢? 答:内存 外存&a…

【C语言初阶(14)】扫雷游戏(优化:标记地雷+自动展开)

文章目录 Ⅰ游戏规则Ⅱ 游戏实现思路Ⅲ 游戏实现步骤⒈菜单界面⒉创建棋盘① 创建两个棋盘② 防止数组越界 ⒊棋盘初始化⒋棋盘的打印⒌布置地雷⒍玩家排查雷实现步骤⒎计算 x,y 周围有多少雷⒏展开非雷区⒐标记地雷⒑取消标记 Ⅳ 模块化代码实现⒈test.c⒉game.h⒊…

TCP协议下的三大协议的验证实验

系列文章目录 数通王国历险记(1) 前言 一,我们要先知道PDU是什么? 二、TCP协议下的三大协议的验证实验 1.FTP的验证实验 1,拓扑图 2.将lsw4配置一下 3,FTP服务器端开启FTP服务: 4&#x…

Jenkins的几种安装方式以及邮件配置

目录 Jenkins介绍 Jenkins下载、安装 一、通过war包安装 二、通过docker安装 jenkins 容器中添加 git, maven 等组件 jenkins 容器中的公钥私钥 在 jenkins 容器中调用 docker 简单的方式启动 Docker server REST API 一个 jenkins 示例 三、通过Homebrew安装 访问Je…

静态库 的制作与使用

文章目录 重要命令程序组成静态库制作流程静态库的使用 gcc main.c -o APP -I(i) 头文件路径 -l(L) 库名字(xxx) -L 库路径 重要命令 gcc -o -I(大写i) -l(小写L) -L cp:复制文件 -r 递归,用于复制文件夹所有文件 mv:移动文件 程…

代码随想录算法训练营第53天 | 动态规划 part14 ● 1143.最长公共子序列 ●1035.不相交的线 ● 53. 最大子序和

# 1143.最长公共子序列 和718最长公共子数组 对比 本题可以不连续 int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size() 1, vector<int>(text2.size() 1, 0));for (int i 1; i < text1.size(); i) {for…

陆地生态系统植被净初级生产力(NPP)—CASA模型

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。碳中和可以从碳排放&#xff08;碳源&#xff09;和碳固定&#xff08;碳汇&#xff09;这两个侧面来理解。陆地生态系统在全球碳循环过程中有着重要作…

Swagger、knife4j简介

Swagger 简介 Swagger 是一个规范和完整的框架&#xff0c;用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(API Documentation & Design Tools for Teams | Swagger)。 它的主要作用是&#xff1a; 使得前后端分离开发更加方便&#xff0c;有利于团队协作 接口的…

leetcode 1218. Longest Arithmetic Subsequence of Given Difference(给定差值的最长算术子序列)

给数组arr和一个差值difference, 不打乱arr中数字的顺序&#xff0c;抽取最长的子序列&#xff0c;使序列中每相邻两个元素的差值为difference. 求满足条件的最长子序列的长度。 思路&#xff1a; DP 因为差值difference是固定的&#xff0c;每抽取一个元素&#xff0c;它前…

帆软报表分页预览如何增加一种新的导出类型。

如图,这里要在 导出下拉菜单中新增一个签章PDF的导出。 通过分析源码,发现这个菜单的定义是再报表预览加载的html页面里面 咋们如何再这里面插入我们新加的菜单项呢。 首先该页面的内容是通过MemXPageActor的flushHtml方法产生的。所以我们需要继承MemXPageActor来重载flus…