网站建设智能优化网站创意的技术

news/2025/9/23 3:14:15/文章来源:
网站建设智能优化,网站创意的技术,全国哪个县网站做的最好,版式设计排版在应用程序开发过程中经常会进行IO设备的操作#xff0c;比如磁盘的读写#xff0c;网卡的读写#xff0c;键盘#xff0c;鼠标的读入等#xff0c;大多数应用开发人员使用高级语言进行开发#xff0c;例如C#xff0c;C#xff0c;java#xff0c;python等#xff0… 在应用程序开发过程中经常会进行IO设备的操作比如磁盘的读写网卡的读写键盘鼠标的读入等大多数应用开发人员使用高级语言进行开发例如CCjavapython等这些高级语言都提供了标准库或者API去操作IO设备不过标准库或者API最终还是通过系统调用来实现操作IO设备的系统调用是操作系统提供的它是操作系统内核的一部分。系统调用封装了对硬件操作的所有细节而标准库或者SDK又在系统调用的基础上做了高度抽象的封装和优化因此使得应用程序开发人员的日子好过多了开发效率也提高了不少。1本篇文章主要阐述以下两部分:1.什么是系统调用2.系统调用的实现主要以Linux 操作系统和IA-32处理器举例高级语言以C语言为例同时也会掺杂一些其它操作系统和处理器。什么是系统调用对于现代的操作系统来说应用程序运行的时候是没有权限去访问系统资源的操作系统为了防止各类应用程序可能会破坏系统资源对系统资源做了保护阻止应用程序直接去访问这些资源而应用程序又有访问这些系统资源的需求因此操作系统提供了系统调用让所有的应用程序统一通过系统调用来访问系统资源这里所说的系统资源包括文件网络 内存各类IO设备等。应用程序可以进行系统调用也可以调用标准库或者API一个系统调用的内部有很多的步骤比如需要进行用户态模式到内核态模式的互相切换。这里简单介绍下模式切换我们知道一个完整的应用程序分为两部分一部分是应用程序的代码和数据另一部分是内核的代码和数据切换模式就是这两部分的分水岭意味着处理器进入了一个不同的模式不同的模式就是不同的世界不同的世界就有不同的权限而内核态模式就是王者可以掌握所有的资源用户态模式只能掌握自己的一亩三分地。正如上面所说系统调用需要进行模式切换而每个完整的应用程序都有两个栈一个用户栈一个内核栈这两个栈是独立的用户栈在用户空间内核栈在内核空间因此切换模式时栈也得切换。因此我们可以将系统调用的执行步骤分为三步1.执行前的准备工作。2.执行处理程序处理函数。3.执行后的善后工作当然内核模式切换和栈切换就是1和3的工作了这里的三步都是在内核模式下执行的如下图所示应用程序直接系统调用步骤从上图得知执行一个系统调用很复杂需要干很多的活Linux的编译器提供了很多共享库so文件来提供系统调用例如Linux的glibc库就提供了文件操作相关的系统调用例如下面的代码int read(int fd,void *buf,int count);//读文件数据 int write(int fd,const void *buf,int couint);//写文件数据 int open(const char * pathname,int flags,mode_t mode);//打开文件上面的代码只是glibc库中几个比较有代表性的例子linux操作系统提供了几百个系统调用这些系统调用分散在各个共享库中这里就不再阐述。Windows操作系统提供了API简称Windows API或者SDK它不是系统调用而是对系统调用做了二次封装这些API是由各类DLL动态链接库提供的开发人员导入这些DLL就可以通过Windows API来开发Windows应用程序因此Widows应用程序执行系统调用的步骤就变成了如下图所示Windows应用程序系统调用步骤正如上文所述每个操作系统都提供它各自的系统调用那么写一段C代码怎样能做到跨操作系统呢?答案是C语言标准库C语言标准库的目的就是让开发人员写一段C代码这些C代码使用的是C标准库那么这段代码不需要进行任何修改就可以跨操作系统前提是经过不同操作系统编译器的编译C标准库的调用关系如下图C标准库由上图得知Linux通过共享库直接提供系统调用而Windows则通过Windows API间接进行提供系统调用中间增加了一个C标准库它将不同操作系统之间系统调用标准化做了二次封装简化了系统调用的复杂度提供给应用程序。标准库也有它的缺点缺点就是只能取各个操作系统系统调用的交集这意味着只有操作系统都有的功能才能纳入到标准库然后有的时候需要一些操作系统专有的功能时还得直接进行系统调用或者调用API这个就会出现跨系统的问题。对于用标准库开发的应用程序它的系统调用步骤可以总结如下图C标准库系统调用好了【什么是系统调用】的话题介绍到这里了下面来看看系统调用具体是怎么实现的。2系统调用的实现上个环节阐述的是【什么是系统调用】以及系统调用的大致步骤这个环节将以Linux操作系统为例来阐述系统调用的实现原理和细节当然其它操作系统系统调用的实现原理比较相似可以举一反三。主流的操作系统如Linux和Windows是通过中断来实现系统调用的。以操作系统Linux2.5以前处理器为Inter IA-32为例看看fork这个系统调用是怎么实现的其它的Linux系统调用类似整体过程如下图Linux系统调用过程上图为系统调用涉及到的9个步骤我们逐个看起1.应用程序调用linux库提供的fork函数发起一个fork系统调用这个系统调用的目的是创建一个子进程这个子进程拷贝一份父进程的虚拟进程空间。2.fork函数的第一步就是将2放入寄存器eax,每个系统调用都有一个编号2就是fork系统调用的编号eax是默认用于传递系统调用编号的寄存器。如果系统调用有参数则将参数传入到如下的寄存器EBXECXEDXESIEDIEBP可以看出系统调用最多支持6个参数fork系统调用没有参数。fork函数的第二步就是执行中断指令int 0x80,中断指令int用于发送中断信号给处理器0x80为中断向量号这个向量号是系统调用中断处理程序专用。int指令同时也会将模式从用户态切换到内核态用户栈切换到内核栈同时会将当前被中断的应用程序中断时的寄存器内容入栈SSESPEFLAGSCSEIP这里的入栈指的是入内核栈每一个应用程序都一个用户栈和内核栈。整体来看2步骤的汇编代码如下push EAX,2;//设置fork系统调用的系统调用编号 mov EBX,arg1;//可选参数1 mov ECX,arg1;//可选参数2 mov EDX,arg1;//可选参数3 mov ESI,arg1;//可选参数4 mov EDI,arg1;//可选参数5 mov EBP,arg1;//可选参数6 int 0x80;//发送系统调用中断信号3.处理器执行完当前的指令后会检查处理器的中断引脚发现有中断信号然后检查状态寄存器EFLAGS)发现中断屏蔽IF标志是打开的(系统调用中断信号不会被屏蔽)处理器根据中断信号分析出中断向量号然后根据中断向量号去查找中断描述符表找到了该中断向量号对应的中断处理程序。4.操作系统跳转到中断处理程序然后开始执行中断处理程序0x80对应的中断处理程序是系统调用中断处理程序system_call。该中断处理程序首先会将EAXEBXECXEDXESIEDIEBP这几个寄存器入栈之所以入栈就是为了防止后续的工作覆盖这些寄存器核心汇编指令如下push EAX; push EBX; push ECX; push EDX; push ESI; push EDI; push EBP;5.系统调用中断处理程序紧接着根据系统调用号(这里就是fork系统调用号即2)去系统调用表进行查找可以找到该系统调用号对应的处理程序(也可以叫处理函数),Linux操作系统的系统处理函数一般以sys开头fork的系统处理函数就是sys_fork。6.找到了系统处理函数后开始执行该函数处理函数可以从内核栈中获取函数的参数函数执行完成后函数的返回值默认采用EAX寄存器进行返回。7~8.系统处理函数执行完成后回到了系统调用中断处理程序中断处理程序执行iret指令iret指令负责从内核态切换到用户态将内核态入栈的寄存器数据出栈到SSESPEFLAGSCSEIP这几个寄存器然后跳转到系统调用处。9.系统调用fork返回到应用程序。3Linux操作系统(2.5以前)的系统调用实现原理阐述完了Windows操作系统的系统调用也采用类似的机制另外要说的是自从Linux(2.5)以上处理器Inter 奔腾二代以后为了提高系统调用的效率Inter处理器提供了两个指令来进行系统调用的进入和退出即sysenter和sysexit指令。sysenter指令代替了int中断指令发起系统调用执行这个指令后会直接跳转到一个系统调用的处理函数地址处去执行系统调用这个处理函数的地址是存储在一个指定的寄存器中sysenter这个指令也负责模式的切换和应用程序现场寄存器的备份这一点同int一样处理函数参数的传递跟以前一样还是通过寄存器的方式传递没有变化。sysexit指令代替了iret恢复指令它负责模式切换和现场寄存器的恢复这一点同iret指令相似。其它的操作系统例如Power PCAMD的系统调用与Linux(2.5以上)类似不同的是它们采用不同的指令来进行模式切换和寄存器备份参数的传递也是采用寄存器的方式只是寄存器个数和名称不一样罢了。转自一口Linux 并做整理推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈关注公众号后台回复「1024」获取学习资料网盘链接。欢迎点赞关注转发在看您的每一次鼓励我都将铭记于心~

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

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

