【Linux】一文简单了解操作系统在硬件中的作用,解析操作系统是做什么的?

news2024/10/7 20:27:34

目录

  • 前言
  • 一.操作系统的介绍
  • 二.计算机软件体系结构
    • 接口
    • 各层接口
  • 三.操作系统做什么
    • 1.不要让CPU打盹
      • 多道程序
      • 分时系统
      • 多任务系统
    • 2.设备驱动

操作系统对软硬件进行合理的管理,以达到为上层用户提供良好的,稳定的,安全的运行环境的目的!

前言

本文多是提高对操作系统的了解,从一名操作系统纯小白的角度,搜集资料,整合而来的,过于干货建议斟酌食用,如果大家之前没有接触过操作系统,想对操作系统有一个了解,看完操作系统的介绍和软件体系结构图即可,若是还想在深入了解一些知识,可以继续往下看。本文的大多数内容来自《程序员的自我修养》这本书,如果感兴趣建议大家可以去认真阅读。

一.操作系统的介绍

操作系统是管理计算机硬件和软件资源的计算机程序,会对计算机管理硬件、驱动硬件;管理软件;资源分配与回收。操作系统也提供一个让用户与系统交互的操作页面。

我们买的电脑就是硬件,在电脑开机的时候就是在加载操作系统。

  • 操作系统就是一个做管理的软件
  • 它对软硬件进行合理的管理(手段),以达到为上层用户提供良好的,稳定的,安全的运行环境的目的(目的)!

二.计算机软件体系结构

我们想要了解操作系统到底是用来干嘛的就不得不说一下计算机的软件体系结构。
在这里插入图片描述

  • 应用程序包括我们下载的一些软件。
  • 驱动程序包括声卡驱动,和一些硬件的驱动入键盘,当我们为电脑连接一个新的键盘,电脑的反映时间大概是3-4秒这个过程就是驱动程序连接硬件的过程。

计算机系统软件体系结构采用一种层的结构,有这样一句名言:
计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决
如上图,这句话几乎概括了计算机系统软件体系结构的设计要点,整个体系结构从上到下都是按照严格的层次结构设计的。

接口

如图,每个层次之间都必须要相互通信,既然需要通信就必须有一个通信的协议,我们一般称为接口

  • 接口下面那层是接口的提供者,由它定义接口。
  • 接口上面那层是接口的使用者,它使用该接口来实现所需的功能。

在层次体系中,接口是被精心设计过的,尽可能的保持稳定不变。
体系结构中除了硬件和应用程序,其他都是所谓的中间层,每个中间层都是对它下面的那层的包装和扩展。正是这些中间层的存在,使得应用程序和硬件之间保持相对的独立。

虚拟机技术就是在硬件和操作系统之间增加了一层虚拟层,使得一个计算机上可以同时运行多个操作系统,这也是层次结构带来的好处,在尽可能少的改变甚至不改变其他层的情况下,新增加一个层次就可以提供前所未有的功能。

各层接口

体系结构中位于最上层的是应用程序和开发工具,它们属于同一层,因为它们使用同一个接口,那就是操作系统的应用程序编程接口(API)。应用程序接口的提供者是运行库,不同操作系统的运行库提供不同的API。

运行库使用操作系统提供的系统调用接口,系统调用接口在实现中往往以软件中断的方式提供,而不同的操作系统提供的中断号也不相同。

操作系统内核层对于硬件层来说是硬件接口的使用者,而硬件是接口的定义者,硬件的接口定义决定了操作系统内核,就是驱动程序如何操作硬件,如何与硬件通信。这种接口往往被叫做硬件规格,硬件规格由生产硬件厂商负责,操作系统和驱动程序开发者通过阅读文档来编写操作系统和驱动程序。

三.操作系统做什么

操作系统的一个功能是提供抽象的接口,另外一个主要功能是管理硬件资源。

计算机硬件的能力是有序的,一个计算机的内存大小,CPU执行指令的速度都是一定的,那我们该如何合理的应用这些资源?
一个计算机的主要资源为CPU、存储器(内存和磁盘)、I/O设备,我们从合理利用资源这一角度更深层的探索操作系统的作用。

1.不要让CPU打盹

多道程序

计算机发展早期,人们编写了一个监控程序,当某个程序暂时无需使用CPU时,监控程序就把另外的正在等待CPU资源的程序启动,使得CPU能够充分地利用起来。这就被称为多道程序

优点:

  • 在当时的确大大提高了CPU的利用率。

缺点:

  • 程序之间的调度策略太粗糙。使用该方法,程序不分轻重缓急,如果有些程序对响应要求高,急需处理,那么很有可能很长时间才有机会分配到CPU。

分时系统

经过稍加改进,每个程序运行一段时间以后都会主动让出CPU给其他的程序,使得一段时间内每个程序都有机会运行一小段时间。

  • 这时的监控程序已经比多道程序要复杂了,完整的操作系统雏形已经渐渐形成。

