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

文章目录

  • 操作系统(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.rhkb.cn/news/314941.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

会跳舞的网站引导页HTML源码

源码介绍 这套引导页源码非常好看,网址也不会不停的动起来给人一种视觉感很强烈 简单修改一下里面的地址就行看,非常简单! 效果预览 源码下载 会跳舞的网站引导页HTML源码

数据结构——插入排序

基本思想: 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 实际中我们玩扑克牌时&…

视频通话实时换脸:支持训练面部模型 | 开源日报 No.235

iperov/DeepFaceLive Stars: 19.7k License: GPL-3.0 DeepFaceLive 是一个用于 PC 实时流媒体或视频通话的人脸换装工具。 可以使用训练好的人脸模型从网络摄像头或视频中交换面部。提供多个公共面部模型,包括 Keanu Reeves、Mr. Bean 等。支持自己训练面部模型以…

图像处理到神经网络:线性代数的跨领域应用探索

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…

Maven解决找不到依赖项

报错如图 方案一&#xff1a;Maven的Setting文件中添加albaba的镜像文件 1.下载maven &#xff1a;Maven – Download Apache Maven 2. 配置镜像 更改成这个&#xff1a; <mirror> <id>alimaven</id> <name>aliyun maven</name> <url&g…

Rust腐蚀服务器搭建架设教程ubuntu系统

Rust腐蚀服务器搭建架设教程ubuntu系统 大家好我是艾西一个做服务器租用的网络架构师。Rust腐蚀游戏对于服务器的配置有一定的要求很多小伙伴就思考用linux系统搭建的话占用会不会小一点&#xff0c;有一定电脑基础的小伙伴都知道Linux系统和windows系统相比较linux因为是面板…

短视频生成背景文字工具(前端工具)

过年这两天有些无聊就刷刷抖音&#xff0c;刷着刷着自己也蠢蠢欲动&#xff0c;想发上几个&#xff0c;可是却找不到合适自己的模板。由于个人喜欢一些古诗文之类的&#xff0c;所以自己简单的编写了一个小工具&#xff0c;如下图&#xff1a; 当设置好了之后&#xff0c;将浏…

小程序线多点路图绘制

需求 当接口返回一连串地图坐标&#xff0c;需要根据这些坐标串联起来&#xff0c;形成一个线路图&#xff08;本次使用步行导航线路图&#xff09;。 思路 首先优先想到使用小程序Map组件的polyline属性去进行展示。但是我们发现直接使用该属性进行坐标绘制画出来的数据都是…

《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;基于数组实现的有界阻塞队列&…

编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 编写…

Docker② —— Cgroups详解

1. 概述 Cgroups 的全称是control groups&#xff0c;cgroups为每种可以控制的资源定义了一个子系统。Cgroups分为三个部分&#xff1a; cgroup 本身&#xff1a;对进程进行分组hierarchy&#xff1a;将 cgroup 形成树形结构subsystem&#xff1a;真正起到限制作用的部组件 cp…

【navicat】oracle library is not loaded 问题复现和解决方案

问题原因&#xff1a;客户端oci版本安装错误&#xff0c;navicat需要64位的oci,但是使用32位的oci。 解决方案&#xff1a;官网下载64位oci进行配置。本次演示的解决多了splplus&#xff0c;其实不必要安装也能运行。 首先判断是否数据库已经打开 尝试使用splplus连接数据库 1…

安装crossover游戏提示容量不足怎么办 如何把游戏放到外置硬盘里 Mac电脑清理磁盘空间不足

CrossOver作为一款允许用户在非原生操作系统上运行游戏和应用程序的软件&#xff0c;为不同平台的用户提供了极大的便利。然而&#xff0c;随着游戏文件大小的不断增加&#xff0c;内置硬盘的容量往往无法满足安装需求。幸运的是&#xff0c;通过一些简单的步骤&#xff0c;我们…

基于自注意力机制的长短期记忆神经网络(LSTM-SelfAttention)的回归预测

提示&#xff1a;MATLAB版本需要R2023a以上 基于自注意力机制的长短期记忆神经网络&#xff08;LSTM-SelfAttention&#xff09;是一种用于时序数据预测的模型。这个模型结合了两个不同的结构&#xff0c;即长短期记忆网络&#xff08;LSTM&#xff09;和自注意力机制&#xff…

2024.阳光能源追光计划暨大陆考察团交流分享会

近日大陆考察团抵达香港&#xff0c;受到了本司热情接待和安排。公司于4月27日下午举办了阳光能源追光计划主题交流会。 会上公司营销部总监张超&#xff0c;分享了阳光能源近几年的能源发展之路及公司新推出的追光计划&#xff0c;得到了大陆考察交流团团长杨国均先生的高度赞…

如何在 Visual Studio 中通过 NuGet 添加包

在安装之前要先确定Nuget的包源是否有问题。 Visual Studio中怎样更改Nuget程序包源-CSDN博客 1.图形界面安装 打开您的项目&#xff0c;并在解决方案资源管理器中选择您的项目。单击“项目”菜单&#xff0c;然后选择“管理 NuGet 程序包”选项。在“NuGet 包管理器”窗口中…

Dubbo应用可观测性升级指南与踩坑记录

应用从dubbo-3.1.*升级到dubbo-*:3.2.*最新稳定版本&#xff0c;提升应用的可观测性和度量数据准确性。 1. dubbo版本发布说明(可不关注) dubbo版本发布 https://github.com/apache/dubbo/releases 【升级兼容性】3.1 升级到 3.2 2. 应用修改点 应用一般只需要升级dubbo-s…

第72天:漏洞发现-Web框架中间件联动GobyAfrogXrayAwvsVulmap

案例一&#xff1a;某 APP-Web 扫描-常规&联动-Burp&Awvs&Xray Acunetix 一款商业的 Web 漏洞扫描程序&#xff0c;它可以检查 Web 应用程序中的漏洞&#xff0c;如 SQL 注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界 面&#…

JavaEE初阶——多线程(七)——定时器

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享多线程的第七篇文章——关于定时器 如果有不足的或者错误的请您指出! 目录 4.定时器4.1标准库提供的定时器4.2自己实现一个定时器4.2.1任务类4.2.2Timer类4.2.3 有一个线程来负…

JavaScript云LIS系统源码 前端框架JQuery+EasyUI+后端框架MVC+SQLSuga大型医院云LIS检验系统源码 可直接上项目

JavaScript云LIS系统源码 前端框架JQueryEasyUI后端框架MVCSQLSuga大型医院云LIS检验系统源码 可直接上项目 云LIS系统概述&#xff1a; 云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序&#xff0c;可协助区域内所有临床实验室相互协调并完成日常检验工作&#xff…