相关文章

中国建设部建造师网站wordpress文章没缩略图

1. Transition定义 Vue 提供了两个内置组件&#xff0c;可以帮助你制作基于状态变化的过渡和动画&#xff1a; <Transition>会在一个元素或组件进入和离开 DOM 时应用动画。 <TransitionGroup> 会在一个 v-for 列表中的元素或组件被插入&#xff0c;移动&#xff0…

宁波网站建设哪家强三门网站制作

出于安全目的&#xff0c;在禁用了devMode之后&#xff0c;仍然不希望其他人员看到webconsole.html页面&#xff0c;则可以直接删除webconsole.html 的源文件&#xff0c; 它的位置存在于&#xff1a; 我们手工删除 struts2-core-*.jar\org\apache\struts2\interceptor\debuggi…

个人网站做哪些流程淄博网站建设哪家好

引言 LCD1602是一种16列2行的字符液晶显示模块&#xff0c;常用于Arduino等嵌入式系统的用户接口。为了简化连接和编程&#xff0c;我们将使用I2C接口&#xff0c;这只需要Arduino的两个模拟输入引脚。 步骤 安装 LiquidCrystal_I2C 库 为了在Arduino中使用I2C模块驱动LCD显…

织梦网站修改教程视频男生女生在床上做的那个网站

