linux入门---操作体统的概念
什么是操作系统
操作系统是一个对软硬件资源进行管理的软件。计算机由一堆硬件组成,这些硬件遵循着冯诺依曼体系结构
在这个硬件的基础上还有一个软件叫做操作系统
操作系统的任务是对硬件进行管理,既然是管理的话操作系统得访问到底层的硬件,比如说这是一个什么类型的硬件,这个硬件如果是磁盘的话,这个磁盘的大小是多少?目前已经用来多大的空间还剩多少空间,这个磁盘是否处于运行的状态等等,所以操作系统为了管理好这里的硬件就将自己分为四大模块分别进程管理,文件系统,内存管理,驱动管理,其中文件系统和内存管理是整个操作系统中最重要的两个部分因为在整个机器的运行过程中要到他们的次数最多,所以以后的学习中我们将重点放到这两个方面上
在操作系统之上还有一层就是用户:
我们作为用户通过操作系统来使用电脑,比如说用windows操作系统使用电脑玩英雄联盟,csgo,使命召唤等等,那么这里就有一个问题操作系统为什么要对软硬件资源进行进行管理?原因很简单操作系统的服务对象是人,我们每个人使用电脑的时候都希望自己使用的系统能够给我们提供更好的服务,比如说打游戏不卡,使用电脑不死机等等,而操作系统之所以要管理软硬件就是想通过合理的管理软硬件资源,来位用户提供一个稳定的,高效的,安全的执行环境,其中对软硬进行管理是操作系统的手段,给用户一个良好的环境是操作系统的目的。好看到这里大家已经知道了什么是操作系统(操作系统是一个对软硬件资源进行管理的软件),以及为什么会有操作系统(操作系统的存在可以给用户提供良好的执行环境),那么接下来我们就要了解操作系统是如何管理的软硬件来达到这样的目的。
什么是管理
在了解操作系统是如何管理软硬件之前我们先来谈谈管理这个词,看这篇文章的大部分应该都是大学生,那么这里我就问大家一个问题:你有见过校长吗?你有见过校长亲自来到你的宿舍查寝询问你的生活日常以及平时成绩吗?很明显这种情况是几乎不可能出现的,校长在学校里面属于是管理者,学生在学校里面属于是被管理者,校长虽然连学生的一次面都没有见过但是校长却能够知道学生的生活日常,学生的课表是什么?这个专业得期末成绩这个专业的某个班的专业成绩以及学校中具体的某个人的成绩校长都可以知道,那管理者是如何做到的呢?我们大学毕业进入公司工作,但是从进入工作的第一天开始到离职我们连ceo的面都没有见过,他没有问过我这个月的效绩怎么样这个月的工作是否顺利,没有问过我家庭是否幸福对工作是否充满热情,那这个ceo又是如何来管理我对我进行升值或者炒鱿鱼呢?
看了上面的两个例子大家对于管理者应该能够明白一件事:管理者不需要和被管理者直接交互,但是依旧能够把被管理着管理起来。那管理着是如何做到的呢?在了解这个问题之前我们先来想一个问题什么样的人是管理者?有小伙伴可能就会这么想,我的妈妈天天在家里管着我所以我的妈妈是管理者,我们班的班主任天天管着我的学习和生活所以班主任是管理者,如果大家是这么理解的话就大错特错了,你的妈妈和班主任虽然天天管着你但是他们不是管理者他们只是在管着你,我们判断一个人是不是管理着主要取决于这个人能不能做出重大决定,比如说一个学校的校长可以决定是否举办一个全校的师生大会来公布去年取得的成绩 ,一个学校的ceo能够决定今年的年终奖什么时候发发多少等等,我们把这样的人称之为管理者,而一个管理者每次做出一个重大的决定往往都是要有依据的,一个公司的ceo能够随便分发年终奖吗?比如说给一个普通的员工几个亿让他实现财富自由,对吧很明显是不可能的,比如说学校组织年纪大会时间选定在晚上的凌晨3点可能吗?很明显是不可能的,所以管理者每次做出一个重大的决定都是得有依据的,我们作为一个学生我的学号是多少?哪里人?高中在哪读?手机号是多少?以往期末考试成绩怎么样等等这些都是我们作为一个学生的数据,当我们作为一个员工时我每天的基础工作时间,加班时间,工资多少,为公司解决了多少问题,年终奖为多少,为公司所作的贡献等等这些都是我们作为员工的数据,公司的ceo或者学校的校长虽然不和我们直接打交道但是我们的所有数据早以被管理者所熟知,并且这些数据还在不停的更新,所以管理者做重大决定的依据就是被管理者的不停更新的数据,所以管理者对被管理者的管理实际上就是管理者对数据的管理,通过这些数据来做出重大的决定这样就算校长没有见过我,就算ceo不会亲自给我发工资但是他们依然能够很好的管理我们,管理的本质就是对数据的管理,当校长看到某个班级的语文成绩降低了校长就会提醒语文老师加强这个班的语文教育,当ceo看到某个部门的效绩很低那么ceo就会通知这个部门的领导加强对这个部门的监督那么这就是管理,管理的本质就是对数据的管理。我们说管理者是根据被管理者的数据来做出相应的重大决策,可是这里就存在一个问题,管理者从来不和被管理者接触那他是如何来获取不断更新的数据的呢?并且管理者下达的决策还得传达给底层的人,那这个决策又是如何传达的呢?所以在管理者和被管理者之间就会出现一个新的角色叫做执行者,执行者帮管理者收集被管理者的数据,然后管理者下达的决策就会由执行者传递给被管理者,这里的执行者就相当于大学中的辅导员各种领导,一旦校长决定开会或者举办运动会之后,这些辅导员和领导就会发消息给同学通知他们最好对应的准备,一旦这些学生考完试这些辅导员和领导就会把这些同学的成绩进行汇总上报给校长,那么在计算机中操作系统就相当于这里的管理者他负责分析数据根据这些数据下达决策,计算机中的各种硬件就相当于学校中的学生,他们负责执行对应的指令并反馈自己此时的状态,而计算机中的各种驱动就相当于学校中的辅导员他们负责传达校长执行的决策,并将学生的各种状态不停的收集起来交给校长
我们上面说管理的本质是对数据进行管理,校长管理一个学校就是管理这个学校的各种数据,而数据是由辅导员和各种领导采集到一起的,可是这里还是会存在一个问题,如果学校的人非常少的话产生的基础数据也会非常的少,比如说一个学校只有100号人,那么校长要想管理这100个人的话通过几张A4纸都能管理的过来,但是一个大学往往都会有几千好人,这么多人产生的数据是非常多的,这时如果还是一个人一个人的查看数据的话就会让管理的效率变得非常的慢,所以为了提高效率人们会采用这样的方法:校长要管理的人都是学生,学生虽然是不同的但是他们的数据类型却都是一样的,比如说这个学生的学号,年龄,学号,手机号等等,每个学生都有这些性质,所以校长就可以创建一个结构体来描述这些学生:
这样校长就把对学生的管理转换成对学生的数据进行管理,将对学生的数据进行管理转换成对数据组成的结构体变量进行管理,而在计算机中同一个硬件返回的数据的类型都是一样的,所以我们就可以使用结构体对这些数据进行描述,然后再通过数据结构中的方法来对这些结构体变量实现增删查改,那么这就是操作系统管理的数据方法:先描述,再组织。先使用结构体对数据进行描述,再通过数据结构来管理一个又一个的结构体。其次大家要注意的一点就是操作系统能够对底层的硬件进行管理,那么同样的道理操作系统在内部也能对各种软件进行管理,管理的方式也是先描述再组织。在现实生活中银行为什么要搞个窗户将用户和员工隔开,因为银行无法判断你是否是一个好人,因为银行自己很容易受到伤害,所以银行不相信任何一个顾客,所以他在顾客和员工之间添加了一个窗户,那么操作系统也是同样的道理,操作系统也不相信任何人,但是他又必须给上层的用户提供各种各样的服务,所以就有了操作系统接口,这些接口是操作系统提供的而操作系统是c语言写的,所以这些接口本质上就是c式接口,如果你想要访问计算机中的一些内容就必须得通过操作系统提供的接口来进行访问,其他的非法都会被操作系统直接拒绝
操作系统提供的接口在调用的时候十分的麻烦,所以就有了c/c++库和shell,我们写的代码用的printf,cout就是像硬件写入对应的信息,但是这个信息并不是printf函数或者cout函数向硬件中写入的数据,而是在这些库函数的内部调用了操作系统的接口,在通过操作系统的接口往硬件中写入了数据,我们的库写的非常的好,所以每次只用调用几个函数就能达到我们的目的,所以在操作系统调用接口的上一层还存在一层东西来帮助我们使用计算机,这个东西就是c/c++库,shell,界面等等,其中c/c++库是为了方便我们变成,而shell和界面是方便我们执行指令操作:
这就好比我们生活中的银行,银行拥有很多的基本设备比如说仓库,座椅,电脑,纸张等等,这些基本设备就相当于电脑的外设:键盘鼠标网卡硬盘等等。
银行的基本设备一般都会有人来管理,比如说仓库由保安来管理,桌椅由后勤来管理,电脑由程序员管理,纸张由其他人进行管理,管理物品的这些人就相当于电脑里面的各种驱动:
这些人都是基本员工他们属于被管理的人,而管理他们的人就是行长,行长就相当于操作系统,操作系统不仅可以通过驱动管理硬件,他还可以直接管理软件,就相当于行长不仅可以管理保安后勤程序员,还可以管理业务人员部门经理一样
银行不是直接开着保险库与客户进行交流而是通过一个个的小型窗口对客户进行服务,那么这里的窗口就相当于操作系统提供的系统调用接口,通过这个接口来获取对应的服务
银行服务的人各种各样,有社会上的精英也有刚步入社会的学生也有连字都不认识的老年人,所以为了服务这些老年人银行往往就会在大厅里面安排一些大厅经理来专门为不懂如何操作得老年人服务,那么这里得大厅经理就相当于科学家给我们提供得shell,c/c++库,图形化界面:
那么以上就是本篇文章得全部内容希望大家能够理解。
相关文章:

