[Linux入门]---管理者操作系统

文章目录

1.操作系统概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:

  • 内核(进程管理,内存管理,文件管理,驱动管理)
  • 其他程序(例如函数库,shell程序等等

2.设计操作系统的目的

1.操作系统是什么呢?

操作系统是一款管理软硬件资源的原件

2.为什么会存在操作系统呢?

我们程序员平时很难和硬件设备打交道,更别说对硬件知识不了解的普通用户了,而操作系统通过管理好底层的软硬件资源(手段),达到用户更加良好的(稳定、安全、高效)运行环境(目的)!

3.操作系统是怎么做到呢?

操作系统中存在大量数据,但是操作系统不相信任何用户。为了保证自身数据的安全,同时也为了提供给用户良好的服务,操作系统提供了接口的方式给用户系统调用,让用户获取操作系统内部的数据!

3.操作系统如何进行管理

操作系统之上有用户,操作系统下面还有各种底层硬件,那么用户、操作系统、底层硬件之间是如何发生信息交换的呢?

小故事:

假设你是某所高校的校长,马上就到九月开学季了,将有很多的新生入学,如果你获取入学新生所在学院,录取专业、学号、姓名、电话等基本信息,你作为学校最高级别的管理者,难道你要亲自收集学生的信息吗?(逮着一个新生就问:"同学,你是哪个学院的啊?学的什么专业呀?叫什么名字呢?")这样子的话,不仅作为把校长搞的很狼狈,还会把新生吓懵,还真成了"招生简章"⭐⭐⭐所以作为决策者的校长,只需向辅导员下达命令"辅导员帮我收集新生的基本信息,交到办公室给我",辅导员就会在开学的时候,屁颠屁颠地把新生的信息收集起来交给了校长,辅导员在这充当的就是执行者的角色,而作为新生的我们就是被管理者

从上面的小故事我们可以知道①管理者和被管理者是不需要见面的;②管理者通过收集被管理者的基本信息,对被管理者进行管理;③管理者不需要亲自收集信息,而是通过执行者收集信息!操作系统就是管理者,驱动程序就是执行者,底层硬件就是被管理者!是的没错,操作系统不是直接对底层硬件进行管理的,而是通过驱动程序来管理底层硬件。

故事继续:

辅导员收集了所有新生的基本信息交给了校长,校长很认真地看了收集上来的新生基本信息,发现有的学生没有电话号码、学号、专业,有的学生甚至把自己的血型、身高、体重、爱好、生活费等信息写上去了,这一多一少地信息表显得很凌乱不堪,作为校长的你本该很生气,但转念一想是你自己没说让辅导员收集的新生信息有哪些,也就气消火熄了,觉得自己应先描述信息!于是,校长又把辅导员叫过来:"辅导员,你再给我收集一次新生的基本信息!我要的基本信息包含学院、学号、姓名...",也相当于把学生信息用strcut结构体定义起来。

cpp 复制代码
//结构体
struct students
{
	//学生信息
	char id[20];
	char name[20];
	char sex;
	//...
}

操作系统描述需要收集的底层硬件信息,比如硬件状态、存储大小、硬件地址等信息,通过控制驱动程序收集底层硬件的信息!

故事继续:

辅导员按照描述收集了新生信息,并把学生信息表格交到办公室给校长了!校长想查找新生高考成绩最高的前五位谈话,使用"目测法"查找,花费半小时后找到了,在开学上课的时候,某位新生天天旷课,校长要开除他,校长花费半小时将该学生信息找到将他信息划去!当然嘞,以上的情况是不可能发生在你身上的,因为同时身为校长的你,还是一位程序员啊!为了避免上面情况的出现,校长使用了一种单链表的数据结构将新生的基本信息组织起来,找到学生、录入学生、开除学生演变成了对单链表的增删查改,这就将对新生的管理工作转变成了对单链表的管理工作。

cpp 复制代码
//数据结构
struct SeqListNode
{
	struct students s[100];
	struct SeqListNode* next;
}

操作系统将驱动程序收集到底层硬件属性信息使用双链表数据结构组织起来,然后通过管理双链表中的数据信息管理管理底层硬件!

总结:
先描述,在管理操作系统先描述自己需要的底层硬件信息,操作驱动程序收集,并将收集的信息使用数据结构组织起来,进行管理底层硬件!

系统调用和库函数概念

小故事:

银行---大家都知道吧?平时客户需要存钱、取钱、转账的时候都会到银行去,但不是亲自进行存钱、取钱、转账(该拿多少拿多少),银行不允许这种操作,因为形形色色的人群中可能有坏人,但是银行又要为客户提供良好的服务,所以银行开放了不同业务办理的窗口,为用户办理相应的业务。

操作系统很难被直接操作,但其实我们平时都有间接地访问了操作系统,比如我们写的printf("hello world");,其实printf就是操作系统调用接口相接的入口(程序员的角度)。

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

相关推荐
看星星的派大星36 分钟前
rk3588 android12 root
linux
飘飘燃雪1 小时前
Linux Modbus协议详解,代码示例
linux·运维·服务器·modbus
蜗牛hb1 小时前
Kali基础知识
linux·运维·服务器
恩爸编程2 小时前
深入浅出 Linux 操作系统
linux·运维·服务器·linux系统介绍·linux操作系统介绍·linux操作系统是什么·linux操作是什么
马船长2 小时前
RCE-PLUS (学习记录)
java·linux·前端
激进的猴哥2 小时前
day20-yum精讲
linux·运维·服务器
忆源2 小时前
Linux基础--1.1 什么是 Linux 操作系统
linux·运维·服务器
dessler2 小时前
Docker-Dockerfile案例(一)
linux·运维·docker
plmm烟酒僧3 小时前
香橙派5Plus启动报错bug: spinlock bad magic on cpu#6, systemd-udevd/443
linux·bug·rk3588·kernel·香橙派·orangepi5plus
LKID体3 小时前
pathlib:面向对象的文件系统路径
linux·网络·windows