操作系统的引入

 操作系统

【1】什么是操作系统

操作系统是一种管理的计算机硬件的软件资源的程序。它充当了计算机系统和应用程序之间的接口。使得计算机用户能够地使用计算机系统来完成各种任务。操作系统是负责管理和分配计算机的处理器、内存、硬盘等等硬件资源,同时也提供一些基本的服务,比如文件系统、网络系统、网络连接、进程管理等。常见的操作系统包括Windows、Mas OS、Linux等。

【2】冯·诺依曼体系

数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

image-20240116150942233

这里的存储器指的是什么呢?——内存。

而内存具有一个特点:带电存储,掉电易失、

与内存相对的就是外存,它具有永久性存储能力,常见设备有硬盘等,外存不是这里指的存储器,而是外设的一种,属于输入输出设备。

【3】操作系统的概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS),它是一个进行软硬件资源管理的软件

笼统的理解,操作系统包括:

内核(进程管理,内存管理,文件管理,驱动管理)

其他程序(例如函数库, shell程序等等)

为什么操作系统要管理软硬件呢?

image-20240116151639290

操作系统对下通过合理地管理软硬件资源(手段)对上来为用户提供良好的(稳定的、高效的,安全的)执行环境(目的)。

【4】理解管理

在整个计算机软硬件架构中,操作系统的定位是: 一款纯正的“搞管理”的软件。

如何理解 "管理"?

比如在大学里,大学生的就近管理者是辅导员,但是说实话大部分学生一学年下来都没见过辅导员,那他又是如何管理大学生的呢?

对于管理者要建立这样的理解:管理者不需要和被管理者直接交互,依旧能管理好被管理对象。

所以说这是怎么做到的呢?

 一般与大学生直接交互的都是各班班干或学生会,他们可不算是管理者,真正的管理者需要对重大事宜有决策的能力。对于管理者而言,他们的任务便是审时度势,做决策和做执行。而做决策是需要一定依据的,而依据来源于什么?来源于管理者所获取的*数据*。

虽然大学生不直接与辅导员打交道,但是他们的所有数据早就被辅导员拿到了,而且数据还在一直更新。辅导员的一切决策都是基于手中的数据和学院政策与规定的,比如看哪些学生绩点太低,需要push一下这些学生学习。

管理者对于被管理者的管理,在本质上其实是对于被管理者的数据进行管理。

说了一大堆,可还是不知道所谓的数据是从哪来的,管理者不直接和被管理者交互又该如何拿到数据呢?而且被管理者的数据是持续更新的,管理者又该如何一直拿到更新的数据呢?

所以说,在管理者和被管理者之间应当还有一个中间层——执行者

管理者负责根据上报的数据做决策,执行者负责两个任务:一是和被管理者接触以拿到对应数据,二是执行管理者分派的指令。

以上所述其实都能适用于操作系统和硬件,它们之间也有一个中间层——驱动程序

image-20240116151803944

我们接着聊,管理者拿到数据后该如何操作和管理呢?就比如辅导员拿到学生的数据,直接看的话会发现杂乱无章,不过其实学生的信息种类是一样的,就像姓名、性别、电话、家庭住址、成绩等等,可以把信息高度提炼出来,抽象为一个struct结构体,再把学生数据填充到一个个结构体中来进行管理。

然而要管理的学生数量是在有点大,为了便于管理,可以建议辅导员建立链表,这样一来,原本对学生数据做管理就变成了对链表做管理。

image-20240116151829359

这实际上是一个对被管理对象进行建模的过程,重点在于管理者要做到“先描述,再组织”,也就是先根据被管理者的数据进行概括和抽象,再对这一抽象用数据结构进行组织,因此对于数据的管理也就变成了对于数据结构的管理,这就是我们操作系统的管理手段。

小结:

管理的本质是对数据做管理,管理的方法是“先描述,再组织”。

计算机管理硬件的方法:

1.描述起来,用struct结构体或其他(和语言有关)

2.组织起来,用链表或其他(和数据结构有关)

【1】操作系统的作用

隐藏丑陋复杂的硬件接口提供良好的抽象接口管理、调度进程,并且将多个进程对硬件的竞争变得有序。

【2】多道技术

(1)产生背景:针对单核,实现并发

现在的主机一般是多核,那么每个核,那么每个核都会利用多道技术 有4个cpu.运行cpu1的某个程序遇到io阻塞,会等到io结束在重新调度, 会被调度到4个cpu中的任意一个,具体由操作系统调度算法决定。

(2)空间上的复用