cg word List 1 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢!

西安小公司网站建设网站制作性价比哪家好

本文简要地介绍 OSI 模型 1’ 2’ 3。 更新&#xff1a;2023 / 7 / 23 科普 | OSI模型 术语节点链路协议网络拓扑 概念作用结构应用层表示层会话层传输层网络层数据链路层物理层 数据如何流动OSI 和TCP/IP 的对应关系和协议参考链接 术语 节点 节点&#xff08; Node &#…

网站开发考试题网加商学院网站怎么做

PrimeFaces扩展团队很高兴宣布即将推出的3.0.0主要版本的几个新组件。 我们的新提交人Francesco Strazzullo为该项目提供了“ Turbo Boost”&#xff0c;并带来了至少6个已成功集成的 JSF组件&#xff01; 当前的开发状态是OpenShift上的deployet – 请查看展示柜。以下是有关添…

安徽省工程建设工程信息网站加强政务公开网站建设

在高度竞争的汽车市场中&#xff0c;销售人员需要具备强大的专业知识、引人入胜的销售技巧&#xff0c;以及敏锐的市场洞察力。然而&#xff0c;传统的培训方式往往无法满足这些需求&#xff0c;因为它们往往忽略了实践的重要性。 为了解决这个问题&#xff0c;许多公司开始采用…

网站服务器崩溃网站效果图怎么做的

