操作系统究竟是什么?在计算机体系中扮演什么角色?

news2024/11/16 10:25:16

操作系统究竟是什么?在计算机体系中扮演什么角色?

  • 一、操作系统概念
  • 二、操作系统如何管理软硬件资源
    • 2.1 何为管理者
    • 2.2 操作系统如何管理硬件
  • 三、系统调用接口作用
  • 四、用户操作接口
  • 五·、广义操作系统和狭义操作系统

一、操作系统概念

下面是来自百度百科对操作系统的概念:

 操作系统(英语:Operating System,缩写:OS)是一种内置的程序,用来协作计算机的各种硬件,以与用户进行交互。常见有Windows,macOS 和开源的 Linux。
 根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
 操作系统是人与计算机之间的接口,也是计算机的灵魂。

 emmm… 非常抽象
 通俗来讲,操作系统是一款进行软硬件资源管理的软件。操作系统通过将软硬件资源管理好(手段),从而给用户提供一个良好(稳定、高效、安全)易用的使用环境(目的)
 emmm…那操作系统是如何管理软硬件资源?如何给操作用户提供一个良好易用的使 用环境?

 下面是计算机软硬件架构图,下面博主基于此图分析上述两个问题,以及图中每个部分的意义!
在这里插入图片描述

二、操作系统如何管理软硬件资源

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

2.1 何为管理者

 生活中,所有的事情宏观上大致可分为两大类:做决策、做执行。而对于管理者来说,基本以做决策为主。但管理者如何做决策,作出正确决策?
 现在假设校长要管理学生,比如让张三退学。但校长没有和张三见过面,凭什么让张三退学?原来校长通过辅导员拿到了全校所有学生的各科成绩信息。校长拿到了完善的数据,发现张三挂科严重,才作出让张三退学的决定。所以管理的本质不是管人,而是管理数据!
 但现在学生人数过多,校长管理学生需要得到更多相关信息(诸如:姓名、入学年份、紧急联系人等等)。其中一种解决办法就是将所有学生的相关信息写入一张excel表格中,从而实现结构化管理。但如果人数过多,这样管理起来还是很麻烦,那怎么办?

 我们可以通过编程中面向对象的知识,通过一个结构体将所有的信息封装起来,比如:

struct Student
{
	char name[4];//学生名字
	int age;
	string numbers;//电话号码
	// .....
}

我们可以将所有学生的信息都转化为一个结构体对象,然后通过链表的形式链接起来。
这就是对学生管理的一个建模过程,最终将管理学生转化成对链表的增删查改!!

 管理可总结为“先描述,在组织”。即被管理的对象以什么样的结构体形式来描述,然后将结构体设定具体对象,通过特定的数据结构组织起来。

2.2 操作系统如何管理硬件

 我们已经知道管理的本质是管理数据,所以操作系统要管理底层硬件,首先得到相应硬件的数据信息(比如磁盘已使用空间、数据存放区域、是否正常等的)。但操作系统和硬件没有直接接触,所以中间存在驱动程序。驱动程序将硬件的相关信息传递给操作系统。同时由于各种信息庞杂,为例更好管理,操作系统需要将相关信息通过结构体方式(操作系统主要是C写的)进行描述,在通过特定的数据结构组织起来。从而将对硬件的管理转化成这些数据结构的管理
 当操作系统作出某种决策时,操作系统将信息传递给驱动程序,通过驱动程序来完成操作系统对硬件的控制。
在这里插入图片描述

三、系统调用接口作用

在所有的计算机体系中,都不允许用户直接对操作系统进行操作。原因在于操作系统不相信用户。就像银行系统一样,银行为什么要柜台和玻璃,为什么不让用户自己取钱后自己修改以下数据。原因在于银行不相信我们,但又必须要为我们提供相关服务,所以安装了玻璃,并在玻璃上开了一个洞。同样用户中存在坏人,所以操作系统不允许用户直接操作控制它。但操作系统要为我们提供相应的服务(比如向磁盘中写数据),所以提供了system call(系统调用接口)。所以的用户请求只能通过系统调用借口传给操作系统!!
在这里插入图片描述

四、用户操作接口

 系统调用使用起来比较麻烦,所以对于站在系统上的人提供了一些外壳程序(Linux中为shell外壳,windows为图形化界面),而这写外壳程序大多是由C/C++写的,其中必然存在系统调用借口。
 系统调用在使用上,功能比较基础,对用户的要求相对也比较高。所以,大佬们对部分系统调用进行适度封装,从而形成库。有了库,就很有利于更上层用户或者开发者进行二次开发。
在这里插入图片描述

五·、广义操作系统和狭义操作系统

在这里插入图片描述

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

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

相关文章

Springboot做分组校验

目录 分组校验 Insert分组 Upload分组 测试接口 测试结果 添加测试 更新测试 顺序校验GroupSequence 自定义分组校验 自定义分组表单 CustomSequenceProvider 测试接口 测试结果 Type类型为A Type类型为B 总结: 前文提到了做自定义的校验注解&#xff…

React高阶组件(HOC)

