深入理解操作系统与计算机体系结构

news2025/1/15 6:32:40

文章目录

  • 操作系统(Operator System)
  • 为什么要有操作系统
  • 操作系统是如何进行管理的
  • 为什么说操作系统是安全,稳定,高效的
  • 理解系统调用和库函数

操作系统(Operator System)

概念:

  操作系统(Operating System,简称OS)是计算机系统中负责管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统是计算机上的一个系统软件,它是计算机系统中的一个系统软件,它是用户与计算机硬件之间的接口,负责管理计算机的硬件和软件资源,并为它们提供合理的分配和使用。

  以下是计算机体系结构,从操作系统的位置就可以看出来它有多重要。
在这里插入图片描述

  总而言之操作系统有两个功能,一是提供抽象接口,二是管理软硬件资源
  究其根本就是对上层用户提供良好稳定高效的服务,对下做好软硬件资源管理。
  为什么要这么做呢?没有它又会怎么样呢?


为什么要有操作系统

  在早起刚出现计算机的时候,是没有操作系统这个概念的,计算机如果想要运行起来全要靠人为的操作,假试想你今天准备玩一款自己最喜欢玩的游戏,你不仅要思考如何通关游戏,你还要思考我怎么操作我的计算机它才能运作起来,这是十分痛苦的一件事情,所以操作系统就应运而生了,对于我们用户来讲,不再需要考虑底层硬件要如何调动,也不需要考虑怎么才能使计算机最高效的运行,这种问题全部交给操作系统解决,我们上层用户就解放了双手。


操作系统是如何进行管理的

  我们营造一个场景,你现在是一名管理者,你要如何对你的下级成员进行管理?
  首先你会把你下级成员的信息进行登记,然后你就有了一份人名单,上面详细记录着成员的属性信息(年龄,联系方式,释放达到本月KPI),有了它你就能对你的成员进行管理了,假设今天你发现某名成员的KPI指标不合格,这时你就会通知他的组长去通知他,让他收拾收拾准备下个月卷铺盖走人,这时你就完成了一次管理工作。
  在此场景下你就是操作系统,你手下的小组长就是驱动程序,被开除的那个倒霉蛋就是硬件(当然操作系统最好不要炒硬件的鱿鱼,我开玩笑的啦😆)
  那么在计算机视角他是如何管理硬件的呢?和你管理下级成员一致,它会把硬件的属性信息进行记录,如何再通过高效的数据结构将各个硬件的信息进行组织。
  我们可以把这种行为进行高度提炼总结成六个字
   先描述,再组织 (这个超级重要!!)。
  你再回想自己,曾经是否写过通讯录这种程序。
  首先你会对通讯录成员的重要属性进行提炼,最后通过链表这种数据结构进行组织。这种将实际问题转换成计算机理解的问题的过程就是一种建模过程。

struct personInfo
{
    char name[20];
	int age;
	char sex[4];
    struct personInfo* next;
}
struct contactInfo
{
 struct personInfo* head;
 int total;
}

  如果你学习过任何一门面向对象的编程语言的话,面向对象做的就是先描述再组织这个工作,将对某种实际问题的管理转换成了对特定数据结构的增删查改。


为什么说操作系统是安全,稳定,高效的

  假试想没有操作系统对上层用户的制约,你可以随时对底层进行访问,你可以进行一切原本不能进行的越权访问,正是因为有操作系统的存在让我们有了一个安全,稳定,高效的运行环境。
  正是因为要为我们维护这种安全,稳定,高效的运行环境。所以任何用户都不能越高操作系统直接访问底层,假试想如果有有一个可以随意对操作系统的管理进行干扰,操作系统的意义何在,操作系统表示我本来是要通过A方式进行管理的,但是今天用户突然打扰了我,我不会了呀,我接下来要怎么做呢?你可能是说操作系统你自己随机应变不就好了,sorry操作系统并没有你想的那么智能,这是操作系统就失去了原本的作用。
  所以任何用户都不能越高操作系统直接访问底层,这是原则不能违背。(如果你说嵌入式不就可以直接访问底层吗?我求求你们,不要那么杠精😕)


理解系统调用和库函数

概念:

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

  系统调用是操作系统提供的接口,我们通过系统调用可以做到访问操作系统。
  我们通过前面的学习已经知道任何用户都不能越高操作系统直接访问底层,库函数也一样,所以库函数底层实现一定封装了系统调用接口,像fread底层就封装了read系统调用接口。


本章到此结束,感谢您的阅读!

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

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

相关文章

C++中的数据结构与算法

随处可见的红黑树 一般会用到[key,value]。 例如github中这个例子,第一个是访问网站,第二个是访问次数,但是这个不是静态的,这有个动态排序,并且当我们需要让相应的访问次数加1的时候,我们用红黑树查找的时…

刷题训练之前缀和

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握前缀和算法。 > 毒鸡汤:学习,学习,再学习 ! 学,然后知不足。 > 专栏选自:刷题…

Oracle系统参数调整【数据库实例优化系列一】

Oracle实例是:内存组件和相关的后台进程组成。这些内存组件提高了数据库的运行,而后台进程负责管理系统和内存组件。 一、SGA和实例优化 Oracle的SGA是指的系统全局区。sga是数据库运行期间使用的一段公有内存,即数据库用户都可以访问这段内存,包括: 共享池、重做日志缓冲…

分享一些实用的工具

1、amCharts5:模拟航线飞行/业务分布图/k线/数据分析/地图等 网址: JavaScript mapping library: amCharts 5https://www.amcharts.com/javascript-maps/ Demo地址:Chart Demos - amChartshttps://www.amcharts.com/demos/#maps 他分为amC…

