【Hello Linux】初识操作系统

news2024/11/19 11:23:09

作者:@小萌新
专栏:@Linux
作者简介:大二学生 希望能和大家一起进步!
本篇博客简介:简单介绍下操作系统的概念

操作系统

操作系统是什么?

操作系统是管理软硬件资源的软件

为什么要设计操作系统

为什么要设计操作系统 难道我们直接去使用计算机不可以嘛?

不可以 因为直接去操作硬件的难度太高了 势必不可能大规模的使用 所以说要设计出来一个操作系统简化操作

同样的 对于硬件来说用户的一些非法操作可能会对其造成破坏 所以说需要操作系统去保护硬件

所以说设计操作系统的目的就很明显了

  1. 统筹管理软硬件资源
  2. 为用户提供一个良好的操作环境

操作系统的上下有什么

我们肉眼看过去计算机大概是这个样子

在这里插入图片描述
这些硬件看上去是分散开来的 但是在底层都严格遵守着冯诺依曼体系
在这里插入图片描述
然后单单存在这些硬件是没有意义的 因为我们需要操作系统去统筹管理他们

在这里插入图片描述
那么这里问题就来了 操作系统是直接和硬件去打交道的嘛?

答案肯定是否

为什么呢?

比如说我们今天的键盘坏掉了 去换了一块新的键盘 但是呢这块键盘比我们原来的键盘多了几个按键

那么这个时候怎么办呢? 难道要通过修改操作系统的源码来适配这些键嘛?

显然是不可能的 这样子的成本太高了

我们给出的解决方案是在操作系统和硬件之间添加一道驱动层

在这里插入图片描述

驱动一般是由各个硬件的厂商自主开发的 驱动程序和硬件直接打交道 管理者硬件的读取数据

而操作系统只需要决定何时读取数据就可以了

那么操作系统到底在管理些什么呢?

它主要对于下面四点进行着管理

  1. 内存管理:内存分配、内存共享、内存保护以及内存扩张等
  2. 驱动管理:对计算机设备驱动驱动程序的分类、更新、删除等操作
  3. 文件管理:文件存储空间的管理、目录管理、文件操作管理以及文件保护等
  4. 进程管理:其工作主要是进程的调度

在这里插入图片描述
操作系统再往上就是用户层了

在这里插入图片描述
但是操作系统为了保证整个计算机的安全肯定不可能全部暴露给用户

于是它只对上提供了一些系统接口 用户通过这些系统结构来调用操作系统

(其实这些接口就是函数)

在这里插入图片描述
但是调用系统接口对于没有系统学习过编程的普通人来说太难了 而且体验也十分不好

所以说基于系统调用接口程序员们开发出来了用户调用接口

在这里插入图片描述

如何管理? 先描述 再组织

先描述 再组织是贯穿整个操作系统的一句话

我们这里举个学校的例子来说明操作系统是如何管理的 以及为什么说先描述后组织

我们在一个学校里 校长是毫无疑问的管理者 学生是毫无疑问的被管理者

那么校长是怎么管理学生的呢?

是对每个学生都特别了解 然后做出相应的决策嘛?

这显然是不可能的 一个学校少则几千 多则几万的学生 想要全部了解理论上是不可能的

那么假如说校长想要组织一场考试 这个考试应该怎么进行开展呢?

首先校长说完要组织考试之后开始联系各个院的辅导员 然后辅导员去各系进行组织

如果说校长是操作系统 那么辅导员就是驱动 学生就是硬件

考完试之后校长决定对于各个学生进行奖惩 这个时候应该如何去操作呢?

很显然不可能去一个个的了解 这个时候还是通过辅导员收集各个学生的成绩 然后汇总上交给校长

所以说整个过程中 校长和学生之间并没有直接的接触 而是通过学生的一些数据就做出奖惩的决策

将学生数据化的过程就叫做描述

校长拿到学生成绩的时候肯定不是只拿到一个人的成绩 肯定是拿到所有学生的成绩

将这些成绩关联起来的行为就叫做组织 我们可以使用各种数据结构 比如说链表 双链表 二叉数 红黑树等进行数据的组织

