操作系统(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.mzph.cn/news/589809.shtml

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

相关文章

CRM客户关系管理系统

系统开发环境以及版本 操作系统: Windows_7集成开发工具: Eclipse EE_4.7编译环境:JDK_1.8Web服务器:Tomcat_9.0数据库:MySQL_5.7.23 系统框架 spring框架springmvc框架mybatis框架Logback日志框架安全验证框架maven框…

你逛过凌晨四点的校园吗?--大四毕业生的年终总结

前言: Hello大家好,我是Dream。 又是一年的年终总结,我也迎来了自己的毕业季,没错,我马上要毕业啦!不知道大家是什么时候认识我的呢,又或者是第一次发现我~这一年,迎接过朝阳、拍下过…

Filezilla使用

服务端 点击安装包 点击我接受 点击下一步 点击下一步 点击下一步 点击安装即可 配置用户组,点击编辑,出现组点击 点击添加,点击确定即可 配置用户,点击编辑点击用户 点击添加,设置用户名&#xff…

搭建 Mac系统Arduino + MindPlus开发环境

搭建 Mac系统Arduino MindPlus开发环境 1.概述 2024年1月1号,元旦大家的安排丰富多彩,在这一天中我的安排依旧坚持初心,牢记使命。学习是我的起点也是我的终点,只要活着就要用知识丰富自己的生活。 今天是一个有意义的日子&…

数据结构—树的应用

文章目录 11.树的应用(1).Huffman树#1.加权外部路径长度#2.Huffman算法#3.Huffman编码 (2).二叉搜索树#1.基本定义#2.查找#3.插入结点#4.构建树#5.查找最小值和最大值#6.删除结点#7.一个问题 (3).平衡搜索树#1.满二叉树、完全二叉树和丰满二叉树#2.平衡因子和平衡树#3.左旋与右…

DrGraph原理示教 - OpenCV 4 功能 - 阈值

普通阈值 OpenCV中的阈值用于相对于提供的阈值分配像素值。在阈值处理中,将每个像素值与阈值进行比较,如果像素值小于阈值则设置为0,否则设置为最大值(一般为255)。 在OpenCV中,有多种阈值类型可供选择&am…

模型 冰山理论

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。冰山下面才是重点。 1 冰山理论的应用 1.1 冰山理论在生活中的常见应用 人际交往:在人际交往中,很多人只关注表面的行为和语言,而忽略了内在的情感和动…

给零基础朋友的编程课09 上集 - 代码

给零基础朋友的编程课09 上 - 矩形、曲线、文字、案例5讲解 上_哔哩哔哩_bilibili 上半Code: / // 彩色案例 艺术仿制品4 // /// 色表 // // 238,150,43 橙 // 229,207,192 暖灰 // 204,50,47 暗红// 项目设定 size(825, 984); // 设置画布(窗口)尺寸 background(…

Dungeon Scrawl——在线虚拟世界地图制作器

今天带来一款十分有趣的地图应用,同样也是在线地图工具,如果我们想要制作此类风格的地图,这款工具定能助我们一臂之力。 按照惯例先给出网址: Dungeon Scrawl | Free Online D&D Map Maker 进入网站,点击Start S…

JavaAwtSwing用 GridBagLayout GridBagConstraints 居中

JavaAwtSwing用 GridBagLayout GridBagConstraints 居中 GridBag单行单列居中JLabel import java.awt.*; import java.awt.event.*;import javax.swing.*;public class GridBag单行单列居中JLabel {static JFrame frame new JFrame(Thread.currentThread().getStackTrace()[…

C语言与人生:数组交换和二分查找

少年们,大家好。我是博主那一脸阳光,今天和分享数组交换和二分查找。 前言:探索C语言中的数组交换操作与二分查找算法 在计算机编程领域,特别是以C语言为代表的低级编程语言中,对数据结构的理解和熟练运用是至关重要的…

junit单元测试Mock

在平常工作&#xff0c;经常会用到单元测试&#xff0c;那么单元测试应该怎么写呢&#xff1f; 1&#xff1a;引入包&#xff1a; <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><…

低成本TB级数据库技术选型之思考两三点

一、背景 前段时间在搞毕业论文的选题&#xff0c;最头疼的就是大量的文献检索和阅读&#xff0c;从研究的角度上我们可以将文献分为四类&#xff1a; 理论文献&#xff1a;为研究提供理论的框架和基础的文献。这些文献可能并不会和所做的研究直接相关&#xff0c;甚至由于理…

【2023】hadoop基础介绍

&#x1f4bb;目录 Hadoop组成HDFSHDFS操作HDFS分布式文件存储NameNode元数据数据读写流程 YARN和MapReduceMapReduce&#xff1a;分布式计算YARN&#xff1a;资源管控调度YARN架构提交任务到**YARN中运行** Hadoop组成 hadoop安装教程可以看我这篇文章> &#x1f345;hado…

RFC7636-PKCE

前言 PKCE &#xff08;RFC 7636&#xff09; 是授权代码流的扩展&#xff0c;用于防止 CSRF 和授权代码注入攻击。 PKCE 不是客户端身份验证的一种形式&#xff0c;PKCE 不能替代客户端密码或其他客户端身份验证。即使客户端使用客户端密码或其他形式的客户端身份验证&#…

03.QT命名规范及快捷键(部分)

一、命名规范 1.类名 大驼峰规则&#xff1a;首字母大写&#xff0c;单词和单词之间首字母大写。 2.变量名 小驼峰规则&#xff1a;首字母小写&#xff0c;单词和单词之间首字母大写。 二、快捷键 1.代码操作相关 注释&#xff1a;ctrl / 运行&#xff1a;ctrl r 编译…

从入门到精通UNet: 让你快速掌握图像分割算法

文章目录 一、UNet 算法简介1.1 什么是 UNet 算法1.2 UNet 的优缺点1.3 UNet 在图像分割领域的应用 二、准备工作2.1 Python 环境配置2.2 相关库的安装 三、数据处理3.1 数据的获取与预处理3.2 数据的可视化与分析 四、网络结构五、训练模型5.1 模型训练流程5.2 模型评估指标5.…

redis 三主六从高可用docker(不固定ip)

redis集群(cluster)笔记 redis 三主三从高可用集群docker swarm redis 三主六从高可用docker(不固定ip) 此博客解决&#xff0c;redis加入集群后&#xff0c;是用于停掉后重启&#xff0c;将nodes.conf中的旧的Ip替换为新的IP&#xff0c;从而达到不会因为IP变化导致集群无法…

【递归、搜索与回溯】综合练习

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;找出所有子集的异或总和再求…

测试新字符设备驱动代码

一. 简介 上一篇文章编写了新字符设备驱动框架的代码&#xff0c;并编写了 LED灯IO初始化工作&#xff0c;也编写了Led的开与关函数。文章地址如下&#xff1a; 向新字符设备驱动代码框架中添加Led功能函数-CSDN博客 本文对所完成的新字符设备驱动代码进行测试。通过测试程…