linux入门---操作体统的概念
什么是操作系统 操作系统是一个对软硬件资源进行管理的软件。计算机由一堆硬件组成,这些硬件遵循着冯诺依曼体系结构 在这个硬件的基础上还有一个软件叫做操作系统 操作系统的任务是对硬件进行管理,既然是管理的话操作系统得访问到底层的硬件…...

《Qt 6 C++开发指南》提供4个版本的示例程序
《Qt 6 C开发指南》包含丰富的示例项目,为了方便读者使用《Qt 6 C开发指南》学习Qt编程,本书提供了4个版本的示例程序。读者可在人民邮电出版社异步社区本书的配套资源(如图1)里下载这4个版本的示例程序。图1 异步社区本书配套资源…...

chartgpt 告诉我的,loss 函数的各种知识
一、libtorch中常见的损失函数及其使用场景的总结1. CrossEntropyLoss:CrossEntropyLoss(交叉熵损失)主要用于分类任务。它适用于多分类问题,其中每个样本只属于一个类别(互斥)。该损失函数将预测概率与真实标签的one-…...

旅行推销员问题的遗传算法中的完整子路线顺序交叉
摘要 旅行商问题(TSP)是许多著名的组合问题之一。TSP可以解释为很难找到从第一个城市出发,经过所有城市,然后返回起点的最短距离。在标准问题中,TSP通常用于确定新算法的效率。遗传算法是求解TSP问题的一种成功算法。…...