所以说数据结构其实是操作系统所衍生出来的一个学科

我们这里总结一下

管理分两步走 首先描述被管理对象的各种属性将其数据化 之后使用数据结构将这些数据组织起来

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

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

相关文章

认识html

1.html的特点先看一段简单的html代码<html><head></head><body>hello world</body> </html>如果将这段带有这段代码的.html文件拉进浏览器中,就会出现一个页面,内容就是hello world,如下图:由上面的代码,我们可以了解到一些html代码的特点…

Java - 数据结构,队列

一、什么是队列 普通队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(FirstIn First Out) 入队列&#xff1a;进行插入操作的一端称为队尾&#xff08;Tail/Rear&#xff09; 出队列&#xf…

【华为OD机试模拟题】用 C++ 实现 - 对称美学(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 获得完美走位(2023.Q1) 文章目录 最近更新的博客使用说明对称美学题目输入输出示例一输入输出说明示例二输入输出说明备注Code使用说明 参加华为od机试,一定要注意不要完全背诵代码࿰

五、DeepWalk、Node2Vec论文精读与代码实战【CS224W】(Datawhale组队学习)

开源内容&#xff1a;https://github.com/TommyZihao/zihao_course/tree/main/CS224W 子豪兄B 站视频&#xff1a;https://space.bilibili.com/1900783/channel/collectiondetail?sid915098 斯坦福官方课程主页&#xff1a;https://web.stanford.edu/class/cs224w 文章目录D…

拿下域控后,我还是对大佬的操作念念不忘

历来攻防演练中&#xff0c;我都笃信一个道理——吃饱了才有力气干活。所以&#xff0c;在清晨的客户现场&#xff0c;当看到大佬满意地吃完了我带来的煎饺&#xff0c;我知道这一战&#xff0c;我们作为攻击队&#xff0c;基本已经拿下了。 虽然说的每一句话都带着一股醋味儿…

Android 高工分享一波性能优化的总结~

随着 Android 开发越来越规范&#xff0c;国内工程师的素质&#xff0c;以及用户对产品的要求也越来越高。这也间接导致我们对研发项目的质量要求到了近乎苛刻的地步&#xff0c;**内存优化、UI 卡顿优化、App 崩溃监控等性能调优也逐渐成了人手必备的技能。**工作之余&#xf…

Boost资料整理备忘

Boost资料整理备忘 网络资源 书籍: The Boost C Libraries官方文档 Boost Library Documentation random boost.randomBoost随机库的简单使用&#xff1a;Boost.Random(STL通用)tutorialstd::random boost::asio Boost.Asio 网络编程 - 基本原理Boost.Asio DocBoost定时器 网…

理光M2701复印机载体初始化方法

理光M2701基本参数&#xff1a; 产品类型&#xff1a;数码复合机 颜色类型&#xff1a;黑白 复印速度&#xff1a;单面&#xff1a;27cpm 双面&#xff1a;16cpm 涵盖功能&#xff1a;复印、打印、扫描 网络功能&#xff1a;支持无线、有线网络打印 接口类型&#xff1a;USB2.0…

如何建立项目标准化评价体系?【锦狸】

PMO团队面临着管理多个项目&#xff0c;甚至是多个项目集&#xff0c;多个产品集的问题&#xff0c;那么如何对项目们进行标准化评价体系的建设&#xff0c;就是PMO需要首先思考的问题。 首先我们要关注项目的背景&#xff0c;了解了项目背景之后&#xff0c;我们才可以明确项…

CPython解释器性能分析与优化

原文来自微信公众号“编程语言Lab”&#xff1a;CPython 解释器性能分析与优化 搜索关注 “编程语言Lab”公众号&#xff08;HW-PLLab&#xff09;获取更多技术内容&#xff01; 欢迎加入 编程语言社区 SIG-元编程 参与交流讨论&#xff08;加入方式&#xff1a;添加文末小助手…

【Linux】使用U盘自动化安装Linux(VMware虚拟机)

文章目录前言一、准备二、新建虚拟机2.1 创建虚拟机2.2 新增硬盘2.3 系统启动项三、加电运行四、EFI方式五、总结前言 一、准备 基于之前的基础【Linux】Kickstart 配置U盘自动化安装Linux系统&#xff0c;现在我们可以在虚拟机中尝试自动化安装Linux系统。 二、新建虚拟机 …

POI导入导出、EasyExcel批量导入和分页导出

文件导入导出POI、EasyExcel POI&#xff1a;消耗内存非常大&#xff0c;在线上发生过堆内存溢出OOM&#xff1b;在导出大数据量的记录的时候也会造成堆溢出甚至宕机&#xff0c;如果导入导出数据量小的话还是考虑的&#xff0c;下面简单介绍POI怎么使用 POI导入 首先拿到文…

Java:如何选择一个Java API框架

Java编程语言是一种高级的、面向对象的语言&#xff0c;它使开发人员能够创建健壮的、可重用的代码。Java以其可移植性和平台独立性而闻名&#xff0c;这意味着Java代码可以在任何支持Java运行时环境(JRE)的系统上运行。Java和Node js一样&#xff0c;是一种功能强大的通用编程…

机试指南

文章目录零、绪论和IDE安装int取值范围常犯的编程小错误一、枚举和模拟 (暴力求解)(一) 枚举1.Reverse函数 求 反序数2.程序出错的原因1.编译错误 (compile)&#xff1a;基本语法错误2.链接错误 (link)&#xff1a;函数名写错了3.运行错误 (run)&#xff1a;结果与预期不符&…

前后端分离开发Springboot+VUE学习笔记

学习内容来源&#xff1a;传送门 目录前后端分离实现技术创建vue项目在idea中打开新建页面创建SpringBoot应用创建实体对象与数据库表元素绑定创建实体类接口前端调用数据跨域传输在springboot中解决总结前后端分离 前后端分离就是将一个应用的前端和后端代码分开写&#xff0…

前端:分享JS中7个高频的工具函数

目录 ◆1、将数字转换为货币 ◆2、将 HTML 字符串转换为 DOM 对象 ◆3、防抖 ◆4、日期验证 ◆5、将 FormData&#xff08;表单数据&#xff09;转换为 JSON ◆6、衡量一个函数的性能 ◆7、从数组中删除重复项 JavaScript 实用函数是有用的、可重复使用的片段&#xff0…

STM32开发(14)----CubeMX配置ADC

CubeMX配置ADC前言一、什么是ADC&#xff1f;二、实验过程1.单通道ADC采集STM32CubeMX配置代码实现2.多通道ADC采样(非DMA)STM32CubeMX配置代码实现3.多通道ADC采样&#xff08;DMA&#xff09;STM32CubeMX配置代码实现总结前言 本章介绍使用STM32CubeMX对ADC进行配置的方法&a…

SpringCloud之Seata(二)

4.Seata如何应用于项目&#xff1f; 安装seata及修改配置 4.1 官网下载Seata安装包 4.2 修改seata/config.txt 4.2.1 修改存储方式 store.db.dbTypemysql store.db.driverClassNamecom.mysql.jdbc.Driver store.db.urljdbc:mysql://你的IP:3306/seata?useUnicodetrue sto…

第一篇博客------自我介绍篇

目录&#x1f506;自我介绍&#x1f506;学习目标&#x1f506;如何学习单片机Part 1 基础理论知识学习Part 2 单片机实践Part 3 单片机硬件设计&#x1f506;希望进入的公司&#x1f506;结束语&#x1f506;自我介绍 Hello!!!我是一名即已经步入大二的计算机小白。 --------…

F4—LVDS接口LCD显示彩图测试-2023-02-25

1.简介 系列文章TFT彩条测试介绍到&#xff0c;屏幕是由厂家提供的TFT显示模组和屏幕PCB背板组成。PCB的作用是提供LCD背光所需的电压、用于屏幕显示的电压、与其他设备相连的排针或者其他连接器形式。当模组支持触摸功能时还可以接上触摸转换或触摸控制芯片&#xff0c;通过SP…