操作系统——进程深度理解

news2024/11/17 23:31:30

目录

一、操作系统

1、概念

2、操作系统的结构

3、操作系统的理解

二、进程


一、操作系统

1、概念

操作系统是一个软件,一款进行软硬件资源管理的软件
电脑开机的时间,就是把操作系统加载到内存并运行的过程。

对操作系统广义的认识:内核+外壳周边程序
侠义的认识:仅仅内核

2、操作系统的结构

操作系统四大核心工作:进程管理、内存管理、文件系统、驱动管理

驱动管理:

因为操作系统要管理硬件,这就需要二者匹配
如果不匹配,要么改操作系统,要么改硬件
这就很蛋疼
因此,在硬件和操作系统之间有设计了一层驱动层
作用是给操作系统提供硬件对应的通信接口,以匹配硬件与操作系统
一个硬件对应一个通信接口,而驱动程序是由厂商自定义提供的

每当新的硬件设备连接到计算机,都需要安装驱动程序,否则操作系统就无法对该硬件进行管理
例如我们每一次插入一个U盘,都会显示如下,这就是驱动程序的安装

所以,为什么要有操作系统?
对软硬件进行管理(手段),为用户提供一个良好(安全、稳定、高效)的运行环境(目的)
如果没有操作系统,就需要用户自己去底层管理软硬件的资源调配,那是不现实的。

3、操作系统的理解

我们下面从管理的角度进行理解

一个管理者是如何管理被管理者的?
例如校长对学生是如何管理的?
本质是对学生的数据进行管理的
因此,重要的是拿到数据。

任何管理:先描述,再组织
对任何对象的管理都遵循先描述,再组织的原则
例如我们写c++程序,一般第一步做的就是定义类,这其实就是描述对象
然后再对该对象进行相应的功能管理完善,即组织

依这个原则,我们就可以理解操作系统是如何对硬件进行管理:
当识别到一个新的硬件设备时,
先描述基本属性,例如说一个驱动类型的结构体
每一个设备都是一个结构体对象,但是各个设备的属性各异,数据也就各异
如厂商、类型、状态等。
而管理的本质是对数据的管理。
这样,我们就获取了各个硬件的结构体对象
之后,我们就可以使用合适的数据结构,例如数组、链表、二叉树等
对各个硬件的结构体对象进行组织管理
操作系统本质是一个软件,是用编程语言写的
所以,操作系统内部对硬件的管理,就变成了对硬件创建对应的结构体对象的管理
这个过程实际上也就是面向对象的过程
这就是先描述,再组织
大体的思路过程是这样的:
把特定对象的管理,编程特定数据的增删查改
至于具体的如何实现,我们不需要关心
因此,我们也可以预测:
操作系统内部将会存在大量的结构体
同时,操作系统大部分的工作,就是对这部分结构的组织和管理。

用户不能绕过操作系统这一层,直接访问底层硬件
因为,用户对底层的访问可能会改变底层数据
这样就会影响操作系统的对底层硬件的管理,有安全隐患
甚至可能导致操作系统的运行崩溃
这类似于用户和银行的关系
银行对用户是一个黑箱子的状态,对用户开放的,只有一个银行窗口
因为银行不可能对用户开放。

总结

因此,我们对整个操作系统的架构进行总结如下:
1、硬件底层不能对用户开放,但是用户使用计算机必然要使用到底层
怎么办?
因此,操作系统必须对用户提供系统调用接口

2、但是,我用户不懂什么操作系统,更不懂什么接口,我只懂双击666,那里亮了点那里。
怎么办?
因此,操作系统再系统调用的基础上,还需要对上提供专门针对用户的接口

因此,总的操作系统的整体构架如下:


二、进程

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

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

相关文章

PowerBI 度量值不被切片器筛选

我们有这样一张表: 我们用一个切片器绑定奖金表[奖金],就可以用表格来联动显示数据: 现在用户有个新的需求,当单选某个奖金时,需要统计小于这个奖金数的人数。 我用了一个度量值来统计: 度量值 VAR selected_bonus…

全国区块链职业技能大赛样题第9套后端源码

后端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746050 前端源码地址:https://blog.csdn.net/Qhx20040819/article/details/140746216 智能合约+数据库表设计:https://blog.csdn.net/Qhx20040819/article/details/140746646 项目预览 登录 用户管理

vue3 快速入门 (五) : Flex布局

1. 如何变成Flex布局 变成Flex容器,只需在容器布局的节点的CSS中,增加display : flex .mylayout {/* 省略了其他代码 */display: flex; }2. flex direction : 方向 row : 以行排列 row-reverse : 以行反向排列 column :以列排列…

向日葵RCE复现(CNVD-2022-10270/CNVD-2022-03672)

一、环境 1.1 网上下载低版本的向日葵<2022 二、开始复现 2.1 在目标主机上打开旧版向日葵 2.2 首先打开nmap扫描向日葵主机端口 2.3 在浏览器中访问ip端口号cgi-bin/rpc?actionverify-haras &#xff08;端口号&#xff1a;每一个都尝试&#xff0c;直到获取到session值…

AJAX之原理

目录 XMLHttpRequest基本使用查询参数数据提交&#xff08;注册账号&#xff09; Promise基本语法Promise三种状态Promise链式调用 async函数和await XMLHttpRequest 基本使用 XMLHttpRequest对象用于与服务器交互 与axios关系&#xff1a;axios内部采用XMLHttpRequest与服务…

