怎么做漫画网站,seo基础理论,做网站上传的程序在哪里下载,优化网站服务目录
一、前言
二、 什么是操作系统
#x1f4a6;操作系统的引入
#x1f4a6;操作系统的概念理解 #x1f4a6;操作系统设计的目的与定位 #x1f4a6;总结 二、操作系统之上之下分别有什么
三、深度理解操作系统的“管理” #x1f4a6;场景理解 #x1f4a6;操…目录
一、前言
二、 什么是操作系统
操作系统的引入
操作系统的概念理解 操作系统设计的目的与定位 总结 二、操作系统之上之下分别有什么
三、深度理解操作系统的“管理” 场景理解 操作系统(OS) 的“管理”
✨操作系统如何进行管理
向下对硬件做管理
向上对用户提供服务
✨操作系统管理的目的 四、共勉 一、前言 在学习了【Linux基础】之后我们将开启【Linux系统编程】的学习。既然是系统编程那我们首先肯定需要了解---系统。系统有怎样的体系结构冯 • 诺依曼体系结构系统如进行软硬件资源管理操作系统。只有了解系统才能够更好的掌握 ---- 系统编程 上一次已经讲过了 冯 • 诺依曼体系结构 冯 · 诺依曼体系结构 所以本次博客将从-----操作系统讲起 二、 什么是操作系统
操作系统的引入 我们上面所讲到的冯诺依曼体系中的各大部件可以理解为硬件在冯诺依曼体系之上还有一堆概念叫做软件 在冯诺依曼体系结构中因为有【存储器】的存在所以可以把外设的数据预加载到内存当中然后供CPU进行读取但是文件中数据非常多那此时我想提出以下几个问题
既然要预加载那是要加载哪一部分数据呢预加载的时候如果内存不够了怎么办CPU在执行对应的数据时如何快速地找到你预加载的数据计算机在进行某种计算的时候是不是把一个任务直接跑完才跑下一个还是多个任务同时在跑数据计算完后可以将其重定向到文件当中在特定的路径下就可以看到所写入的文件内容可是我们怎么去快速地找到这个文件呢 —— 有目录但是谁给你维护的这个目录呢 以上这些工作是无法通过硬件来完成的而是要通过---软件操作系统---来完成 操作系统的概念理解 【概念】操作系统是系统最基本最核心的软件属于系统软件的组成部分用于控制和管理整个计算机的硬件和软件资源 此时我们先简单的了解以下操作系统是个什么 后续详细讲解操作系统的功能。 操作系统包括 内核 Kernel操作系统最核心的部分包含进程管理内存管理文件管理驱动管理等其他程序例如函数库shell 程序等等 操作系统设计的目的与定位 那此时就有同学会疑问操作系统被设计出来的真正用途是什么 首先来看看下面这张图是一整个计算机内部的软硬件系统架构【后面系统调用细述】 可以明确地看出【操作系统】是位于整个系统架构的中间层所以你可以理解它是核心所在也就是我们常说的C位在上面我们也有提到对于操作系统而言它可以对上管理软件对下管理硬件这就是它被设计出来的目的 与硬件交互管理所有的软硬件资源为用户程序应用程序提供一个良好的执行环境 既然它那么重要那我们就给它一个定位一款纯正的“搞管理”的软件 总结 学习操作系统前先弄明白三个问题 【问题一】操作系统是什么 进行软硬件资源管理的软件。 【问题二】为什么会存在操作系统 方便用户使用减少了用户使用计算机的成本。 【问题三】设计操作系统的目的 对上给用户程序应用程序提供一个稳定高效的运行环境。 对下与硬件交互管理好所有的软硬件资源充分高效的使用软硬件资源。 二、操作系统之上之下分别有什么 首先我们肉眼可见的就是计算机实物也就是计算机底层的硬件。这些硬件看似是一个个罗列出来的但实际在底层都遵守冯诺依曼的组织形式。 而单单只有这些硬件是不够的还需要有一个软件来对这些硬件进行管理。例如内存何时从输入设备读取数据读取多少数据内存何时刷新缓冲区到输出设备是按行刷新还是全刷新这些都是由软件进行管理的而这个软件就是操作系统Operator System。 此时这里有一个问题难道操作系统直接和底层硬件打交道吗 举个例子如果操作系统自己来完成键盘的读取操作那么只要你的键盘读取方式进行了改变那么操作系统的内核源代码就需要进行重新编译这对操作系统来说维护成本太高了。 于是我们又在操作系统与底层硬件之间增加了一层驱动层驱动层的主要工作就是单独去控制底层硬件的。例如键盘有键盘驱动网卡有网卡驱动硬盘有硬盘驱动磁盘有磁盘驱动。驱动简单来说就是去访问某个硬件访问这个硬件的读、写以及硬件当前的状态等等驱动层就是直接和硬件打交道的。而驱动一般是由硬件制造厂商提供的或是由操作系统相关的模块进行开发的例如网卡。 此时操作系统就只需关心何时读取数据而不用关心数据是如何读取的了也就是完成了操作系统与硬件之间的解耦。 那操作系统究竟管理些什么呢操作系统主要进行以下四项管理 内存管理内存分配、内存共享、内存保护以及内存扩张等等。驱动管理对计算机设备驱动驱动程序的分类、更新、删除等操作。文件管理文件存储空间的管理、目录管理、文件操作管理以及文件保护等等。进程管理其工作主要是进程的调度。 而操作系统再往上就是我们所处的位置用户在这里我们就可以用命令行或是图形化界面进行各种操作这一层被称为用户层。 但操作系统为了保护自己对上只暴露了一些接口而不会让用户直接访问操作系统这一系列接口被称为系统调用接口。 但这些系统调用接口对我们普通用户来说使用成本又太高了因为要使用系统调用前提条件是你得对系统有一定了解。所以在系统调用接口之上又构建出了一批库例如libc和libc。实际上在语言级别上使用的各种库就是封装了系统调用接口的我们就是通过调用这些库当中的各种函数例如printf和scanf进行各种程序的编写。 至此我们已经了解了计算机内部的软硬件系统架构和操作系统对上对下的管理。 三、深度理解操作系统的“管理” 我们在上面已经讲过操作系统是一款纯正的”搞管理的软件“----对软硬件资源管理的软件。那究竟是怎么”管理“呢要想学好操作系统那么就必须正确理解到底什么是管理。本小节讲会通过一些现实的场景案例带读者来进行理解。 场景理解 说起管理如果读者是一个大学生一定体会过管理和被管理的不同如果你只是一名普通的学生也没什么职务可能你只有被管理的份但若是你在班里面或者学生会担任一些职务的话就会了解到管理别人是什么感觉但你也只能管管学生放眼学校比你权利大的人多的是例如辅导员、校长很明显校长在这三个人当中是管理者学生是被管理者那么辅导员充当什么角色呢 仔细想想实际上完成任何一件事都要经过两个过程首先是决定要不要做这件事或是如何做这件事决策然后就是去做这件事情执行。校长作为管理者来管理学生校长实际上就是那个做决策的人但是校长作出决策后并不需要自己来执行而是让辅导员去执行所以辅导员的主要任务就是执行管理者的决策我们通常将其称为执行者。 虽然说校长是管理学生的但是我们在学校一般情况下是看不到校长本人的那么校长是如何做到在不看到我们的情况下对我们进行管理的呢 举个例子现在校长要求辅导员将计算机成绩排名前十的学生的各科资料以及平时表现记录拿过来他将从这十名同学之中选出三名学生参加本次的编程大赛当辅导员将资料拿来后校长选出三名学生说“就这三个了你找个老师对这三名学生进行一下强化训练然后参加本次的编程大赛。”然后校长就什么也不管了。 在这个过程中校长根本没有见过这三名同学就对其进行了管理他根据的是什么没错他根据的是数据。 实际上学校将我们每个学生的各种信息都进行了管理基本信息、成绩信息以及健康信息等等。 每这么一套信息就描述了一名学生校长通过对这些信息的管理就能做到对学生的管理。这么一套信息在C语言当中我们称之为抽象结构体而在C当中又叫做面向对象先对众多信息进行描述。 当学生的数量多起来了校长就可以将全部学生的信息组织起来当然组织的方式有很多种链表、顺序表、树而每种组织方式都有其自己的优势于是就有了一门课程专门教我们管理数据的方式那就是数据结构。这里我们假设校长以双链表的形式将学生的信息组织起来。 此时校长对各个学生的管理实际上就变成了对这个双链表的增删查改。当有新生时直接向该双链表加入一个结点当学生毕业后直接将学生信息从该双链表当中移除即可。总结一下 管理者管理被管理者实际上是先将被管理者的各种信息进行描述然后再将多个被管理者的描述信息根据某种数据结构组织起来最后管理者管理被管理者实际上就是对数据结构的管理。 一句话管理的本质就是先描述再组织 ⭐得出结论 管理者和被管理者其实是不需要直接沟通的管理的意义对被管理对象的数据做管理管理的本质一句话管理的本质就是先描述再组织 ✨小结 本节我们主要理解的是操作系统如何对软硬件做管理那它是怎么做管理的呢其实归纳起来就是我们上面所说六个字先描述再组织。那对于硬件来说其实和我们所描述的学生是同一个道理也有它自己的属性比如说这个硬件的名称是什么、编号是什么、归类是什么、状态是什么我们使用最基础的【C语言】就可以去描述这些属性构成一个个的结点使用【数据结构】就可以将这些离散的结点组织起来更好地做数据的管理和修改即我们上面对学生信息的管理变成了对链表的增删查改 因此对于上面这一系列的过程描述的过程就是【面向对象】的封装过程组织的过程就是【数据结构】的操作过程。所以为什么我们要学习语言呢为什么我们要学习数据结构呢本质上我们未来所写的软件或多或少都和管理有关 所以语言帮我们完成描述的过程数据结构帮我们完成组织的过程只有理解了先描述再组织才能理解管理的本质进而去理解操作系统换言之想要理解操作系统就必须得懂语言和数据结构 操作系统(OS) 的“管理” ✨操作系统如何进行管理
向下对硬件做管理 上面说了这么半天继续回归我们开头所讲的校长、辅导员、学生我们便可以重新去定义一下它们之间的关系 校长【发布决策】 ⇒ 操作系统 辅导员【执行决策】 ⇒ 硬件驱动 学生【参与执行】 ⇒ 硬件 对于操作系统和硬件我们上面都有提到过了不过这里的硬件驱动可能有些读者不太明白我来讲一讲这个 一般我们每一种硬件设备都会为其配置一个驱动程序鼠标、键盘、网卡、声卡、显卡都具备驱动程序 那有了这些驱动程序后操作系统就可以管理到下面的硬件了就和校长有了辅导员之后便很好地对学生做管理一样。首先它会通过各种驱动程序对各种硬件的信息做提取然后将这些信息全部抽象面向对象式地将其封装为一个结构体或者类然后填充设备结构体构造设备结点然后将这些结点以某种数据结构管理起来然后对操作系统对设备的管理就转换为了对链表的增删查改 向上对用户提供服务 计算机的底层有相应的硬件和驱动程序操作系统内核对下可以管理好软硬件同样也要管理进程。并且可以对外提供服务。操作系统并不相信任何的用户它不会将自己任何的数据结构、代码逻辑……直接暴露给用户为的是防止用户恶意修改操作系统所以操作系统是通过系统调用的方式对外提供接口服务类似于银行的工作人员提供一个一个小的窗口来给我们服务。Linux操作系统是用C语言写的这里所谓的“接口”本质就是C函数。我们学习系统编程本质就是在学习这里的系统接口。系统调用在使用上功能比较基础对用户的要求相对也比较高所以有心的开发者可以对部分系统调用进行适度封装从而形成库用户操作接口有了库就很有利于更上层用户或者开发者进行二次开发。 ✨操作系统管理的目的 在上一小节中我们谈论到的都是操作系统对下也就是对硬件的管理那一开始我有说起过它是一个对软硬件资源进行管理的软件但是为什么要对它们进行管理呢就像校长为什么要管理好我们呢本小节来谈谈这个话题 要知道对于一款操作系统来说它的生态取决于它的使用人数如果使用它的人多了那么它自己也就会被广泛地使用起来就像Linux一样因为有其开源社区的存在它是一块开源的OS而且安全、可靠所以使用的人才会这么多不过这也要取决于用户是否用得舒心
为什么这么说呢加个比方有一天你下课了准备回宿舍打开电脑玩原神怪打得好好的但是电脑五分钟黑屏一次八分钟蓝屏一次那你的使用体验感一定不会很好。此时你一定会选择重装系统或者干脆换一个系统 因此操作系统必须管理好当前机子的软硬件给用户一个良好的体验感才可以留住用户 【总结一下】 操作系统通过对下管理好软硬件资源这是它的手段对上给用户提供 安全、稳定、高效、功能丰富 的执行环境让用户有一个最佳体验这就是目的 四、共勉
以下就是我对【Linux系统编程】操作系统的理解如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对【Linux系统编程】进程的理解请持续关注我哦