linux系统结构

news2025/1/15 19:47:16

目录

0.前言

1.系统结构图

 1.1.操作系统工作方式

1.2.高版本和低版本内核区别 


0.前言

本专栏,是记录内核学习的,参考b站linux内核源码分析,以及linux内核艺术图解。后面的文章将记录个人的学习,源码注释,源码理解。

1.系统结构图

                        用户应用程序

                                                三方库(标准库 ,SDK等)

                                                                                                       用户态

-------------------------------------------------------------------------------------------------

                        操作系统的服务层  sys_call(系统调用) 快递(接口层)

                                                                                                        用户态与内核态的过度层

--------------------------------------------------------------------------------------------------

                        操作系统内核  

                                        文件系统模块(虚拟文件系统VFS,【将硬件当成文件使用】)

                                        内存管理模块(虚拟内存)

                                        进程调度模块

                                        进程间通信模块

                                        驱动管理模块(管理驱动,但是不实现驱动)

                                                驱动:字符型驱动,块设备驱动,网络驱动

                        硬件系统,驱动实现

                                                                                                        内核态

--------------------------------------------------------------------------------------------------

                               硬件

                                                                                                         硬件层 

--------------------------------------------------------------------------------------------------- 

 

 

linux内核,也可以从管理层和实现层,分层实现,有强独立性,易于升级和维护,不断迭代,只需要修改某些模块,模块的独立性,让整个框架的模块解耦。

 1.1.操作系统工作方式

程序是不断运行在用户态的,只有需要用到一些底层的系统api(系统调用)支持,获取相应的数据时才会进入内核态。

1.把操作系统从用户态切换到内核态(用户应用程序到内核的流程)-----利用陷阱(trap)是同步异常,是执行一条指令的结果。陷阱最重要的用途是在用户程序和内核之间提供系统调用接口。陷阱总返回到当前指令的

2.实现操作系统的系统调用(操作系统服务层)-----syscall

3.应用操作系统提供的底层函数,根据操作系统的驱动,完成相应的任务。

4.退出后从内核态切换到用户态

1.2.高版本和低版本内核区别 

 linux整体框架基本不变,高版本的内核,主要是一些算法的改进(进程调度算法),驱动的种类;但是进程的管理方式基本不变,驱动管理模式几乎不变(管理模式:零散型 分层型 设备树[为了安卓操作系统更好的管理硬件]),所以,源码将以linux0.11版本去看源代码。

 

 

 

 

 

 

   

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

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

相关文章

ANSYS Products 2020 R1 Linux64版本安装

fluent系列 占位 fluent2020R1版本安装fluent系列前言一、基础环境二、安装准备1.图形化环境准备2.路径准备3.挂载安装用iso4.拷贝安装文件三、开始安装1.进入图形化界面2.开始安装3.试运行fluent四、替换破解版的license总结前言 在centos7环境下安装使用fluent的部署记录。…

不用if else if 如何 解决文末尾问题

根据条件判断发送axios所携带的参数,这是搜索的2个条件,如果为空就按照空这个条件来搜索,所以为空携带参数就不能有他,导致if else if 的连续判断 开始来没有思路,随便尝试尝试,来打开自己的思路 期间尝…

【学习经验分享NO.20】代码报错(可帮助远程调试代码)

本博客会整理分享一些报错问题以及解决办法,本文会不断进行更新。有需求的朋友可以关注私信我😘进行远程调试。🍉1.报错1问题nn.functional.sigmoid is deprecated. Use torch.sigmoid instead.解决办法将项目中的F.sigmoid修改为torch.sigmo…

【docker16】Docker-Compose容器编排

1.是什么 Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Compose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用,你需要定义一个YAML格式的配置文件docker-compose.yml,写好…

JAVA导出Excel通用工具——第二篇:使用EasyExcel导出excel的多种情况的例子介绍

JAVA导出Excel通用工具——第二篇:使用EasyExcel导出excel的多种情况的例子介绍1. 前言2. 依赖3. 导出简单例子3.1 ① 基础入门例子3.1.1 核心代码3.1.2 效果展示3.2 ② 注解的简单使用3.2.1 ExcelIgnore3.2.2 ExcelProperty3.2.2.1 一般效果(表头合并等…

MySQL高级【InnoDB引擎】

1:InnoDB引擎1.1:逻辑存储引擎 InnoDB的逻辑存储结构如下图所示: 1). 表空间 表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) ,则每张表都会有一个表空间&#xff08…

【iOS】—— 初识block

