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

个人网站 做导航西安百度快照优化

个人网站 做导航,西安百度快照优化,做网站 附加信息,加速器网页版xv6源码分析 001 我们先看看xv6这个项目的基本结构(只看代码部分) 主要就是两个目录kernel 和 user。 user是一些用户程序,也就是我们平时在shell上面执行的命令,每执行一个命令就会创建一个新的用户进程来执行这个命令 在user目…

xv6源码分析 001

我们先看看xv6这个项目的基本结构(只看代码部分)

主要就是两个目录kerneluser

  • user是一些用户程序,也就是我们平时在shell上面执行的命令,每执行一个命令就会创建一个新的用户进程来执行这个命令

    user目录下有两个文件需要我们注意一下:usys.plinitcode.S

    usys.pl:主要是输出一段汇编指令,并通过重定向输入到指定的文件中,下面我们就来看看这段汇编

    print "# generated by usys.pl - do not edit\n";print "#include \"kernel/syscall.h\"\n";	# 引入定义对应系统调用号的宏常量的头文件sub entry {my $name = shift;print ".global $name\n";print "${name}:\n";print " li a7, SYS_${name}\n";print " ecall\n";print " ret\n";
    }
    

    很明显,这是系统调用的trap过程,但是这个是什么语言我还不清楚,

    • .global $name:类似C语言中的声明,global声明这个过程在这个目录内可见
    • ${name}::过程的名称,在c代码中通过一个向量extren char name[];可以引入这个汇编过程
    • li a7, SYS_${name}li指令的作用将任意的立即数加载到指定的寄存器中,这里是将SYS_{name}这个宏常量加载到寄存器a7中,为什么这么做呢?明天我们将会看到,在进行系统调用的时候,发起系统调用的进程将会将CPU的执行权交给内核线程,内核线程如何知道进程调用的是那个系统调用呢?这是就可以从寄存器a7中取出先前存放进去的SYS_{name}系统调用号,来执行相应的系统调用。注意:这是涉及的是线程切换:由用户态线程切换到了内核线程,因为每个进程都都一个内核线程,这样能够大大减少系统调用的开销。
    • ecall:陷入指令(trap),使进程从用户态切换到内核态,即用户线程切换到内核线程
    • ret:调用返回,返回的内核线程的上下文

    我们再来看看initcode.S

    主要作用是系统调用execstart的过程,我就直接在源码上注释了

    # Initial process that execs /init.
    # This code runs in user space.#include "syscall.h"# exec(init, argv)
    .globl start				 	# 声明start过程为整个目录可见
    start:						    # 过程的开始,标签la a0, init				 # 将init这个字符串的地址加载到寄存器a0la a1, argv				 # 将argc字符串的地址加载到寄存器a1li a7, SYS_exec			 # 将exec的系统调用号加载到寄存器a7ecall					# 陷入内核执行系统调用# for(;;) exit();
    exit:							li a7, SYS_exitecalljal exit				# jal指令是跳转到对应的标签,相当于c语言的goto# char init[] = "/init\0";
    init:							# 定义一个字符串,表示加载的可执行程序映像的名称.string "/init\0"# char *argv[] = { init, 0 };	 # 定义了一个argv 数组
    .p2align 2
    argv:.long init					# init字符串的地址.long 0						# 一个空指针

ok,今晚就先到这里了,我们明晚再继续吧。

字符串的地址
.long 0 # 一个空指针

ok,今晚就先到这里了,我们明晚再继续吧。

http://www.laogonggong.com/news/18598.html

相关文章:

  • 做翻译网站 知乎淄博seo网站推广
  • 建设刷钻网站制作网页多少钱
  • 济南市建设网站武汉seo首页优化公司
  • 网站顶部轮播怎么做的微信怎么推广
  • 档案网站建设愿景网络推广优化工具
  • 寻找郑州网站建设来宾网站seo
  • 广州建网站兴田德润很好桂平seo快速优化软件
  • 做a动态网站江西短视频seo搜索报价
  • 兰州做网站怎么样长沙有实力seo优化
  • 网站开发z亿玛酷1流量订制win10最强优化软件
  • 设计建网站站长之家域名查询排行
  • 国外做美食视频网站网站seo策划方案实例
  • 新房地产网站开发保温杯软文营销300字
  • 宁波专业建设网站建站公司网络推广员的日常工作
  • 模板网站好还是定制网站好在线生成个人网站app
  • 网站一直被攻击怎么办培训计划模板
  • python做网站垃圾吗手游免费0加盟代理
  • 网站按钮设计成什么颜色原因如何做网站优化
  • 公安局网站建设规划书免费的客户资源怎么找
  • 海洋优质的网站建设外贸网站免费推广
  • 网站建设需要的一些技术seo排名优化软件有
  • 怎么做页游seo综合查询平台官网
  • 专题网站建设方案国外免费网站域名服务器
  • 视频主播网站网销是做什么的
  • 天津网站开发建设长沙关键词优化服务
  • 国外网站能否做百科参考资料网址导航该如何推广
  • 前几年做那些网站能致富在线seo推广软件
  • wordpress 初始化插件如何做好关键词的优化
  • 哪个网站可以做批发玻璃胶自媒体营销模式有哪些
  • 内蒙古网站开发公司重庆网站建设技术外包