高阶组件的基本概念 高阶组件(HOC,Higher-Order Components)不是组件,而是一个函数,它会接收一个组件作为参数并返回一个经过改造的新组件: const EnhancedComponent higherOrderComponent(WrappedCompo…

小游戏-扫雷

扫雷大多人都不陌生,是一个益智类的小游戏,那么我们能否用c语言来编写呢, 我们先来分析一下扫雷的运行逻辑, 首先,用户在进来时需要我们给与一个菜单,以供用户选择, 然后我们来完善一下&#…

解决方案Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j.

文章目录 一、现象二、解决方案 一、现象 当安装好JDK跟neo4j,用neo4j.bat console来启动neo4却报错: 部分报错信息: Starting Neo4j. WARNING! You are using an unsupported Java runtime. Please use Oracle Java™ 11, OpenJDK™ 11 t…

Rust下载安装、卸载、版本切换、创建项目(包含指定版本的)

先声名一下,下面所说的版本号为xxxxx-x86_64-unknown-linux-gnu中xxxxx的部分。 下载安装 下载最新版本的Rust: curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh info: downloading installer重启shell 或者 按照提示 执行命令让环境变…

Day56-LNMP架构扩展为集群模式实战精讲

Day56-LNMP架构扩展为集群模式实战精讲 1. 企业级标准部署知乎产品wecenter1.1 部署知乎软件Wecenter 2. 企业级迁移数据库到独立服务器2.1 为什么要进行数据库的拆分2.2 数据库拆分架构演变过程,如下图所示2.3 数据库拆分环境规划2.4 数据库拆分架构详细步骤2.4 we…

Kafka broker

1. zk中存储的kafka信息 /kafka/brokers/ids存储了在线的broker id。 /kafka/brokers/topics/xxx/partitions/n/state存储了Leader是谁以及isr队列 /kafka/controller辅助Leader选举,每个broker都有一个controller,谁先在zk中注册上,谁就辅助…

第八节:深入讲解SMB中的Http组件

一、概述 Http组作是SMB中的核心组件之一,在第七节中讲解了如何简洁的进行web程序部署和运行,这只是它的功能之一。在本节中,我们将介绍Http组件的重要属性。 二、请求头Request 1、支持方法 支持POST、GET、PUT、DELETE、OPTIONS等方法&a…

二十、软考-系统架构设计师笔记-真题解析-2020年真题

软考-系统架构设计师-2020年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.按照我国著作权法的权利保护期,( )受到永久保护。 A.发表权 B.修改权 C.复制权 D.发行权 解析: 答案: 2.假设某计算机的字长为32位&a…

爬虫入门系列-HTML基础语法

🌈个人主页:会编辑的果子君 💫个人格言:“成为自己未来的主人~” HTML基础语法 bs4解析比较简单,但是呢,首先你需要了解一丢丢的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简…

Git的原理和使用(四)

目录 远程操作 理解分布式版本控制系统 远程仓库 新建远程仓库 克隆远程仓库 向远程仓库推送 拉取远程仓库 配置Git 忽略特殊文件 为命令配置别名 标签管理 理解标签 创建标签 操作标签 远程操作 理解分布式版本控制系统 1、每个人的电脑上都是一个完整的版本库…

BUG未解之谜01-指针引用之谜

在leetcode里面刷题出现的问题,当我在sortedArrayToBST里面给root赋予初始值NULL之后,问题得到解决! 理论上root是未初始化的变量,然后我进入insert函数之后,root引用的内容也是未知值,因此无法给原来的二叉…

如何使用半群、群论及格理论研究人机协同

在数学中,半群、群论和格理论都是重要的代数结构和数学分支,它们分别研究了不同类型的代数系统和结构。简单介绍一下它们的基本概念: 1、半群(Semigroup): 半群是一个集合,配备了一个二元运算&a…

Linux:文件增删 文件压缩指令

Linux:文件增删 & 文件压缩指令 文件增删touch指令mkdir指令cp指令rm指令rmdir指令 文件压缩zip & unzip 指令tar指令 文件增删 touch指令 功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新…

UG NX二次开发(C#)-通过曲线组生成NURBS曲面

文章目录 1、前言2、UG NX中通过曲线组生成NURBS曲面的操作3、采用NXOpen C#方法的源代码1、前言 在UG NX中,曲线、曲面的操作使用比较多,对于创建NURBS曲面,可以通过曲线组来生成,本文以NXOpen C#的方法实现通过曲线组生成NURBS曲面的功能。对于UG NX二次开发感兴趣或者有…

【JAVA】通过JAVA实现用户界面的登录

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-wyCvaz0EBNwHcwsi {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

代码学习记录25---回溯算法最后一天

随想录日记part25【很难】 t i m e : time: time: 2024.03.21 主要内容:回溯算法在之前的学习中已经熟练掌握,今天对其进行挑战并进行总结:1:重新安排行程 ;2.N皇后 ;3.解…

SpringJPA 做分页条件查询

前言: 相信小伙伴们的项目很多都用到SpringJPA框架的吧,对于单表的增删改查利用jpa是很方便的,但是对于条件查询并且分页 是不是很多小伙伴不经常写到. 今天我整理了一下在这里分享一下. 话不多说直接上代码: Controller: RestController public class ProductInstanceContr…

Java基础-正则表达式

文章目录 1.基本介绍2.正则底层实现1.matcher.find()完成的任务2.matcher.group(0)分析1.源代码2.解释(不分组)3.解释(分组) 3.总结 3.正则表达式语法1.基本介绍2.元字符的转义符号1.基本介绍2.代码实例 3.字符匹配符1.基本介绍2.…

洛谷day3

B2053 求一元二次方程 - 洛谷 掌握printf用法&#xff1b; #include <iostream> #include <cmath> using namespace std; double a,b,c; double delta; double x1,x2;int main() {cin>>a>>b>>c;delta b*b-4*a*c;if(delta>0){x1 (-bsqrt…