网络通信IO模型上

news/2025/1/8 21:15:14/

计算机组成

计算机由软件和硬件组成,软件包括CPU、内存等,硬件包括主板,磁盘,IO设备(网卡、鼠标、键盘等)、电源按钮。

内核程序加载过程

当接通电源的时候1、BIOS就会把它的一段代码放入了内存当中,即内存中出现的第一个程序是blos,
它里面有一些最基本的引导程序,假设跳过其他的引导2、直接从磁盘中引导,磁盘中的第一个起始位置有一个分区表MBR
(记录了磁盘分了几个区),BIOS会从磁盘的MBR中加载一段数据,
从中找到C盘可引导分区,这个引导分区是被格式化的,
文件格式有可能是FAT、FAT32、NTFS或其他的文件系统3、这个分区前面埋了一个线性地址,比如linux的GRUD程序,GRUD程序会被BIOS
加载入内存,grud程序中有一个驱动(代码),
这个驱动可以识别文件格式,就可以读取文件系统4、在文件系统中就会读取到第一个文件叫kernel(操作系统内核程序),
kernel会通过引导程序被引导进入内存,这个时候kernel就占领了内存5、给cpu发reset指令,让cpu从kernel这个空间的第一个位置开始加载指令,
此时kernel就接管了操作系统,然后开始完成操作系统的初始化,
比如启动ssh、bash、网络服务程序、tomcat等都是由kernel把程序一个一个启动起来。

内核是程序和硬件之间的中间层,内核对硬件进行统一的资源控制,程序通过内核完成对硬件的使用。

  • 内核的保护模式

CPU可以访问整个内存的任何地址,但禁止用户空间程序访问内核空间中的数据和指令。

内核会把内核所在的地址空间即内核空间设置为绝对安全,然后将剩余空间划分为用户空间。

用户空间程序中的指令不能访问内核空间中的地址。

内核管理着硬件资源,比如硬盘、网卡和鼠标、键盘等一些外设,用户空间的程序只能通过内核访问这些硬件资源,又因为内核的保护模式不能让用户空间的程序直接访问内核空间的地址,所以这时候就出现了中断的概念,一个常见的中断叫时钟中断。

时钟中断

cpu有一个时间分片的概念,比如在一个cpu的情况下,执行下内核里面的程序,再切换执行下用户空间中的程序,看起来很多程序在同时运行,其实是有先后顺序的。那怎么让程序让出cpu去执行别的程序呢?通过时钟中断。

比如老式电子手表背面电路板上有一个小圆柱,有2条腿,一条腿插进了一个电源,湿手摸直流电的电源线的话,就一直麻,会以一个非常规律的哒哒哒的方式产出。

每震荡一下,就会给cpu产生一个时钟中断,比如cpu正忙着读取某一个进程的指令执行呢,1/1000秒的时候,震荡了一下,这时候cpu会把这个程序的寄存器的值更新下,记录下此时执行的状态,即保护现场,然后从中断向量表中找到这个中断号对应的回调函数,这个回调函数是在内核启动的时候注册的,切换到另外一个进程之后,读取寄存器中的数据,即恢复现场,然后继续执行。

所以时钟中断会让cpu切换程序执行,但会有保护现场和恢复现场的性能损耗,程序越多,单位时间内cpu浪费在内核调度上的时间会越多,那程序内部执行的时间会越短。

比如用户空间的程序系统调用内核中的函数读写网卡中的数据,系统调用就是通过中断实现的,完成从用户态到内核态的切换过程。

这里不是时钟片段,而是在一个时间片里通过中断的方式完成系统调用。

在编译器编译的时候,会把系统调用的内核函数名称修改成INT 80,并把内核的函数名称存放在寄存器中,当CPU读取到INT 80指令的时候,然后保护现场,再去中断向量表中找到对应的回调函数,切换到内核态之后,再恢复现场,得到寄存器中存储的函数名,再调用具体的函数。


http://www.ppmy.cn/news/98953.html

相关文章

StarRocks 中的数据模型、索引

一、StarRocks 数据模型 StarRocks 支持四种数据模型,分别是明细模型 (Duplicate Key Model)、聚合模型 (Aggregate Key Model)、更新模型 (Unique Key Model) 和主键模型 (Primary Key Model)。 1.1 明细模型 明细模型是默认的建表模型。如果在建表时未指定任何…

二进制概述-0day漏洞利用原理(1)

二进制利用基本原理,Lord PE的使用,凡是资源性的物质且可表达的皆可利用。 往期文章: 漏洞概述-0day漏洞利用原理(0)_luozhonghua2000的博客-CSDN博客 PE 文件格式 PE (Portable Exec utable) 是 Win32 平台下可执行文件遵守的数据格式。常见的可执行文件(如“*.exe”文件…

HTB-Heist(域、rc4_hmac、SeRestorePrivelege权限提权)

目录 扫描 枚举特定于域控制器的服务 Web服务器枚举和利用SSRF漏洞 Hashcat使用Hashcat破解NetNTLMv2哈希</

【LeetCode热题100】打开第6天:正则表达式匹配

文章目录 正则表达式匹配⛅前言&#x1f512;题目&#x1f511;题解 正则表达式匹配 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合…

【P38】JMeter 随机控制器(Random Controller)

文章目录 一、随机控制器&#xff08;Random Controller&#xff09;参数说明二、测试计划设计2.1、测试计划一2.2、测试计划二2.3、勾选忽略子控制器块 一、随机控制器&#xff08;Random Controller&#xff09;参数说明 可以让控制器内部的逻辑随机执行一个&#xff0c;一般…

如何在华为OD机试中获得满分?Java实现【人民币转换】一文详解!

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Java华为OD机试真题&#xff08;2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

Spring Authorization Server 系列(三)code换取token

code换取token 概述客户端认证方式换取结果 概述 在获取到code后&#xff0c;就可以使用code换取token了&#xff0c;但在换取token这一步还会对客户端进行一些校验&#xff0c;而这也支持不同的方式&#xff0c;一起来看看。 客户端认证方式 JwtClientAssertionAuthenticati…

CMake之安装打包

目录 安装公共选项安装目标安装文件安装目录安装导出 导出问题 安装 install的用法 公共选项 install有多个签名&#xff0c;这些签名公用的选项有以下&#xff1a; DESTINATION&#xff1a;指定文件要安装的目录&#xff0c;可以是相对路径或绝对路径。 相对路径&#xff…