Python实现词频统计
词频统计是自然语言处理的基本任务,针对一段句子、一篇文章或一组文章,统计文章中每个单词出现的次数,在此基础上发现文章的主题词、热词。 1. 单句的词频统计 思路:首先定义一个空字典my_dict,然后遍历文章…...

微信小程序面试题(day08)
文章目录微信小程序自定义组件的使用?微信小程序事件通道的使用?微信小程序如何使用vant组件库?微信小程序自定义组件父传子子传父?微信小程序自定义组件生命周期有哪些?微信小程序授权登录流程?web-view。…...

最强的Python可视化神器,你有用过么?
数据分析离不开数据可视化,我们最常用的就是Pandas,Matplotlib,Pyecharts当然还有Tableau,看到一篇文章介绍Plotly制图后我也跃跃欲试,查看了相关资料开始尝试用它制图。 1、Plotly Plotly是一款用来做数据分析和可视…...

Ubuntu使用vnc远程桌面【远程内网穿透】
文章目录1.前言2.两台互联电脑的设置2.1 Windows安装VNC2.2 Ubuntu安装VNC2.3.Ubuntu安装cpolar3.Cpolar设置3.1 Cpolar云端设置3.2.Cpolar本地设置4.公网访问测试5.结语1.前言 记得笔者刚刚开始接触电脑时,还是win95/98的时代,那时的电脑桌面刚迈入图形…...