Elasticsearch:跨集群使用 ES|QL

警告&#xff1a;ES|QL 的跨集群搜索目前处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。Elastic 将努力解决任何问题&#xff0c;但技术预览中的功能不受官方 GA 功能的支持 SLA 约束。 使用 ES|QL&#xff0c;你可以跨多个集群执行单个查询。 前提&#xff1a; …

每天一个设计模式之命令模式(第二天)

交互模式中的命令模式&#xff0c;在开始记录之前&#xff0c;要讲些自己的感受&#xff0c;真真切切的感受到了悟性的瓶颈&#xff01;一共十页书&#xff0c;需要自己细细琢磨品味&#xff0c;至少三四遍才大概了解了他们间的逻辑&#xff0c;我需要调整下自己的学习思路&…

Lumos学习王佩丰Excel第七讲:认识公式与函数

一、认识Excel公式 1、运算符 运算符 作用 算术运算符 加 - 减 * 乘 / 除 % 百分比&#xff0c;相当于除以100 & 连接符&#xff0c;文本数字均可连接 ^ 乘方 比较运算符 等于 > 大于 < 小于 ≤ 小于等于 ≥ 大于等于 例1&#xff1…

python实现信号合成(DSP仿真系统)【1】

python实现信号合成(DSP仿真系统)【1】 1、效果图 2、功能结构 1、基础信号正弦波、脉冲函数、阶跃函数、斜坡函数、方波、sinc曲线、矩形波(非周期) 2、信号合成(叠加)叠加噪音 3、波形展示原始波形、叠加波形、FFT、PSD、卷积 4、各种滤波器4.1.限幅滤波器4.2.中位值滤…

【OSCP系列】OSCP靶机-BTRsys-2.1(原创)

OSCP系列靶机—BTRsys-2.1 原文转载已经过授权 原文链接&#xff1a;Lusen的小窝 - 学无止尽&#xff0c;不进则退 (lusensec.github.io) 一、主机发现 二、端口扫描 1、快速扫描 2、全端口扫描 3、服务系统探测 4、漏洞探测 80端口扫到了一些目录&#xff0c;有wordpress框…

CentOS7使用yum安装MySQL

废话不多说&#xff0c;直接上干货 1、CentOS7的yum源中默认是没有mysql的&#xff0c;我们先下载mysql的repo源 wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 2、安装mysql-community-release-el7-5.noarch.rpm包 sudo rpm -ivh mysql-community-r…

算法通关:007时间复杂度和空间复杂度:生成相邻两数不相等的数组

生成相邻两数不相等的数组 全部代码&#xff1a; import java.util.Arrays;/*** Author: ggdpzhk* CreateTime: 2024-07-28* 随机生成数组&#xff0c;比如每个元素都在0-3之间&#xff0c;且相邻两个元素不相同*/ public class _007 {public static void main(String[] args)…

Redis:管道

1. 面试题 如何优化频繁命令往返造成的性能瓶颈&#xff1f; 问题由来 edis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤&#xff1a; 1 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果)&#xff0c;并监听Socket…

Vue.js 2 项目实战(九):商品列表

前言 Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的设计初衷是通过采用简洁且强大的结构&#xff0c;使前端开发变得更简单和高效。以下是对 Vue.js 的详细介绍&#xff1a; 核心特性 声明式渲染 Vue.js 使用声明式语法来描述用户界面&#xff0c;通过数据绑…

力扣刷题----42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xf…

经验分享:大数据信用报告可以查到什么?哪里能查大数据?

相信不少人都因为大数据信用不良碰过壁&#xff0c;这时候不少人反过来想要了解大数据信用报告可以查到什么?哪里能查大数据?其实大数据信用报告就是通过对个人在互联网上产生的各类行为数据收集、整合和分析&#xff0c;并基于此对个人信用状况进行评估和预测的一种检测工具…

Java之快速排序

快速排序 快速排序(Quick Sort)算法&#xff0c;简称快排&#xff0c;利用的是分治的思想。 快速排序思路&#xff1a; ​ 如果要对 first->end 之间的数列进行排序&#xff0c;我们选择 first->end 之间的任意一个元素数据作为分区点(轴值Pivot)&#xff0c;然后遍历 f…

【Qt】QLabel常用属性相关API

QLabel是Qt框架中用于显示文本或图案的小部件。在Qt应用程序中&#xff0c;QLabel是用来呈现静态文本或图像给用户的重要部分 QLabel属性陈列 属性说明textQLabel中的文本内容textFormat 文本的格式 Qt::PlainText 纯文本Qt::RichText 富文本Qt::MarkdownText markdown…

Transformer--输入部分

&#x1f3f7;️上文我们简单介绍了Transformer模型的总体架构&#xff0c;本章我们主要介绍其输入部分 &#x1f4d6;前言 &#x1f4d6;文本嵌入层的作用 &#x1f4d6;位置编码器的作用 &#x1f4d6;前言 输入部分主要包括源文本嵌入层以及位置编码器&#xff0c;目标文本…

【Vulnhub系列】Vulnhub_SecureCode1靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub_SecureCode1靶场渗透 原文转载已经过授权 原文链接&#xff1a;Lusen的小窝 - 学无止尽&#xff0c;不进则退 (lusensec.github.io) 一、环境配置 1、从百度网盘下载对应靶机的.ova镜像 2、在VM中选择【打开】该.ova 3、选择存储路径&#xff0…