当前位置: 首页 > news >正文

成品源码1688网站免费购物网站的设计思路

成品源码1688网站免费,购物网站的设计思路,网站的建设服务平台,做信息类网站怎么赚钱不知道大家有没有思考过这样一个问题:什么是处理器#xff08;CPU#xff09;的状态#xff1f;#x1f914; 其实CPU和人一样,没有执行程序的时候,是没有什么状态的,当它执行的程序是用户程序的时候就叫用户态#xff0c;当执行的程序是操作系统的代码时就叫系统态或者内…不知道大家有没有思考过这样一个问题:什么是处理器CPU的状态 其实CPU和人一样,没有执行程序的时候,是没有什么状态的,当它执行的程序是用户程序的时候就叫用户态当执行的程序是操作系统的代码时就叫系统态或者内核态. 接下来,我们就来谈谈内核态和用户态. 目录 1.内核态和用户态的概念  2.内核态和用户态的区别 3.特权指令和非特权指令  这是一个最简单的HelloWorld程序 1.内核态和用户态的概念  内核态:可以访问所有的硬件设备,也可以执行硬件上能够运行的各种指令 用户态:只能执行一部分机器指令,不可以运行I/O命令或者影响机器控制的命令 操作系统是运行在内核态的,而操作系统提供的用户接口程序和支持的应用程序,是运行在用户态的. 2.内核态和用户态的区别 那么,用户态和内核态又有什么区别呢? 我们先看内核态.在内核态上运行的所有程序,都是可以访问所有的硬件资源的,可以在硬件上执行各种指令 而用户态,只能执行一部分指令.对于那些影响系统稳定性的指令,还有I/O指令,都是不允许执行的. 但是有的人可能会提出疑问,我可以使用fopen()函数打开一个文件,并且还能对这个文件进行读写操作,我这个程序也是运行在用户态的,但是我可以做I/O操作呀. 其实我们不知道的是,C语言他默默帮我们封装了一个glibc库函数,并在里面调用了系统函数,然后由操作系统根据你传入的指令,比如打开文件指令,读取文件指令,去操作硬盘上的硬件,因此,glibc内部封装了一个接口程序,通过这个接口程序,去调用内核态的指令. 3.特权指令和非特权指令  在计算机中,存在指令集,指令集中有些指令是用户态上可以运行,有的只有在内核态上才能运行. ⌛我们将只有操作系统能使用而用户不能使用的指令称为特权指令。 ⌛而有一部分指令用户态和操作系统都能使用的就叫做非特权指令。 因为不可能让应用程序或者程序员去擅自访问某个扇区中的二进制数据,必须要经过文件系统才能访问扇区中的数据. 我们举个简单例子来说明: 这是一个最简单的HelloWorld程序 #includestdio.h int main() {char str[]Hello World\n;printf(%s,str);return 0; } 通过这个图我们可以看出来,在这个程序中,main函数肯定是运行在用户态的,在main函数中,还执行了一个printf函数,将HelloWorld打印输出到显示器中.  它是将内存中的HelloWorld输出到控制台,目前这个printf函数是运行在用户态的,只不过打印输出的时候,printf肯定要和外部设备,比如说显示器打交道. 我们都知道操作系统内部有一个out指令,他就可以将内存中的数据输出到控制台,或者说输出到显示器中,所以这个时候,我们一定要做一个系统调用,让这个printf()跑到内核态中去执行.这个时候,也就是调用了操作系统的一个系统方法,或者说叫内部接口来和硬件交互. 我们首先使用gcc对这段代码进行编译,然后使用strace工具对代码进行跟踪. 这个write()函数就是glibc封装的系统函数write(),也就是这个printf()函数在内部调用的系统函数write(). 既然printf()调用的是write()函数,那么我们其实就可以直接将printf()函数替换为write()函数 #includeunistd.h int main() {char msg[]hello world\n;write(STDOUT_FILENO,msg,sizeof(msg)-1);return 0; } 我们再次对程序进行编译,并且使用gdb跟踪调试.  我们首先在write处打断点然后run单步运行最后进行反汇编  确认了在write()函数的系统调用中,是通过syscall指令来将用户态陷入到了内核态. 接下来我们来看看用户态是如何切换到内核态的.  1.将参数保存到寄存器中 这里也就是printf()的参数,或者说,在printf()内部调用的系统函数write()的参数 2.根据系统调用名称(也就是write()方法名)找到它的系统调用号. 这个系统调用号在哪里找呢?有一张系统调用映射表,这个映射表不仅在内核中维护了这样一张表,在glibc的库函数中,也维护了这样一张表,因此,我们就能够找到write()方法的系统调用号. 内核态和用户态之间通信就是通过系统调用号来进行的. 3.通过汇编指令syscall将用户态陷入到内核态,通过调用系统调用号对应的系统方法以及相关寄存器,来完成指令. 概括起来就是说,从用户态切换到内核态,就是用户态的应用程序要向内核态去申请外部资源,这个外部资源说通俗点也就是只有内核态才有权限执行的命令,就是外部资源. 说的更直白一点,就是当我们拆开一台服务器或者笔记本,肉眼可见的都属于外部资源,包括CPU,N内存,网卡,硬盘,USB接口等等,都属于外部资源  而系统调用,就是我们今天讲的syscall,就是最常见的陷入方式. 系统调用还有其它方式,分为5类 进程  exit  fork文件  chomd  chown  open设备  read   write信息  getXXX  setXXX通信  mmap   sendfile 我们可以通过man syscalls命令来查看具体的系统调用 man syscalls
http://www.dnsts.com.cn/news/27201.html

相关文章:

  • 医院网站建设的规划网站建设属于什么行业
  • 搬家网站建设思路做视频网站 视频放在哪里
  • ftp更换网站最新军事战争新闻消息
  • 山东各地网站备案印刷设计营销网站
  • 手机网站开源模板开发网站的目标
  • 网站建设制作公司 首推万维科技河北雄安新区规划建设局网站
  • 网站及单位网站建设情况南昌百度快速排名提升
  • 闵行做网站建设网站运营优化培训
  • 连云港抖音优化南京seo网站优化
  • 网站建设发布平台建设银行的官方网站纪念币
  • 网站建设运营的灵魂是加强服务保障满足群众急需i
  • 网站开发流程知乎今天的新闻摘抄
  • 株洲网站制作公司有哪些杭州网站外包
  • 怎么做网站关键字搜索小白建设论坛网站
  • 是用cms还是直接用语言写网站做流程图用什么网站
  • 域名注册查询站长工具开发公司采取措施成立新班推动工作
  • 上海做推广网站大兴网站建设优化seo
  • 外贸网站模板哪里下载网站制作老了
  • 设计类投稿网站织梦 网站教程
  • 鞍山 网站建设乐清哪里有做网站
  • dede网站备份互联网+创业大赛
  • 微信网站建设和维护私人定制平台网站
  • 营销系统西安优化外
  • 网站程序建设建网站不做广告怎么赚钱
  • php网站调试环境搭建软件开发方式
  • 做公司网站好处群团网站建设
  • 高端网站建设模板页面模板图片大小
  • 网络宣传网站建设定制网页版qq可以聊天吗
  • 网站创建方案论文个人网站建设费用
  • 网站制作运营网店装修的目标不包括