Xcode隐私协议适配

1. Privacy manifest files 1.1 简介 自己App或三方SDK(通过XCFrameworks|Swift packages|Xcode projects集成的)需要包含一个隐私清单文件(privacy manifest)叫作 PrivacyInfo.xcprivacy。它是一个属性列表,记录了A…

【Hadoop】-HDFS的存储原理[4]

目录 前言 一、fsck命令 1、HDFS副本块数量的配置 2、fsck命令查看文件的副本数 3、block配置 二、NameNode元数据 1、edits文件 2、fsigame文件 3、NameNode元数据管理维护 4、元数据合并控制参数 5、SecondaryNameNode的作用 三、HDFS数据的读写流程 1、数据写入…

2024第十五届蓝桥杯网络安全赛项WriteUp

欢迎关注公众号【Real返璞归真】回复【蓝桥杯2024】获取完整题目附件。 排名 安全知识 错1个选择题,题目说的不清楚,没搞懂题意。肯定不能用eval。错了理论题有点遗憾。 没想到这题前端是要解析json数据,排除CD选了A,结果发现正…

AI大模型日报#0427:阿里智能体“组装工厂”开源、Meta推70M参数SceneScript模型解码真实场景

导读: 欢迎阅读《AI大模型日报》,内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了每条资讯的摘要。 标题: BattleAgent:再现历史事件,对历史战役进行多模态动态模拟|大模型论文摘要: 科技论文摘要&…

百度SDK创建应用地址解析失败问题

在百度SDK的设置里先用IP白名单校验全部都通过,项目上线之后再改就行 0.0.0.0/0

数据结构(七)---二叉树

目录 一.树的基本概念 二.树的性质 三.二叉树 1.二叉树的基本概念 2.特殊的二叉树 (1)满二叉树 (2)完全二叉树 (3)二叉排序树 (4)平衡二叉树 3.二叉树的性质 4.完全二叉树…

安装好fedora_kde系统后的操作

文章目录 1 前言2 办公软件2.1 输入法2.1.1 安装 fcitx52.1.2 安装 fcitx5-rime2.1.3 安装 東風破2.1.4 使用 東風破 安装 郭斌勇 大神的 新世纪五笔 项目2.1.5 配置 fcitx5-rime2.1.6 重新部署 3 感谢阅读~ 1 前言 本文用的是 fedora 40 kde plasma 6。 因为有很多的软件都同时…

VTK----VTK数据结构详解1(几何篇)

在讲VTK的数据结构之前,我们先了解可视化数据的两个特征:离散性、有规则或无规则。 离散性。当我们使用计算机去表示我们的数据时,一般都是基于有限数量的点做信息的采样(或插值),因此可视化的数据是以一种…

Sylar C++高性能服务器学习记录07 【协程模块-知识储备篇】

早在19年5月就在某站上看到sylar的视频了,一直认为这是一个非常不错的视频,由于本人一直是自学编程,基础不扎实,也没有任何人的督促,没能坚持下去,每每想起倍感惋惜。恰逢互联网寒冬,在家无事&a…

MacOS 文件系统种类及介绍

MacOS 文件系统种类 详细介绍 详细介绍 从图片中我们可以看到一个文件系统选择器的界面,列出了多种不同的文件系统选项。这些文件系统各有其特点和用途,以下是它们之间的主要区别: APFS:Apple File System,是苹果公司为…

Python实现自动化的服务器部署和配置管理库之pyinfra使用详解

概要 在现代软件开发中,自动化部署和配置管理变得越来越重要。Python pyinfra库是一个强大的工具,可以帮助开发者实现自动化的服务器部署和配置管理。本文将介绍pyinfra库的安装、特性、基本功能、高级功能、实际应用场景以及总结。 安装 首先,来看一下如何安装pyinfra库。…

UE4_动画基础_FootIK

角色由于胶囊体的阻挡,双脚与地面平行,不会与斜坡、台阶等贴合,有一条腿会处于悬空状态,通过双骨骼IK节点使一只脚太高,让后胶囊体下降,修正双脚的角度。这就是逆向运动IK的方法。 一、新建第三人称模板游戏…

【并集查找 最大公约数 调和数】952. 按公因数计算最大组件大小

本文涉及知识点 图论 并集查找 最大公约数 调和数 LeetCode952. 按公因数计算最大组件大小 给定一个由不同正整数的组成的非空数组 nums ,考虑下面的图: 有 nums.length 个节点,按从 nums[0] 到 nums[nums.length - 1] 标记; 只…

Git的操作和使用

一、基本操作 1、创建git本地仓库 (1)创建目录:mkdir gitcode (2)进入目录:cd gitcode/ (3)查询目录内容:ls (4)在当前目录下创建git本地仓库…

react引入iconfont的svg图标

react引入iconfont的svg图标 本文目录 react引入iconfont的svg图标普通图标通过link引入css组件内引入css使用 svg图标通过script引入js组件内引入js使用 通过封装组件自定义封装组件中调用 通过antd封装使用 普通图标 通过link引入css <link rel"stylesheet" h…

机器学习进行情感分析(上)

目录 一、 绪论二、 数据处理1. 构建CSV文档2. 构建模型前的思考2.1. 问题2.2. 解决方法 3. 读取数据4. 用正则表达式来进行对特定符号的剔除5. 使用口袋模型进行文本处理和特征提取 三、 数据划分 一、 绪论 近年来&#xff0c;随着互联网和社交媒体的快速发展&#xff0c;人们…