在Windows 3.1中,程序调用Yield、GetMessage或PeekMessage这几个系统调用时,Windows 3.1操作系统会判断是否有其他程序正在等待CPU,如果有,则可能暂停执行当前的程序,把CPU让给其他程序。

如果一个程序在进行一个很耗时的计算,一直霸占着CPU不放,那么操作系统也没有什么办法,其他程序都只有等着,整个系统就和死机了一样。比如一个程序进入一个while(1)的死循环,那么整个系统都停止了。

多任务系统

操作系统接管所有的硬件资源,并且本身运行在一个受硬件保护的级别。所有的应用程序都以进程的方式运行在比操作系统权限更低的级别,每个进程都有自己独立的地址空间,使得进程之间的地址空间相互隔离。CPU由操作系统统一分配,每个进程根据进程优先级的高低都有机会得到CPU。但是运行一段时间,操作系统就会暂停该进程,将CPU资源分配给其他等待运行的进程。这种CPU分配方式即称为抢占式,操作系统可以强制剥夺CPU资源并分配给它认为目前最需要的进程。

  • 如果操作系统分配给每个进程的时间都很短,即CPU在多个进程间快速地切换,从而造成了很多进程都在同时运行的假象。

目前几乎所有现代操作系统都采用这种方式。

2.设备驱动

操作系统作为硬件层的上层,它是对硬件的管理和抽象。对于操作系统上面的运行库和应用程序来说,它们希望看到一个统一的硬件访问模式。作为应用程序的开发者,我们不希望再开发应用时直接读写硬件端口、处理硬件中断等这些繁琐的事情。

当成熟的操作系统出现以后,硬件逐渐被抽象成了一系列概念。在Windows系统中,图形硬件被抽象成了GDI,声音和多媒体设备被抽象成了DirectX对象;磁盘被抽象成了普通文件系统,等等。程序员逐渐从硬件细节中解放出来,可以更多地关注应用程序本身的开发。这些繁琐的硬件细节全都交给了操作系统,具体地讲是操作系统中的硬件驱动程序来完成。

驱动程序可以看作是操作系统的一部分,它往往跟操作系统内核一起运行在特权级,但它又与操作系统内核之间有一定的独立性,是得驱动程序有较好得灵活性。

因为PC(个人电脑)得硬件种类非常多,操作系统开发者不可能每个硬件开发一个驱动程序,这个工作通常由硬件生产厂商完成。操作系统开发者为硬件厂商提供一系列接口和框架,凡是按照这个接口和框架开发得驱动程序都可以在该操作系统上使用。

这里我们以一个读取文件为例,来看一下操作系统和驱动程序在整个过程中扮演什么样得角色。

当我们要读取Linux系统下一个文件得时:
在这里插入图片描述

被一句话激励:舞台再大,你不上台,永远是个观众,平台再好,你不参与,永远是个局外人,能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,撑的累不累,摔得痛不痛,他们只想知道你最后站在什么位置,然后羡慕或鄙夷。

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

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

相关文章

AppScan使用教程