如内存中间同时有多道程序空间上的复用指的是在内存中同时运行多个程序,这样可以有效地利用内存资源。

(3)时间上的复用

复用一个cpu的时间片指的是共享同一台机器的多个进程可以轮流使用cpu,从而避免了长时间等待的情况发生。

I/O指的是输入/输出(Input/Output)操作,也就是计算机系统与外部设备之间的数据交换。计算机程序通过I/O操作从外部设备获取输入数据或将输出数据发送到外部设备。

强调:

遇到io切,占用cpu同时时间过长也切,核心在于切之前将进程的状态保持下来,这样才能保证下次切换后来时,能基于上次切走的位置继续运行。

【5】操作系统的发展史

image-20240116162357907

  1. 早期计算机:20世纪40年代至50年代,早期计算机使用的操作系统非常简单,通常称为"监控程序"。

    没有操作系统的概念。所以的程序设计都是直接操控硬件。

  2. 批处理系统:20世纪50年代后期,批处理操作系统开始出现。批处理系统能够自动化执行一系列作业,而无需人工干预。它们允许一次性提交多个作业,并按照一定的顺序进行处理。

    设计人员、生产人员、操作人员、程序人员和维护人员直接有了明确的分工 计算机被锁在在专用空调空间中

    由于专业操作人员运行忙着便是“大型机”

  3. 分时操作系统:20世纪60年代,分时操作系统开始出现。这种操作系统允许多个用户通过终端同时访问计算机系统,并实现了以时间片轮转方式共享计算机资源。UNIX是其中一个重要的分时操作系统。

多道技术:多道技术的多道指的是多个程序

多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题。

解决方式即多路复用 多路复用分为时间上的复用和空间上的复用 空间上的复用: 将内存分为几部分,每个部分放入一个程序,这样,同一时间内存中就有了多道程序。 时间上的复用: 当一个程序在等待i/o时,另一个程序可以使用cpu 如果内存中可以同时存放足够多的作业,则cpu的利用率可以接近100% 类似与我们小学教学所学的统筹方法 (操作系统采用了多道技术后,可以控制进程的切换或者说进程之间去争抢cpu的执行权限。 这种切换不仅在一个进程遇到io时进行,一个进程占用cpu时间过长也会切换或者说被操作系统夺走cpu的执行权限。)

  1. 客户机-服务器模型:20世纪80年代,随着个人计算机的普及,客户机-服务器模型的操作系统开始流行。这种模型将计算任务分配给服务器来处理,而客户机主要负责显示和输入。微软的Windows和苹果的Mac OS是这一时期最知名的操作系统。

    即使可以利用cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。 将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在

【四】任务1调度算法介绍 【1】什么是进程? 进程其实就是正在进行的一个过程或一个任务 复杂执行任务的就是CPU

【2】进程和程序的区别 (1)理论上 程序基石一堆数据和代码(存放在硬盘中的文件) 进程就是指的是程序的运行过程(通过启动入口将你的程序启动起来的过程)

(2)例子 就比如你去快递站拿快递 (你在去拿快递要做的事情就是进程)

【3】进程的调度问题 CPU调度进程 (1)什么是调度算法 想要多个进程交替运行 操作系统必须对这些进行调度 这个调度与不是随即进行的,二十需要遵循一定的法则 由此就有了进程的调度算法 (2)先来先服务算法 1.理论 先去先服务(FCFS)调度算法是一种最简单的调度方法

2.适用场景

FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。 由此可知,本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)。

(3)短作业优先调度算法 1.理论 短作业优先

2.该算法即可用于作业调度,也可用与进程调度

但对长这样不理

不能保证紧迫性作业(进程)被及时处理,作业的长短也是被估算出来的

【四】时间片轮转法 时间片轮转法是一种常用的调度算法,特别适用于分时操作系统中多个用户共享计算机资源的场景。它将处理器的时间划分成若干个时间片,并按照固定的顺序将每个进程分配到一个时间片中去执行。

具体来说,时间片轮转法的工作原理如下:

  1. 将所有需要执行的进程按照先来先服务(FCFS)的原则排队。

  2. 将处理器的时间分成固定长度的时间片,比如说每个时间片为10ms。

  3. 每当一个新的时间片开始时,调度程序将把当前正在运行的进程挂起,将其放回就绪队列的尾部,然后从队列的头部取出下一个进程,将其分配给处理器执行。

  4. 如果一个进程在它所分配的时间片内没有完成它的任务,则该进程被暂停并被放回就绪队列的尾部。下一个进程再次从队列的头部被选中并执行。

  5. 当一个进程完成它的任务时,它会自动退出并从队列中删除,然后调度程序选择就绪队列中的下一个进程并将其分配给处理器执行。

  6. 这个过程会一直持续下去,直到所有进程都执行完毕。

