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

文章目录

操作系统(Operator System)

概念:

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

以下是计算机体系结构,从操作系统的位置就可以看出来它有多重要。

总而言之操作系统有两个功能,一是提供抽象接口,二是管理软硬件资源

究其根本就是对上层用户提供良好稳定高效的服务,对下做好软硬件资源管理。

为什么要这么做呢?没有它又会怎么样呢?


为什么要有操作系统

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


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

我们营造一个场景,你现在是一名管理者,你要如何对你的下级成员进行管理?

首先你会把你下级成员的信息进行登记,然后你就有了一份人名单,上面详细记录着成员的属性信息(年龄,联系方式,释放达到本月KPI),有了它你就能对你的成员进行管理了,假设今天你发现某名成员的KPI指标不合格,这时你就会通知他的组长去通知他,让他收拾收拾准备下个月卷铺盖走人,这时你就完成了一次管理工作。

在此场景下你就是操作系统,你手下的小组长就是驱动程序,被开除的那个倒霉蛋就是硬件(当然操作系统最好不要炒硬件的鱿鱼,我开玩笑的啦😆)

那么在计算机视角他是如何管理硬件的呢?和你管理下级成员一致,它会把硬件的属性信息进行记录,如何再通过高效的数据结构将各个硬件的信息进行组织。

我们可以把这种行为进行高度提炼总结成六个字

先描述,再组织 (这个超级重要!!)。

你再回想自己,曾经是否写过通讯录这种程序。

首先你会对通讯录成员的重要属性进行提炼,最后通过链表这种数据结构进行组织。这种将实际问题转换成计算机理解的问题的过程就是一种建模过程。

c 复制代码
struct personInfo
{
    char name[20];
	int age;
	char sex[4];
    struct personInfo* next;
}
struct contactInfo
{
 struct personInfo* head;
 int total;
}

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


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

假试想没有操作系统对上层用户的制约,你可以随时对底层进行访问,你可以进行一切原本不能进行的越权访问,正是因为有操作系统的存在让我们有了一个安全,稳定,高效的运行环境。

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

所以任何用户都不能越高操作系统直接访问底层,这是原则不能违背。(如果你说嵌入式不就可以直接访问底层吗?我求求你们,不要那么杠精😕)


理解系统调用和库函数

概念:

在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

系统调用是操作系统提供的接口,我们通过系统调用可以做到访问操作系统。

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


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

相关推荐
用户8356290780511 天前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
侃侃_天下1 天前
最终的信号类
开发语言·c++·算法
christine-rr1 天前
linux常用命令(4)——压缩命令
linux·服务器·redis
Undoom1 天前
大模型选型“炼狱”与终结:一份来自普通开发者的AI Ping深度评测报告
后端
用户4099322502121 天前
FastAPI的CI流水线怎么自动测端点,还能让Allure报告美到犯规?
后端·ai编程·trae
双向331 天前
Docker 镜像瘦身实战:从 1.2GB 压缩到 200MB 的优化过程
后端
三坛海会大神5551 天前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
Cyan_RA91 天前
计算机网络面试题 — TCP连接如何确保可靠性?
前端·后端·面试
東雪蓮☆1 天前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
BingoGo1 天前
PHP-FPM 深度调优指南 告别 502 错误,让你的 PHP 应用飞起来
后端·php