操作系统的结构与功能流程

news2024/10/6 6:41:23

一、用户态和内核态
用户态可以理解为用户模式,内核态理解为内核模式

二、功能流程举例
假设你是一名顾客在一家餐厅用餐,餐厅有一个厨师负责烹饪食物,而你作为顾客只能在餐厅的就餐区域内进行点餐、享用餐点。这里就可以将就餐区域看作用户态,厨师看作内核态。

在用户态,你只能在就餐区域内享用餐点,不能直接进入厨房进行烹饪操作,也不能直接控制厨房的设备和资源,比如燃气灶、刀具等。你只能通过服务员(类似于系统调用接口)向厨师发出菜单(类似于系统调用请求),然后厨师根据菜单进行烹饪(类似于内核态下的操作),最后将做好的餐点送到你的就餐区域供你享用(类似于系统调用结果返回给应用程序)。这时,你可以在用户态下享用餐点,但不能直接控制厨房的操作。

而在内核态,厨师具有更高的权限,可以自由进入厨房,使用各种设备和资源,进行烹饪操作,如调整燃气灶的火候、使用刀具进行切割等。厨师在内核态下具有更高的权限,可以直接控制厨房的操作,执行特权操作。

类似地,在计算机系统中,应用程序在用户态下只能访问受限的资源,并通过系统调用接口向操作系统发起请求以执行需要特权的操作。而操作系统在内核态下具有更高的权限,可以直接访问系统的核心功能和资源,执行特权操作。用户态和内核态之间的切换需要经过系统调用接口,类似于餐厅中的服务员将菜单传递给厨师进行处理,然后将处理结果返回给应用程序。

三、详解
在这里插入图片描述
注:内核态和硬件之间存在硬件系统(各种驱动),硬件管理管理驱动,驱动启动硬件;
在这里插入图片描述
1、用户态:程序,sdk等可以让用户直观调用的;

2、操作系统服务层:调用系统接口,可以把操作系统服务层比喻为一个类似于酒店前台的角色。在酒店中,前台作为酒店客户(用户态)和酒店内部各个部门之间(内核态模块)的接口,负责接待客户、处理客户的需求,并协调各个部门的工作(去调用系统调用接口),以提供满意的服务。

3、五大基础模块

文件系统
(一)普通文件系统:FAT、EXT4等等文件系统;
(二)虚拟文件系统(VFS):基于文件系统的多样性,给出了抽象的统一管理接口
举例:想象你是一个旅行者,计划在一个国家里旅游。这个国家有多个城市,每个城市都有自己的交通系统,例如公交车、出租车、地铁等。每个城市的交通系统都有不同的车辆、路线和票价,由不同的交通公司负责。这里,每个城市的交通系统对应于实际的文件系统,例如FAT文件系统、NTFS文件系统、ext4文件系统等,它们各自独立地管理着车辆和路线信息。而虚拟文件系统(VFS)就像是一个旅行规划器,提供了一个统一的交通规划接口。你只需要在规划器上选择你的出发地和目的地,然后规划器会为你生成最佳的交通路线、票价和出行方式,无需关心每个城市的具体交通系统

内存管理模块
(一)实现对内存的合理分配、使用和释放

进程管理模块:如名
进程通信模块:如名

驱动管理模块
字符型驱动:可以类比为打印机驱动。打印机驱动负责将计算机中的字符数据转换成打印机可以识别的打印指令,控制打印机进行字符的打印输出。类似地,字符型驱动是操作系统中的一种驱动程序,负责处理字符设备,如串口、键盘等,将用户输入或者应用程序的输出转换成字符数据进行传输和处理。

块驱动:可以类比为硬盘驱动。硬盘驱动负责管理硬盘上的数据块,读取和写入文件系统中的块数据。类似地,块驱动是操作系统中的一种驱动程序,负责管理块设备,如硬盘、SSD等,将文件系统中的文件数据以块为单位进行读取和写入。