优点:

时间片轮转法的优点是公平性和响应度高。它确保每个进程都能在一定时间内获得处理器的使用权,并且在多任务环境中保证了进程之间的均衡性。此外,它还可以避免进程长时间占用处理器而导致的系统崩溃。

缺点:

是每次切换进程时需要花费额外的开销,因此当时间片长度很短时会增加处理器的负担。此外,该算法对I/O密集型进程的响应不够及时,因为当进程在等待I/O操作完成时,它仍然会被强制暂停并等待下一个时间片到来。

总体而言,时间片轮转法是一种简单而有效的调度算法,尤其适用于多用户共享计算机资源的场景。

【6】并发串行并行

串行:就是按照顺序一个个的执行

并发行:感觉上是并行其实是串行

并行:同时运行

【7】同步/异步/阻塞/非阻塞

【1】同步

同步就是在发出一个功能调用是,在没有得到结果之前,该调用就不会返回。

【2】异步

异步的概念和同步相对。

当一个异步功能调用发出后,调用者不能立刻得到结果。

当该异步功能完成后,通过状态、通知或者调来通知调用者。

【3】阻塞

阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)

函数只有在得到结果之后才会将阻塞的线程激活。

有人也许会把阻塞调用和同步调用等同起来,实际上它是不同的。

对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。

(1)同步调用

apply一个累计1亿次的任务,该调用会一直等待,直到任务返回结果为止,但并未阻塞住(即便是被抢走cpu的执行权限,那也是处于就绪态)

(2)阻塞调用

当socket工作在阻塞模式的时候,如果没有数据的情况下调用recv函数,则当前线程就会被挂起,直到有数据为止。

【4】非阻塞

非阻塞和阻塞的概念相对应

指在不能立刻得到结果之前也会离开返回

同时该函数你会阻塞当前线程

同步和异步针对的是函数/任务的调用方式

同步是指当一个进程发起一个函数调用的时候一直等待结果的返回

异步是指当一个进程发起一个函数调用的时候,不需要一直等待结果的返回 而且是可以继续其他的任务

阻塞和非阻塞针对的是进程或线程(已经跑起来的函数/任务)

阻塞遇到了一定的IO,需要事件处理,这时候就会将进程或线程挂起

非阻塞,跟阻塞相反,没有遇到IO

同步阻塞:任务按顺序执行, 每个任务阻塞后续任务

异步阻塞: 任务在执行时无需要等待,但阻塞后续任务

同步非阻塞: 任务按顺序执行, 执行期间不阻塞后续任务

异步非阻塞: 任务在执行是无需等待,且不阻塞后续任务

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

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

相关文章

Vue3在css中使用v-bind绑定js/ts变量,也可以在scss和less中使用方式

主要介绍Vue3中的新增的v-bind()的常用使用方式,主要包括在css,less,scss中的使用,可以参考官方文档查看:Vue3官方文档 特别提醒 如果你想在scss中或者less中使用,可能会报各种乱七八糟的错误,最快最好用的方式就是单…

Android P 背光机制流程分析

在android 9.0中,相比android 8.1而言,背光部分逻辑有较大的调整,这里就对android P背光机制进行完整的分析。 1.手动调节亮度 1.1.在SystemUI、Settings中手动调节 在界面(SystemUI)和Settings中拖动进度条调节亮度时,调节入口…

[docker] Docker的私有仓库部署——Harbor

一、Docker原生私有仓库—— Registry 1.1 Registry的简单了解 关于Docker的仓库分为私有库和公有仓库,共有仓库只要在官方注册用户,登录即可使用。但对于仓库的使用,企业还是会有自己的专属镜像,所以私有库的搭建也是很有必要的…

那些年与指针的爱恨情仇(一)---- 指针本质及其相关性质用法

关注小庄 顿顿解馋 (≧∇≦) 引言: 小伙伴们在学习c语言过程中是否因为指针而困扰,指针简直就像是小说女主,它逃咱追,我们插翅难飞…本篇文章让博主为你打理打理指针这个傲娇鬼吧~ 本节我们将认识到指针本质,何为指针和…

将Html页面转换为Wordpress页面

问题:我们经常会从html源码下载网站上获得我们想要的网站内容框架,以及部分诸如联系我们,About 等内页,但是在文章的发布上,则远不如Wordpress简便。而Wordpress尽管有各种模板,但修改又比较麻烦。解决方法…