block 文章目录block什么是block?block语法Block变量截获自动变量值__block说明符截获的自动变量block的三种存储类型NSGlobalBlockNSStackBlockNSMallocBlockblock的父类block循环引用未完待续什么是block? Blocks是带有自动变量(局部变量&…

React--》初识React框架及其基本使用

目录 React React的安装与使用 JSX语法及使用 模块与组件 React开发者工具的安装 面向组件编程 React React是一个用于构建用户界面的JavaScript库。用户界面:HTML页面(前端)。React主要用来写HTML页面,或构建Web应用。 如果从 MVC的角度来看,…

第一天总结之后端登录功能的实现

第一天总结之后端登录功能的实现 一、 前端页面 从图片 很明显知道 两个intput输入框 一个输入username 一个输入password 从前端的页面代码 可以找到form表单 根据form表单的action属性了解到 点击登录跳转到 controller 层的 LoginServlet 二、controller 层 创建一个 Log…

2023年跨境电商新趋势,新手小白还有出路吗?

跨境电商一直位于我国对外开放的最前沿,当下已经成为我国进出口贸易的关键组成部分之一,是外贸企业顺利开展进出口业务的重要保障,更是拥有庞大发展潜力以及活力的贸易新业态。在经济全球化趋势下,充分发挥出跨境电商的战略新通道…

Java 包的使用详解

文章目录1. 概念2. 导入包中的类2.1 使用类的全路径2.2 导入包2.3 静态导入包3. 自定义包4. 包的访问权限控制5. 常用的包Java编程基础教程系列1. 概念 在开发过程中,会定义很多的类,随着类的定义越来越多,难免会出现类名重复的情况&#xf…

mac 安装redis

文章目录mac 安装redis使用Homebrew安装Redis1.搜索redis版本2.使用Homebrew安装命令3.查看是否安装完成4.启动redis服务5.查看redis服务进程6.redis-cli连接redis服务7.检测 redis 服务是否启动8.修改密码mac 安装redis 使用Homebrew安装Redis 首先这里需要安装homebrew 1.搜…

【Kubernetes 企业项目实战】03、基于 Alertmanager 发送报警到多个接收方(上)

目录 一、配置 Alertmanager 发送报警到 qq 邮箱 1.1 设置 163 邮箱 1.2 创建 alertmanager 配置文件 1.3 创建 prometheus 告警规则配置文件 1.4 安装 prometheus 和 alertmanager 1.5 部署 alertmanager 的 service 1.6 浏览器访问 Prometheus 和 alertmanager 二、配…

ELK日志(2)

elasticsearch群集状态颜色:灰色:未连接绿色:数据完整态黄色:副本不完整红色:数据分片不完整紫色:数据分片复制过程群集主机角色:主节点master:负责管理调度工作节点: 负…

从IPv6的普及看中国未来网络的发展

最近看了一篇《邬贺铨:IPv6或是未来主流网络》的文章,谈到了未来网络的发展问题。IPv6也许是未来主流网络的发展方向。那么什么是IPv6呢,不妨来看下关于他的另一篇文章《邬贺铨:IPv6是IPv6规模部署第三阶段重要抓手》。 他谈到,IPv6是下一代互…

单绞机张力开环控制(绞臂行星差速机构算法)

PLC的开环和闭环张力控制算法,可以参看下面的文章链接: PLC张力控制(开环闭环算法分析)_plc张力控制程序_RXXW_Dor的博客-CSDN博客里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算法,关于绕线机的…

动态内存管理(1)

TIPS 1. 2. malloc, free, calloc, realloc 这些的基本前提都是在内存堆区 内存堆区不能与内存栈区两者混淆乱套 动态内存管理存在的原因 1. 为什么要有动态内存管理?其实我们之前学过比如说对内存的管理,比方说我申请一块内存空间: 1.…

任意方向边界框——day64 读论文:基于自适应目标定位特征卷积神经网络的高分辨率遥感影像多面向目标检测

Multi-Oriented Object Detection in High-Resolution Remote Sensing Imagery Based on Convolutional Neural Networks with Adaptive Object Orientation Features 基于自适应目标定位特征卷积神经网络的高分辨率遥感影像多面向目标检测1. Introduction2. Materials and Met…

jQuery ajax中dataFilter的用法

参考资料 jquery的ajax的dataFilter参数的使用 ⏹用于处理 XMLHttpRequest 原始响应数据的函数 运行在success函数之前, 对Ajax请求返回的原始数据进行预处理 可以对返回的json数据中的null属性进行过滤可以对返回的json数据添加一些自定义的属性 如果不返回原始数据,返回其他…

零代码连接邮箱腾讯云企业网盘,附件管理超轻松

在日常工作中,想必大家每天都会收到各种各样的工作邮件,并且很多重要的文件材料也是通过邮件附件的形式来传输的,那么如何一站式管理这些文件,对于提高办公效率就至关重要了。关于邮件附件管理,相信大家也都碰到过这样…