操作系统(Operator System)

在这里插入图片描述

这里写目录标题

  • 1. 什么是操作系统
  • 2. 主要功能
  • 3. 计算机的层状结构
  • 4. 什么叫做管理
  • 5. 总结
  • 6. 为什么要有操作系统
  • 7. 最后

1. 什么是操作系统

操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。操作系统是人与计算机之间的接口,也是计算机的灵魂。

  • 在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口;如果从设计人员的角度来说,就是指各式各样模块和单元之间的联系。事实上,全新操作系统的设计和改良的关键工作就是对体系结构的设计,经过几十年以来的发展,计算机操作系统已经由一开始的简单控制循环体发展成为较为复杂的分布式操作系统,再加上计算机用户需求的愈发多样化,计算机操作系统已经成为既复杂而又庞大的计算机软件系统之一。(来自百度百科讲解)

2. 主要功能

计算的操作系统对于计算机可以说是十分重要的,从使用者角度来说,操作系统可以对计算机系统的各项资源板块开展调度工作,其中包括软硬件设备、数据信息等,运用计算机操作系统可以减少人工资源分配的工作强度,使用者对于计算的操作干预程度减少,计算机的智能化工作效率就可以得到很大的提升。其次在资源管理方面,如果由多个用户共同来管理一个计算机系统,那么可能就会有冲突矛盾存在于两个使用者的信息共享当中。为了更加合理的分配计算机的各个资源板块,协调计算机系统的各个组成部分,就需要充分发挥计算机操作系统的职能,对各个资源板块的使用效率和使用程度进行一个最优的调整,使得各个用户的需求都能够得到满足。最后,操作系统在计算机程序的辅助下,可以抽象处理计算系统资源提供的各项基础职能,以可视化的手段来向使用者展示操作系统功能,减低计算机的使用难度。

  • 操作系统主要包括以下几个方面的功能 :
    ①进程管理,其工作主要是进程调度,在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占, 进程管理的工作十分简单。但在多道程序或多用户的情况 下,组织多个作业或任务时,就要解决处理器的调度、 分配和回收等问题 。
    ②存储管理分为几种功能:存储分配、存储共享、存储保护 、存储扩张。
    ③设备管理分有以下功能:设备分配、设备传输控制 、设备独立性。
    ④文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护。
    ⑤作业管理是负责处理用户提交的任何要求。
    (来自百度百科讲解)

  • 我们用一句简单的话来描述操作系统:操作系统是一个进行软硬件资源管理的软件

3. 计算机的层状结构

在这里插入图片描述
当前我们先讲解操作系统,驱动程序,底层硬件,这三个部分,对于用户,用户操作接口和system call这三个部分后序会讲到。
(1)底层硬件:包括网卡,硬盘,显示器等。底层硬件的结构是冯·诺依曼体系。
(2)驱动程序:驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备进行相互通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。因此,驱动程序被比作“ 硬件的灵魂”、“硬件的主宰”、“硬件和系统之间的桥梁”等。 也就是说,最清楚硬件该怎么用的就是驱动程序,在计算机中真正让硬件工作的并不是操作系统,而是驱动程序,操作系统只是通过驱动程序操作的硬件。

4. 什么叫做管理

在我们生活中,无论是做什么事情,都存在两个关系
1.做决策
2.做执行
比如你中午要做糖醋排骨,早上要去买排骨。在这个之情当中,决策就是中午想做糖醋排骨,执行就是早上出去买排骨。
而所谓管理,就是能正确的做出决策。
而计算机中操作系统(管理者)扮演的就是做决策的角色。
硬件(被管理者)就是执行角色。

我们举一个在学校里的例子:
一个学校里面,有校长,辅导员,学生。这三个角色,谁是管理者,谁是被管理者呢?很明显校长就是那个管理者,而学生就是被管理者,而至于辅导员就是那个保证决策落地的一个角色。
那么作为被管理者,一般学生在学校里能见到管理者校长吗?显然是不能的,相信绝大部分的学生都不知道校长什么样子。那么问题就来了,既然管理者和被管理者一般见不到面,那么管理者到底是怎么做到把学校管理好的,是怎么把学生管理好的呢?所以管理的本质不在于见面。管理者只要知道你在学校里方方面面的数据拿到,管理者就可把你安排的明明白白的。所以管理者只要拿到被管理者的数据就可以把被管理者管理好。所以管理的本质并不是对人进行管理,而是对人的信息做管理。
上面说了管理者的核心工作是做决策,但是是不是可以乱决策啊,肯定是不能的,管理者是通过拿到的数据进行做决策。也就是依据数据做决策。

