网络通信IO模型上

计算机组成

计算机由软件和硬件组成,软件包括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指令的时候,然后保护现场,再去中断向量表中找到对应的回调函数,切换到内核态之后,再恢复现场,得到寄存器中存储的函数名,再调用具体的函数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

压缩感知重构算法之正交匹配追踪算法(OMP)

算法的重构是压缩感知中重要的一步,是压缩感知的关键之处。因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优缺点&a…

C语言---初识指针

1、指针是什么 指针是什么? 指针理解的2个要点: ​ 1、指针是内存中一个最小单元的编号,也就是地址。 ​ 2、平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量 总结:指针就是地址&#xff…

Kali-linux Arpspoof工具

Arpspoof是一个非常好的ARP欺骗的源代码程序。它的运行不会影响整个网络的通信,该工具通过替换传输中的数据从而达到对目标的欺骗。本节将介绍Arpspoof工具的 使用。 9.8.1 URL流量操纵攻击 URL流量操作非常类似于中间人攻击,通过目标主机将路由流量注…

Sentinel的另外三种流控模式(附代码详细介绍)

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍Sentinel的其他三种流控模式,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教👏&#…

vue面试题汇总

HTML篇CSS篇JS篇TypeScript篇前端面试题汇总大全(含答案超详细,HTML,JS,CSS汇总篇)-- 持续更新前端面试题汇总大全二(含答案超详细,Vue,TypeScript,React,Webpack 汇总篇&#xff09…

04_Cenos安装Docker

docker安装文档: ubuntu:https://docs.docker.com/engine/install/ubuntu/ centos:https://docs.docker.com/engine/install/centos/ debian:https://docs.docker.com/engine/install/debian/ cenos安装Docker前提: 必…

数据结构(C语言):顺序循环队列的基本操作

一、题目 设队列的元素类型为char,实现顺序循环队列的各种基本操作的程序: ① 初始化队列Q; ② 判断队列Q是否为空; ③ 入队操作。循环调用入队操作,将若干元素(不少于10个)入队&#xff1b…

优化带排序的分页查询

优化带排序的分页查询 浅分页: select user_no,user_name,socre from student order by score desc limit 5,20 深分页: select user_no,user_name,socre from student order by score desc limit 80000,20 因为偏移量深分页更大,所以深分页执…

【软件】无联网情况下安装Win11 / 华为电脑更换Win11系统后触摸屏、声卡失效物理解决方案

一、提前备份好电脑驱动(华为电脑更换Win11系统后触摸屏、声卡失效物理解决方案) 1.电脑驱动备份方法: 1)通过管理员身份打开命令提示符。 2)输入命令:dism /online /export-driver /destination:"D…

聊聊Go语言的控制语句

在高级编程语言中,控制流语句(control-flow statement)是一类用于控制程序执行流程的语句,以下简称为控制语句。它们可以根据条件或循环执行相应的代码块,或者跳转到指定位置执行代码。 常见的控制语句包括: 条件语句:…

10. python字典

文章目录 一、什么是字典二、访问键-值对三、添加、修改键-值对四、删除键-值对4.1 语句del4.2 方法pop() 五、创建空字典六、遍历字典6.1方法items()6.2方法keys()6.3方法values() 七、嵌套7.1 字典列表7.2 在字典中存储列表7.3 在字典中存储字典 一、什么是字典 #创建一个字…

电商服务智能解决方案

互联网时代,智能客服已成为电商企业客户服务、管理和运营的标配。面临大量客户咨询、订单流程等业务,传统人工客服工作时间有限、人员流动性大、人工成本持续上涨等,已经无法满足电商企业“数智化”转型的需求,这也促使AI成为电商…

SpringSecurity入门

简介 官网地址:https://spring.io/projects/spring-security#overview Spring家族当中,一个安全管理框架 Shiro也是一个安全框架,提供了很多安全功能。Shiro比较老,旧的项目当中,可能还在使用。上手还挺简单 在新项…

Zemax Lumerical | 二维光栅出瞳扩展系统优化

简介 本文提出并演示了一种以二维光栅耦出的光瞳扩展(EPE)系统优化和公差分析的仿真方法。 在这个工作流程中,我们将使用3个软件进行不同的工作 ,以实现优化系统的大目标。首先,我们使用 Lumerical 构建光栅模型并使用…

(双指针 ) 18. 四数之和 ——【Leetcode每日一题】

❓18. 四数之和 难度:中等 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重…

不愧是阿里,扣的真细。

铜三铁四已经过去了,今天的行情虽然没有以前好,但是相比去年来说也算是好了一些了。有一些人已经在这个招聘季拿到了不错的Offer了。 今天给大家分享一份面经,今天这位朋友的背景是Java五年本,2023年前被毕业后投入了面试大军怀抱…

融合改进Sine混沌映射的新型粒子群优化算法(NIPSO)-附代码

融合改进Sine混沌映射的新型粒子群优化算法(NIPSO) 文章目录 融合改进Sine混沌映射的新型粒子群优化算法(NIPSO)1.粒子群优化算法2. 改进粒子群优化算法2.1 改进的 Sine 混沌映射2.2 粒子群改进 3.实验结果4.参考文献5.Matlab代码6.Python代码 摘要:为了应对传统粒子…

OpenGl之摄像机

文章目录 摄像机/观察空间摄像机位置摄像机方向右轴上轴 Look At自由移动移动速度鼠标输入缩放摄像机源码 OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉&#xff…

第12届蓝桥杯Scratch省赛真题集锦

编程题 第 1 题 问答题 下雨 题目说明 编程实现: 下雨。 具体要求: 1).点击绿旗,角色与背景如下图所示呈现在对应位置; 2).小猫说:“快下雨了,赶快回家”,小狗说:“我再玩一会”; 3).开始下雨,雨滴持续下落, 4).小猫躲在亭子里,雨滴在小猫和亭子后落下, 5).小狗在雨中…

java-基础语法(二)

java-基础语法(二) 一、流程控制语句 1.1 流程控制语句分类 顺序结构 分支结构(if, switch) 循环 结构(for, while, do…while) 1.2 顺序结构 顺序结构执行流程图: 1.3 分支结构之if语句 if语句格式1 格式:if (关系表达式) {语句体; }执行流程&…