【C++】map、set、multimap、multiset的介绍和使用
我讨厌世俗,也耐得住孤独。 文章目录一、键值对二、树形结构的关联式容器1.set1.1 set的介绍1.2 set的使用1.3 multiset的使用2.map2.1 map的介绍2.2 map的使用2.3 multimap的使用三、两道OJ题1.前K个高频单词(less<T>小于号是小的在左面升序&…...

css学习14(多媒体查询)
目录 多媒体查询 语法 示例代码 通用媒体查询 媒体功能参考列表 多媒体查询 CSS的媒体查询是一种CSS的技术,它可以根据不同的设备类型、屏幕尺寸、方向、分辨率等条件来应用不同的CSS样式,从而为不同的设备和屏幕提供最佳的浏览体验。这样ÿ…...

【C++进阶】C++11(中)左值引用和右值引用
文章目录左值引用左值引用的概念左值引用的使用右值引用右值引用的概念右值引用的使用左右值相互引用左值引用对右值进行引用右值引用对左值进行引用右值引用使用场景和意义左值引用的优势左值引用的短板右值引用的优势完美转发模板万能引用完美转发实际运用场景左值引用 左值…...

Python中的生成器【generator】总结,看看你掌握了没?
人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 1.实现generator的两种方式 python中的generator保存的是算法, 真正需要计算出值的时候才会去往下计算出值。 它是一种惰性计算(lazy evaluation)。 要创建一个…...

MD5加密竟然不安全,应届生表示无法理解?
前言 近日公司的一个应届生问我,他做的一个毕业设计密码是MD5加密存储的,为什么密码我帮他调试的时候,我能猜出来明文是什么? 第六感,是后端研发的第六感! 正文 示例,有个系统,前…...

【Linux】虚拟地址空间
进程地址空间一、引入二、虚拟地址与物理内存的联系三、为什么要有虚拟地址空间一、引入 对于C/C程序,我们眼中的内存是这样的: 我们利用这种对于与内存的理解看一下下面这段代码: 运行结果: 观察父子进程中 val 变量的值&…...

四平方和题解(二分习题)
四平方和 暴力做法 Y总暴力做法,蓝桥云里能通过所有数据 总结:暴力也分好坏,下面这份代码就是写的好的暴力 如何写好暴力:1. 按组合枚举 2. 写好循环结束条件,没必要循环那么多次 #include<iostream> #include<cmath>…...

一篇文章搞定js正则表达式
我们测试正则表达式是否正确的方法有很多,例如通过正则表达式找到拼配的字符串: 在vscode编辑器中点击搜索框中的第三个按钮就可以实现: 或者 在浏览器中的控制台也可以实现: 我们可以通过下面的在线网站来测试你写的正则是否正确…...

[数据结构] 用两个队列实现栈详解
文章目录 一、队列实现栈的特点分析 1、1 具体分析 1、2 整体概括 二、队列模拟实现栈代码的实现 2、1 手撕 队列 代码 queue.h queue.c 2、2 用队列模拟实现栈代码 三、总结 🙋♂️ 作者:Ggggggtm 🙋♂️ 👀 专栏࿱…...

官宣|Apache Flink 1.17 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.17.0。Apache Flink 是领先的流处理标准,流批统一的数据处理概念在越来越多的公司中得到认可。得益于我们出色的社区和优秀的贡献者,Apache Flink 在 Apache 社区…...

动态内存管理+动态通讯录【C进阶】
文章目录为什么存在动态内存分配❓👉动态内存函数👈malloc&freecallocrealloc❌常见的动态内存错误❌练习题🫠C/C程序的内存开辟🤔柔性数组柔性数组的特点柔性数组的优势:star:动态通讯录:star:初始化添加销毁为什么存在动态内…...

基于pytorch+Resnet101加GPT搭建AI玩王者荣耀
本源码模型主要用了SamLynnEvans Transformer 的源码的解码部分。以及pytorch自带的预训练模型"resnet101-5d3b4d8f.pth"本资源整理自网络,源地址:https://github.com/FengQuanLi/ResnetGPT注意运行本代码需要注意以下几点 注意!&a…...

多线程控制讲解与代码实现
多线程控制 回顾一下线程的概念 线程是CPU调度的基本单位,进程是承担分配系统资源的基本单位。linux在设计上并没有给线程专门设计数据结构,而是直接复用PCB的数据结构。每个新线程(task_struct{}中有个指针都指向虚拟内存mm_struct结构&am…...

清晰概括:进程与线程间的区别的联系
相关阅读: 🔗通俗简介:操作系统之进程的管理与调度🔗如何使用 jconsole 查看Java进程中线程的详细信息? 目录 一、进程与线程 1、进程 2、线程 二、进程与线程之间的区别和联系 1、区别 2、联系 一、进程与线程 …...

自定义类型 (结构体)
文章目录📬结构体的声明🔎1.结构的基础知识🔎2.结构的声明🔎3.特殊的声明🔎4.结构的自引用🔎5.结构体变量的定义和初始化🔎6.结构体内存对齐🔎7.修改默认对齐数🔎8.结构体…...

第14届蓝桥杯STEMA测评真题剖析-2023年3月12日Scratch编程初中级组
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第113讲。 蓝桥杯选拔赛现已更名为STEMA,即STEM 能力测试,是蓝桥杯大赛组委会与美国普林斯顿多…...

程序员接私活一定要知道的事情,我走的弯路你们都别走了
文章目录前言一、程序员私活的种类1.兼职职位众包2.自由职业者驻场3.项目整包二、这3种私活可以接1.有熟人2.七分熟的项目3.需求明确的项目三、这3种私活不要接1.主动找上门的中介单2.一味强调项目简单好做3.外行人给你拉的项目四、接单的渠道1.线下渠道2.线上渠道3.比较靠谱的…...

十二届蓝桥杯省赛c++(下)
1、 拿到题目一定要读懂题意,不要看到这题目就上来模拟什么闰年,一月的天数啥的。这个题目问你当天的时间,就说明年月日跟你都没关系,直接无视就好了。 #include <iostream> #include <cstring> #include <algori…...

数据结构与算法——堆的基本存储
目录 一、概念及其介绍 二、适用说明 三、结构图示 四、Java 实例代码 五.堆和栈的区别 一、概念及其介绍 堆(Heap)是计算机科学中一类特殊的数据结构的统称。 堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆满足下列性质: 堆中某个节点的值总是不大…...

来了来了 !!!K8s指令、yaml部署
文章目录k8s资源清单一、k8s资源指令1、基础操作2、命令手册二、资源清单1、required2、optional3、other4、资源清单格式5、常用命令三、部署实例1、nginx3、eureka部署k8s资源清单 一、k8s资源指令 1、基础操作 #创建且运行一个pod #deployment、rs、pod被自动创建 kubect…...

spring-cloud-feign实战笔记
feign 配置 针对单个feign接口进行配置feign:client:config:# feignName 注意这里与contextId一致,不能写成name(FeignClientFactoryBean#configureFeign)# 不能写成 client-b (微服务名称),否则不生效helloFeignClient: # conte…...

【Pytorch】利用PyTorch实现图像识别
本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052 这是目录使用torchvision库的datasets类加载常用的数据集或自定义数据集使用torchvision库进行数据增强和变换,自定义自己的图像分类数据集并使用torchvision库加载它们使…...