day34WEB 攻防-通用漏洞文件上传黑白盒审计逻辑中间件外部引用

目录 一,白盒审计-Finecms-代码常规-处理逻辑 黑盒思路:寻找上传点抓包修改突破获取状态码及地址 审计流程:功能点-代码文件-代码块-抓包调试-验证测试 二,白盒审计-CuppaCms-中间件-.htaccess 三,白盒审计-Metin…

CVE-2024-23897 Jenkins 任意文件读取漏洞

项目介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。Jenkins是开源CI&CD软件领导者, 提供超过1000个插…

guhub访问

问题 访问不了guhub 解决过程 可以正常访问了 总结 此方法参考微软官方的方法,修改dns服务器网址,由原本的自动分配改为指定微软dns服务器网址

深度强化学习(王树森)笔记02

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

苹果手机突然无服务了,这是怎么回事?

苹果手机无疑是一款备受青睐的智能设备,但有时候我们可能会面临一个令人困扰的情况——苹果手机突然无服务。这种情况可能会在任何时候发生,无论是在使用手机时,刚刚升级系统,或者是突然发现在本应有信号的区域却无法连接到运营商…

Linux——常用命令

1、命令的基本格式 对服务器来讲,图形界面会占用更多的系统资源,而且会安装更多的服务、开放更多的端口,这对服务器的稳定性和安全性都有负面影响。其实,服务器是一个连显示器都没有的家伙,要图形界面干什么&#xff…

Nodejs基础4之fs模块的批量重命名练习、path模块、HTTP协议

Nodejs基础 fs模块fs练习-批量重命名fs练习-批量排序重命名 path模块resolve 解决sep 分隔符parse 方法其他的几个方法 HTTP协议http报文安装fiddler软件配置fiddler使用fiddler 请求报文结构整体请求行请求方法URLHTTP版本号 请求头请求体 响应报文结构整体响应行响应状态码响…

用甘特图有效管理多个项目进度

当公司或组织同时承担多个项目时,合理规划各项目的时间节点与资源分配对确保高效完成至关重要。采用甘特图可以直观地展示多个项目的时间进程、关键里程碑以及资源分配情况,便于从宏观层面全面把控各项目的动态。 在线甘特图软件 zz-plan.com 提供了非常强大的时间轴规划功能,支…

14、Kafka ------ kafka 核心API 之 流API(就是把一个主题的消息 导流 到另一个主题里面去)

目录 kafka 核心API 之 流APIKafka流API的作用:流API的核心API:使用流API编程的大致步骤如下:代码演示 流API 用法MessageStream 流API 代码演示消息从 test1主题 导流到 test2主题演示使用匿名内部类对消息进行处理Topology 拓扑结构 讲解 代…

程序员该懂的一些测试(二)单元测试与集成测试

集成测试才是目的 单元测试只是对每个小模块进行的测试,可以理解成每次提交的一个小功能。 最终系统的良好运行依赖于这些小模块之间良好协作。所以需要有集成测试 集成测试回滚数据,保证测试的可重复性 我们可以把 ApplicationContext 理解成 DI 容器…

Transformer and Pretrain Language Models3-6

Pretrain Language Models预训练语言模型 content: language modeling(语言模型知识) pre-trained langue models(PLMs)(预训练的模型整体的一个分类) fine-tuning approaches GPT and BERT(…

【探索科技 感知未来】文心一言大模型

【探索科技 感知未来】文心大模型 🚩本文介绍 文心一言大模型是由中国科技巨头百度公司研发的一款大规模语言模型,其基于先进的深度学习技术和海量数据训练而成。这款大模型具备强大的自然语言处理能力,可以理解并生成自然语言,为…

JVM-字节码应用

一、字节码的应用远超你的想象 二、ASM介绍与读取字节码实战 用CoreAPI解析和TreeAPI都能做字节码解析,区别,TreeAPI必须读取完整字节码信息,才能做解析。 下面代码,使用CoreAPI做解析: package asm;public class MyM…

leetcode.2846. 边权重均等查询【lca+树形dp】

原题链接:2846. 边权重均等查询 题目描述: 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui …

微服务-微服务Alibaba-Nacos注册中心实现

1. 系统架构的演变 俗话说, 没有最好的架构,只有最合适的架构。 微服务架构也是随着信息产业的发展而出现的最有普 遍适用性的一套架构模式。通常来说,我们认为架构发展历史经历了这样一个过程:单体架构——> 垂直架构 ——&g…