但是我都没有与校长见过面,也没说过话,他是怎么知道我在学校的信息。所以这个时候我们的辅导员就出来了,要说到出来同班同学我们在学校里第二个见面最多的那肯定是辅导员了,我们在大学四年的所有执行大多都是辅导员下发的,最常见的就是在聊天群里来一个“@全体成员”的消息了。所以管理者是怎么拿到我们的信息的,那就是通过辅导员拿到信息,因为辅导员天天跟我们见面,是不是叫你去办公室喝点茶,你的所有成绩,做了什么好事坏事辅导员都知道,所以校长只要找到辅导员就可知道我们所有的信息。拿到了信息就可以对我们做管理。

管理者在面对大量的被管理者的时候,数据量必然很大,对人的管理也转化为对数据的管理。面对如此庞大的数据,我们的管理者是怎么进行有效的管理呢?既然是对信息做管理,而每个学生的信息的属性都是相同的,比如身高,体重,年龄,数学成绩,专业成绩等,这些信息的属性都是相同的,那么我们就可以把这些信息放到一个表格中,表格的第一行对应者学生信息的属性,之后的每一行就代表每个学生的属性,这个时候对信息的管理就变成了对表格的管理。这样子管理者就可以知道每个学生的属性了。但是这样也有一个缺点就是面对这么庞大的数据量,想要查找一个学生的数据不比与大海捞针。这个时候管理者懂编程,管理者就像,能不能把这个工作交给计算机干,既然每个学生的信息属性都是一样的,那么我们就可以定义一个结构体,将信息的属性包含在结构体中。

struct student
{
	char name[20];
	int age;
	int grade;
	char score[20];
	char other[20];
	……
};

这样只要实例化一个结构体就代表一个学生了。
但是这样还是表格没什么区别啊,如果数据量很大,那不是实例化出来的对象也很多。
所以管理者又想到一个好办法,就是在定义一个结构体指针。

struct student
{
	char name[20];
	int age;
	int grade;
	char score[20];
	char other[20];
	……
	struct student* next;
};

有了结构指针,我们的第一个学生的结构体就包含了下一个学生结构体的地址,找到第一个学生就可以找到第二个学生,以此类推就形成了一个链表。所以以后管理者想要查找一个学生的信息只需要遍历这个链表就行了。但是遍历的话还是要把每个学生的信息看一遍啊。于是,既然都已经设计出来结构体,这个是时候管理者就又设计出来了一个对链表进行增删改查的代码。所以这个时候管理者对数据的增删改查就变成了对链表的增删改查,而这个动作已经用程序写完了,是由计算机执行了。所以校长的所有决策就变成了对链表的增删改查。

所以这样就完成了一个工作:对管理的一个计算机的建模的过程。为了简化这个建模的过程,我们叫做先描述在组织
计算机管理硬件

  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构

那么对于我们的操作系统是怎么管理硬件的呢?也是先描述在组织。
就然都是硬件,所以硬件的信息属性都是相同的,那么就可以将这些信息放到一个结构体中。这叫做先描述

struct device
{
	char name[20];
	char status[20];
	……
	struct device* next; 
}

那么将网卡这个设别放到结构中,将磁盘这个设备放到结构体中……让后将这些结构体连接起来形成一个链表。于是操作系统想要查找一个设备只需要对链表进行遍历。这个过程叫做组织。

5. 总结

上面我们见到了操作系统是什么,操作系统是一个进行软硬件资源管理的一款软件。那么操作系统是怎么对软硬件进行管理的呢。首先管理的本质是对数据的管理。但是如果数据量很大,那么操作系统的管理效率就会很低。而为了解决这个问题,我们就要对数据进行描述,数据量虽然大,但是数据的信息属性是相同,于是我们就可以把数据的信息属性写成一个结构体,这个叫做先描述。有了结构体就可以用特定的方式把结构体写成特定的数据结构,这个时候对数据的管理就变成了对特定的数据结构进行管理,这个过程叫做组织。也就是说操作系统对软硬件进行管理的方式是,将每个软硬件的信息属性用结构体表示,这个叫做把软管硬件描述出来,后用特定的数据结构将这些结构体组织起来。然后操作系统对软管硬件进行管理就变成了对特定的数据结构体进行管理 。
所以管理的方式就可以用六个字来表示:先描述在组织。