黄仁勋揭秘EIOFS(未来成功早期指标&#xff09;英伟达成为最伟大AI企业的核心奥义 原创 AI 吴厂长 AI 吴厂长 2024-04-02 00:12 上海 黄仁勋&#xff1a;你应该寻找未来成功的早期指标&#xff0c;而且越早越好。 原因是你想尽早看到自己正走在正确的方向上。 有个短语叫EIO…

个人网站建站源码南昌专业制作网站设计

前言 个人认为vue的指令,对比react来说,给开发者节省了很大的学习成本。比如在react中,你想渲染一个列表,需要用Array.map的方法return<div>,而在vue中,一个简单的v-for就解决了问题。 在学习成本和入手体验上,vue的作者确实后来者居上,能让人更快的使用vue开发。不过也…

保定建设局网站网站建设整改落实情况

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学习过halcon的同学都知道&#xff0c;它不仅有很多的图像算子可以使用&#xff0c;而且调试很方便。每一步骤的调试结果&#xff0c;都可以看到对…

网页模版网站公众号怎么开通

MES系统需要具备哪些“性能需求”&#xff1f;关于这个问题&#xff0c;我觉得有必要先和大家解释一下&#xff0c;到底什么是性能需求&#xff1f;性能需求在MES系统的作用是什么&#xff1f;讲明白了这2点&#xff0c;问题自然而然就解决了。 什么是性能需求&#xff1f; 通…

学校网站首页代码html学ui的网站

目录 引言 官网 下载 配置 1. 鼠标右键“此电脑”>“属性” 2. 打开高级系统设置 3. 打开环境变量 4. 双击系统变量中的path 5. 新建新的path 6. 将刚刚安装的位置加入环境变量 7. 检查是否安装成功 引言 PHP&#xff08;"PHP: Hypertext Preprocessor"…

广东商城网站建设报价网络营销推广公司哪家好

在以往的文章中有提到过使用IIS部署WebGL添加MIME类型使WebGL项目在浏览器中能够正常加载&#xff0c;那么如果咱们做的是商业项目&#xff0c;往往是需要部署在学校或者云服务器上面的&#xff0c;大部分情况下如果项目有接口或者后台管理系统&#xff0c;后台基本都会使用Lin…

湖南平台网站建设企业seo基础知识

在hibernate中&#xff0c;通常配置对象关系映射关系有两种&#xff0c;一种是基于xml的方式&#xff0c;另一种是基于annotation的注解方式&#xff0c;熟话说&#xff0c;萝卜青菜&#xff0c;可有所爱&#xff0c;每个人都有自己喜欢的配置方式&#xff0c;我在试了这两种方…

东莞企业建设网站官网有限公司python 类似wordpress

编号&#xff1a;0089 17-18学年第1学期期末考试 Internet和Intranet应用 试题答案 一、填空题&#xff1a;&#xff08;每空4分&#xff0c;共40分&#xff09; 1&#xff0e;网络接口层  网际网层  传输层  应用层 2&#xff0e;路由器(或网关)  目的主机 3&#xff…

分类信息网站如何做优化他达拉非什么是

一种基于嵌入式的卫星基带信号处理系统的制作方法 随着卫星通信技术的不断发展&#xff0c;卫星基带信号处理系统的性能和稳定性要求也越来越高。传统的卫星基带信号处理系统通常采用分立器件和通用处理器&#xff0c;存在着体积庞大、功耗高、集成度低等问题。为了解决这些问题…

网站收录很少却有排名wordpress 架构

小程序开发遇到瓶颈虽然腾讯提供了小程序解决方案&#xff0c;https://cloud.tencent.com/solution/la。但是对于普通开发者或者小企业的开发人员来说&#xff0c;购买域名&#xff0c;网站备案、部署SSL证书&#xff0c;安装会话服务器。业务逻辑上要使用数据库&#xff0c;缓…

急求聊城网站建设网站建设前期准备工作总结

转自&#xff1a;http://bbs.pcpop.com/091030/5945399.html 1. 什么是cab文件 CAB在电脑上是一种压缩文件&#xff0c;微软出品的东西&#xff0c;用WinRAR可以解压缩&#xff0c;在DOS启动盘里面可以看见一些CAB压缩文件。其实Windows里面已经带了CAB压缩程序&#xff0c;但…

ps做网站网页好吗做分销的网站

实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 一个数组统计是否有 func isUnique(astr string) bool {var arr[26] int;for _,ch:range astr{num:ch-aif(arr[num]1){return false}arr[num]}return true } 给定两个字符串 s1 和 s2&#xff0c;请编写一…

成都网站商城建设wordpress 极简

我们要控制角色的移动&#xff0c;能够所有细节都由自己来实现。控制角色模型的移动&#xff0c;同一时候移动摄影机&#xff0c;改变视角。当然Unity也提供了一些组件&#xff0c;能够让我们做更少的工作&#xff0c;实现我们所期望的功能。今天我们就一起系统来学习相关的内容…