一、安装 IBM AppScan 该产品是一个领先的 Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界。Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 SQL 注入(SQL-i…

多时点DID实证流程笔记(Aggregate Effects from Public Works: Evidence from India)

文章、数据及stata代码来源: 链接:https://pan.baidu.com/s/1nBvlYGXkV7ednEx93ge1ZQ 提取码:vs5q本文进行的平行趋势检验、异质性检验均与大部分中文文献的处理方式不同,以及Bacon分解的方法对交叠did的潜在偏误进行诊断的做法也是比较新颖的。另外&a…

林业数字孪生打造实时树木“管家”

数字孪生是物联网、人工智能、虚拟现实、云计算等技术高度融合的综合性集成技术,主要目的是进行数字模型的智能分析、预测,为实体提供决策支持。林业数字孪生应用是智慧林业的具体实现手段,服务于智慧林草的业务需求,从而实现实体…

C语言#include的用法详解(文件包含命令)

#include叫做文件包含命令,用来引入对应的头文件(.h文件)。#include 也是C语言预处理命令的一种。 #include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件&…

AI-多模态-2021:FILIP【一种基于交互的细粒度图文预训练模型】

前言 FILIP(Fine-grained Interactive Language-Image Pretrain)是一种基于交互的细粒度图文预训练模型,用于解决图文双塔匹配模型中的细粒度匹配问题。本文对该论文进行阅读笔记, 论文:https://arxiv.org/abs/2111.…

【C#基础教程】第二十章、事件

目录 事件 1.事件 2.扩展EventArgs类 事件 1.事件 事件的组成:事件由事件发布者和事件订阅者组成。事件内包含一个私有委托。 当事件发布时,事件发布者会发布消息、而事件订阅者会接受到事件已发生的通知,并作出相应的处理。 其中&#xf…

计算机研究生就业方向之考编

我一直跟学生们说你考计算机的研究生之前一定要想好你想干什么,如果你只是转码,那么你不一定要考研,至少以下几个职位研究生是没有啥优势的: 1,软件测试工程师(培训一下就行) 2,前…

MyBatis的缓存机制

文章目录1 MyBatis的一级缓存1.1 演示1.2 使一级缓存失效的四种情况2 MyBatis的二级缓存2.1 演示2.2 使二级缓存失效的情况:2.3 二级缓存的相关配置(了解即可)3 MyBatis缓存查询的顺序1 MyBatis的一级缓存 一级缓存是SqlSession级别的&#…

【vue加载16秒优化到2秒】Vue3加载慢的性能优化,打包后页面静态资源chunk-vendors文件过大加载慢响应慢

【写在前面】基于自己之前做vue3项目的时候发现了一个致命的问题,项目部署好了,但是加载起来反应慢半天,控制台一看才发现,有个chunk-vendors的js文件加载了十几秒,这无非是页面体验差到爆炸。今天就针对打包后静态资源…

【密码学基础】混淆电路(Garbled Circuit)

1 概念 混淆电路是一种密码学协议,以实现安全多方计算(MPC)。场景是当多个通信方需要共同输入数据,然后通过同一个函数计算出一个结果,但是,各个通信方都不允许其他人知道自己的输入是什么。混淆电路就能很…

MySQL错误码大全

MySQL的所有错误码可以从MySQL官网查看。 1.MySQL地址 首页网址 2.文档地址 以此点击如下标志。 MySQL8.0文档地址 3.错误码地址 服务码官网地址 点进去之后,可以看到: 分为三大类: Server Error Message ReferenceClient Error Mes…

Java大型建筑建设综合工程项目管理系统源码带原生APP源码 工程管理系统源码 Java手机端工程项目管理系统源码带客户端操作手册

客户端下载: 1、安卓手机端 先下载“PP助手”应用商店,再在PP助手中搜索“star工程”下载安装。 2、苹果手机端 苹果手机APPstore中搜索“star工程”下载安装。 建设综合工程项目管理系统,让公司业务管理实现可记录,可追踪&#…

数字图像处理(入门篇)七 图像数据预处理之灰度变化

目录 一 常用操作 1 反转 2 对比度增强 3 对比度压缩 4 伽马矫正 二 实践 1 反转、对比度增强和对比度压缩 (1) 代码 (2) 结果图 2 伽马矫正 (1) 代码 (2) 结果图 (3) 结论 (4) np.power函数 图像灰度变换:将原始图像中的每一个点的灰度值&#xff0c…

尚医通 (三十三) -------- 阿里云OSS、用户认证与就诊人

目录一、阿里云 oss1. 开通 对象存储 OSS 服务2. 使用 SDK 文档3. 文件服务实现搭建 service-oss 模块测试SDK封装 service 接口封装 controller 接口二、用户认证1. 需求分析2. api 接口3. 前端4. 预约挂号页面调整三、就诊人管理1. 需求分析2. api 接口3. 前端四、平台用户管…

最新阿里云服务器和GPU服务器长期优惠活动价格表

阿里云服务器优惠活动是长期的,在12月优惠活动大促期间云服务器价格会有所调整,主机教程网现在给大家分享最新的阿里云服务器优惠活动价格表。现在阿里云双十一优惠活动刚刚结束,随之而来的就是双12优惠活动,关于阿里云服务器、对…

camunda入门教程及实现原理

1、camunda简介 1、介绍: Camunda是一种工作流引擎。 Camunda BPM 是一个轻量级、开源灵活的工作流框架,是由Java开发的一个纯Java库。它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时…

Linux 添加环境变量的两种方法 exprot 临时法 vi /etc/profile永久法

编写一个shell脚本之后,怎么可在任意目录运行改脚本呢?为什么别人写的脚本可以直接运行,自己写的脚本就会出现 -bash: XXXXX.sh: command not found 这样的错误呢? 1、举例验证,先新建一个HelloWorld的shell脚本&…

Alibaba 工具型技术系列,实战技术针对于项目中常用的 Excel 操作指南

ExcelIgnoreUnannotated 默认不加 ExcelProperty 的注解的都会参与读写,加了不会参与 通用参数 ReadWorkbook,ReadSheet 都会有的参数,如果为空,默认使用上级。 converter 转换器,默认加载了很多转换器。也可以自定义。 rea…

emlog模板开发基础2022最新指南

emlog模板的开发基础指南,如果想要开发emlog的模板,你必须知道那些开发内容呢?下面将介绍分析emlog5下的模板基本结构以及基本变量、函数的作用。 首先我们用该知道emlog的模板是位于根目录content\templates\文件夹下,每个模板都是一个单独的文件夹,文件夹以模板名…

[附源码]JAVA毕业设计-英杰学堂网上教学平台-(系统+LW)

[附源码]JAVA毕业设计-英杰学堂网上教学平台-(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项…