网络驱动:可以类比为网卡驱动。网卡驱动负责处理计算机与网络之间的数据传输,将数据通过网络接口传输到网络上或从网络接口接收数据并交给操作系统进行处理。类似地,网络驱动是操作系统中的一种驱动程序,负责处理网络设备,如网卡、无线网卡等,将数据在计算机与网络之间进行传输和处理。

4、硬件系统
设备驱动程序:设备驱动程序是运行在内核态的软件模块,负责控制和管理硬件设备。设备驱动程序通过与硬件设备的接口进行交互,使用硬件的特定指令和寄存器操作来控制硬件设备的行为。通过设备驱动程序,内核态可以直接与硬件层进行通信,实现对硬件设备的操作和控制。

5、硬件工作

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

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

相关文章

【基于视觉的分割】语义分割初探索:一些经典和先进的算法

写在前面: 有很长时间没有更新学习了,因为在忙着做试验写毕业论文。但是,学习不能停止,从今天开始,换成语义分割方向进行深入学习,有兴趣的小伙伴可以和我一起讨论,也欢迎才进入这个方向学习的…

【Grafana】連接mssql並圖表顯示

【Grafana】連接mssql並圖表顯示 1. 函數2. Demo2.1 Query2.2 Query 3. Awakening1.1 Big Data -- Postgres 1. 函數 Macro exampleReplaced by$__time(dateColumn)An expression to rename the column to time. For example, dateColumn as time$__timeEpoch(dateColumn)An e…

改变思想,拥抱毒瘤,让公司走的更远

牛B的人物,早已经厌倦了中英文混杂,他们更进一步,使用中英文缩写,对普通人进行降维打击。更厉害的,造就新的名词,并科普出去。 有几项技术,我从心底里鄙视和厌恶,但每次在技术方案中…

Cursor IDE一个GPT4人工智能自动程序编辑器

让我们来了解一下Cursor IDE是什么。Cursor IDE是一个新型的编程工具,可以通过它生成、编辑以及与人工智能进行交互分析代码。官方网站上的三个单词“Build Software. Fast.”(快速构建软件)以及“Write, edit, and chat about your code wit…

Spark 实现重新分区 partitionBy、coalesce、repartition(附代码演示)

文章目录 1、partitionBy 源码中的定义(部分) 调用方式 2、coalesce 源码中的定义 调用方式 3、repartition 源码中的定义 调用方式 repartition和coalesce的区别 代码演示 (跳转代码) 实现重新分区,本质上…

如何轻松进行接口测试?试试这款神器Apifox,亲测好用!

Apifox学习教程地址:https://www.bilibili.com/video/BV1mb411o7Go/? 目录:导读 ​引言 一、接口调试 二、Mock功能 三、自动化测试 引言 如果你曾经为手工编写和维护测试用例而感到疲惫,那么你需要试试这款神器——Apifox! …

【云原生】Kubernetes(k8s)之Pod概念和使用

k8s之Pod概念和使用 一、Pod简介1.1、Pod的阶段(状态)1.2、容器状态 二、Pod的定义2.1、restartPolicy2.2、imagePullPolicy2.3、command2.4、args2.5、resources 三、Pod的使用3.1、创建并访问Pod3.2、多个应用容器3.3、Init容器3.3.1、Init容器与普通容…

劝人写码,千刀万剐——“前端已死”难道要成真了?

移动互联网的兴起,传统行业的数字化转型,大前端技术的普及,随之而来的就是Vue为代表的前端框架和工具的兴起,前端开发的门槛降低。但发展,稳定,衰落是亘古不变的事物发展规律。 一些有趣的迹象 最近逛社区…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(LeetCode刷题203.707.206翻转链表) 2023.4.21