6. 为什么要有操作系统

  • 上述提到了,操作系统是一个进行软硬件资源管理的软件。
    那么这里提出的问题为什么要有操作系统可以用另一种提问方式——为什么要有操作系统的管理。

  • 先说结论:对于操作系统主要有两大用途
    1.对下进行软硬件资源管理——手段
    2.对上提供一个良好的运行环境——目的
    这里的良好可以稳定,高效,安全。

  • 对于软硬件资源的管理中对于硬件的管理就是对硬件的数据进行管理,而硬件的数据是驱动程序所提供的,有了数据就可以这些数据的属性进行描述起来,然后通过特定的数据结构将其组织起来,这样对硬件的管理就变成了对数据结构的管理。
    对于软件也是同样的道理,既然操作系统是通过驱动程序管理软件的,那么操作系统也用相同的方式管理驱动程序的。

  • 计算机终归是用来给人使用的,而且计算机必定会存放各种数据。那么计算机是怎么做到对这些数据的安全和,稳定的呢
    我们举一个银行的例子。
    我们到银行里存钱,能不能直接跟柜台的人员说我们存钱到因你们银行里面,你们登记好来,然后打开钱库我直接放钱进去啊?明显是不能的,因为这样并不能确定这个存钱的人到底是不是坏人,万一他进了钱库把其他人的钱拿走了呢。同理在计算机里这里有个用户如果直接去访问操作系统,而操作系统是用来管理软硬件的,也就是对软硬件的数据进行管理,用户一进入操作系统中就可以看到琳琅满目的各种信息,而计算机不能判断用户是不是坏人,不知道会不会对这些数据进行破坏,并且可能这些数据当中有些是机密数据,并不能确定用户会不会进行窃取。

  • 所以操作系统就必须在用户和操作系统当中设计一个让用户不能直接通过操作系统进行访问数据,而是用操作系统提供的特殊手段进行访问数据,而这个就是系统访问接口。
    在这里插入图片描述
    这个时候用户就只能通过这个系统访问接口来访问数据,就好比一个人去银行,你不能直接到钱库里面去存钱,也不能直接去钱库里取钱,而是把你的个人信息跟柜台的人员然后通过柜台人员进行存取钱。

  • 而系统调用接口,其实就是用C语言设计出来的函数。这个由操作系统提供的函数叫做系统调用函数。
    既然是函数那肯定是有输入和输出的。而操作系统之所以要提供系统调用接口无非是给上层用户提供两方面的功能:数据层面上的支持和功能方面的支持。

  • 所以我们就有一个结论:任何人都不能直接发访问操作系统内中的任何数据,必须采用操作系统。也就是说用户不能直接越过操作系统直接访问底层硬件/软件,必须贯穿操作系统。而操作系统要对上提供服务必须提供系统调用接口。

  • 我们在使用C/C++中的print/scanf输入输出的时候,printf最终打印的数据是到显示屏上的,那printf是直接打印到显示屏上的吗?显示屏是硬件,既然是硬件那么它必定是受操作系统管理的,也就是说printf想要打印数据到显示屏上,必须是通过系统调用接口将数据打印到显示屏上的。同理scanf也是一样的。然而要调用系统调用接口,printf/scanf一定用封装系统调用函数。

  • 那么用户可以直接掉i用系统调用接口吗?答案是可以的,因为系统调用接口本来就是个用户使用的。但是我们使用C/C++或者其他语言的时候我们也没有用到系统调用接口也就是系统调用函数啊。这是因为由于使用系统调用的难易程度将系统调用函数封装到了用户调用接口。
    在这里插入图片描述
    这样就可以减少使用者的使用成本。最典型的例子就是C语言中的C标准库。

7. 最后

龙年到来,愿你的生活龙腾虎跃,事业龙飞凤舞,精神龙马飞扬,智慧龙腾四海,家庭龙凤呈祥,健康龙腾虎跃,爱情龙凤呈祥,财运龙腾四海,事业辉煌腾达,烦恼龙去凤来,幸福龙凤呈祥!
祝大家在新的一年里天天开心,学业腾飞,事业有成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Debezium日常分享系列之:向 Debezium 连接器发送信号

Debezium日常分享系列之:向 Debezium 连接器发送信号 一、概述二、激活源信号通道三、信令数据集合的结构四、创建信令数据集合五、激活kafka信号通道六、数据格式七、激活JMX信号通道八、自定义信令通道九、Debezium 核心模块依赖项十、部署自定义信令通道十一、信…

【理论】STM32定时器时间计算公式 +【实践】TIM中断1s计时一次