目录 前言算法题(LeetCode刷题203移除链表元素)—(保姆级别讲解)算法题(LeetCode刷题707.设计链表)—(保姆级别讲解)代码参考: 算法题(LeetCode刷题206.反转链…

DC:5靶机通关详解

信息收集 漏洞发现 扫个目录 发现存在footer.php 查看,发现好像没什么用 参考他人wp得知thankyou.php会包含footer.php 可以通过传参来包含别的文件 但是我们不知道参数,这里用fuzz来跑参数 这里用wfuzz的时候报错了 解决方法如下 卸载 sudo apt --purge remove python3-pycu…

最强省钱攻略——IC设计公司老板必读

2023年,国内半导体产业发展面临着很大的不确定性,这应该是共识。 IC芯片设计公司,重度研发创新导向。 站在企业角度,怎么在不确定性下,组织人、财、物,面向未来,应对市场竞争? 算…

vCener 配置 vSan 网络

文章目录 1. 准备2. 创建vsan网络2.1 创建 vSphere Distributed Switch (vds)2.2 添加管理主机2.3 添加 networking 3. 删除3.1 删除 vmkernel adapter3.2 删除 hosts3.3 删除 DSwitch 1. 准备 三台物理机搭建 exsi一台部署 vcenter 管理三台 exsi每台物…

扬帆优配|普通股和优先股的区别?普通股和优先股哪个好?

各位投资者或许了解过股票是分为普通股和优先股的,但对其并不十分了解。那么普通股和优先股有什么区别?普通股和优先股哪个好?扬帆优配也为我们准备了相关内容,以供参考。 普通股和优先股的区别? 普通股和优先股的主要…

2023-04-14 算法面试中常见的查找表问题

2023-04-14 算法面试中常见的查找表问题 1 Set的使用 LeetCode349号问题:两个数组的交集 给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2:输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:…

直播预告 | 时序数据处理的云端利器:TDengine Cloud 详解与演示

当下,我们正处在一个万物互联的时代,大数据、云原生、AI、5G 等数字技术极大地方便了人们的生活,但智能物联网产生的海量数据却成为众多企业在数据处理上的巨大痛点。从本质来看,这些数据大多是产生自各种设备和传感器的时序数据&…

康耐视Designer,通过VC5与西门子S7-1200 PLCProfinet通讯详细

测试使用软件版本 Designer Version: 2.7 GSD: GSDML-V2.3-Cognex-VC5-20140828STEP 7 Professional V14Network Configurator Version: 3.56测试使用硬件 Cognex Vision Controller VC5CIC-5000Siemens PLC: S7-1200 CPU 1214C DC/DC/RLY1.PLC端设置 1.新建一个项目,添加对应…

没看错!一行python代码就可以帮您获取图片中的文字信息

最近工作中有需求需要用python对图片中的文字进行识别,调研了一下,选择了tesseract, 目前在github上有50.5k个star!python可以调用,安装也十分方便,pip install pytesseract 即可。如果没有Pillow 包&…

ERTEC200P-2 PROFINET设备完全开发手册(7-2)

7.2 添加自定义参数 编辑GSDML文件,对于64 bytes DI 进行如下修改,由于一般的IO模块不需要支持PROFIEnergy,去掉PROFIEnergy支持;修改模块ID(ModuleIdentNumber "0x00000080");子模块ID不变&am…

Linux中的进程优先级

Linux中的进程优先级 目录 Linux中的进程优先级引入1、基本概念2、查看进程3、PRI和NI4、修改进程优先级5、进程切换One more thing 引入 在Linux操作系统中,进程的优先级对于系统的性能和响应时间至关重要。进程的优先级决定了该进程在系统资源分配中所占的比例。…

说PHP不适合做爬虫的人,看这里

文章目录 一、关于PHP爬虫框架—Goutte1.1 什么是Goutte1.2 Goutte的优点1.3 Goutte的安装 二、Goutte的使用2.1 基本用法2.2 获取页面内容2.3 表单提交2.4 AJAX请求2.5 登录并抓取数据 三、15个Goutte爬虫示例3.1 简单示例3.2 获取表格内容3.3 登录并获取数据3.4 处理JavaScri…