前言:定时器TIM的详细知识点见我的博文:11.TIM定时中断-CSDN博客 STM32定时器时间计算公式 公式解释: ARR(TIM_Period):自动重装载值,是定时器溢出前的计数值 PSC(TIM_Prescaler&…

初始SpringBoot:详解特性和结构

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、SpringBoot…

骑砍MOD天芒传奇-前言

基于少年包青天3-天芒传奇开发的MOD,故事发生在北宋仁宗年间,玩家需要代替包拯寻找天芒,最终完成统一大业.开局可尝试使用暴雨梨花针神器. MOD下载地址:霸王•吕布 / pellets of legend GitCodehttps://gitcode.net/qq_35829452/1-mod 效果演示:骑砍1战团mod天芒传奇-重出江湖…

车载电子电器架构 —— 电子电气系统功能开发

车载电子电器架构 —— 电子电气系统功能开发 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何…

js遍历后端返回的集合将条件相同的放入同一个数组内

项目场景: echarts折线图需要根据条件动态展示多条不同曲线 解决方案: 后端直接将使用sql将数据查询出来返回即可,因为我这里不是Java使用的C#不是很熟练后台不好写逻辑,所以在前端js完成的 代码如下: function createline(villagename, buildingname…

微服务篇之Nacos快速入门

Nacos 简介 Nacos 起源 Nacos 起源于阿里巴巴 2008 年的五彩石项目(完成微服务拆分和业务中台建设),经历了阿里十年双十⼀的洪峰流量的考验,沉淀了简单易用、稳定可靠、性能卓越等核心特性。随着云计算的兴起和受到开源软件行业…

ThinkPad产品如何升级BIOS程序

操作步骤: 重要提示: 更新BIOS存在风险!如果您的电脑在此过程中出现死机,系统崩溃或断电,则BIOS或UEFI固件程序可能会损坏,这将使您的电脑无法启动。 由于BIOS的版本或者在升级过程中出错,可能会造成不可…

009、引用

1. 引用与借用 下面的示例重新定义了一个新的 calculate_length 函数。与之前不同的是,新的函数签名使用了 String 的引用作为参数而没有直接转移值的所有权: fn main() { let s1 String::from("hello"); let len calculate_length(&s1…

气象预报与计算机技术:深度融合与未来展望

气象预报与计算机技术:深度融合与未来展望 一、引言 气象预报,作为人类对自然界气象变化的探索与预测,随着时间的推移和技术的进步,已经逐渐从单纯的经验模式转变为依赖于精密的仪器与强大的计算机技术的科学预测。在本文中,我们将深入探讨气象预报与计算机技术之间的密…

[2024区块链开发入门指引] - 比特币与区块链诞生

一份为小白用户准备的免费区块链基础教程 工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。 种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役? 参见另一篇博文👉 2024最全面…

数据结构:堆的三部曲 (一)堆的实现

堆的实现 1.堆的结构1.1堆的定义理解 2.堆的实现(以小根堆为例)2.1 堆结构体的定义2.2 堆的插入交换函数向上调整算法插入函数的代码 2.3 堆的删除向下调整算法:删除函数的代码: 2.4其他操作 3.测试以及完整源代码实现3.1测试代码…

山西电力市场日前价格预测【2024-01-02】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-02)山西电力市场全天平均日前电价为92.93元/MWh。其中,最高日前电价为275.90元/MWh,预计出现在18:00。最低日前电价为0.00元/MWh,预计出现…

【数据结构与算法】第1章绪论(头歌习题)【合集】

文章目录 第1关:求和任务描述编程要求代码 第2关:求倒数和的倒数任务描述编程要求完整代码 第3关:回文数任务描述编程要求完整代码 第4关:求素数个数任务描述编程要求完整代码 第5关:最大因子任务描述编程要求完整代码…

第6课 用window API捕获麦克风数据并加入队列备用

今天是2024年1月1日,新年的第一缕阳光已经普照大地,祝愿看到这篇文章的所有程序员或程序爱好者都能在新的一年里持之以恒,事业有成。 今天也是我加入CSDN的第4100天,但回过头看一看,这么长的时间也没有在CSDN写下几篇…

2023-刻苦自励,2024-奋起直追!

点击上方“嵌入式应用研究院”,选择“置顶/星标公众号” 干货福利,第一时间送达! 来源 | 嵌入式应用研究院 整理&排版 | 嵌入式应用研究院 一、引言 时光如影,岁月如梭。转眼之间,2023年已经过去,在这一…

拒绝采样(算法)总结

先说说什么是拒绝采样算法:就类似于数学上的求阴影面积的方法,直接求求不出来,就用大面积 - 小面积 阴影面积的办法。 所谓拒绝 和 采样 :就像是撒豆子计个数,计算概率问题一样,大桶里面套小桶&#xff0c…

[C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计

源码地址: github地址:https://github.com/Ahmednull/L2CS-Net L2CS-Net介绍: 眼睛注视(eye gaze) 是在各种应用中使用的基本线索之一。 它表示用户在人机交互和开放对话系统中的参与程度。此外,它还被用…

Docker 从入门到实践:Docker介绍

前言 在当今的软件开发和部署领域,Docker已经成为了一个不可或缺的工具。Docker以其轻量级、可移植性和标准化等特点,使得应用程序的部署和管理变得前所未有的简单。无论您是一名开发者、系统管理员,还是IT架构师,理解并掌握Dock…

【数据结构】栈和队列(队列的基本操作和基础知识)

🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​ 目录 前言 队列 队列的概念和结构 队列的…
最新文章