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

如何在电脑上建设网站自助发稿

如何在电脑上建设网站,自助发稿,一级a做爰片免费网站 新闻,百度网站好评计划花25天时间学完6.S081课程,从2月20日-3月20日。课程主页Link   xv6 book   GDB User Manual Lecture 1: Introduction and Examples课程主题:设计和实现操作系统   OS的三大功能:多路复用、隔离和交互。 Lab: Xv6 and Unix utiliti…
计划花25天时间学完6.S081课程,从2月20日-3月20日。

  课程主页Link
  xv6 book
  GDB User Manual

Lecture 1: Introduction and Examples

  课程主题:设计和实现操作系统
  OS的三大功能:多路复用、隔离和交互。

Lab: Xv6 and Unix utilities

Boot xv6
  根据指令操作

sleep
  使用system call实现。

pingpong
  使用pipe实现。

primes
  使用pipe+递归实现。

find
  使用递归实现。

xargs
  xargs没有成功完成,对C语言的特性和pipe、exec等命令了解得太少了。
  这里要吐槽一下,第一个lab难度有点大,差点把人给整劝退了:(

Lecture 2: C and gdb

  在qemu中使用gdb调试程序,参考Fall2020/6.S081 实验笔记(〇) Lab0: Preparation2

Lecture 3: OS Organization and System Calls

Lab: system calls

System call tracing
  难点在于从用户态向内核态转换时,需要将trace后的参数存入寄存器,并修改其他系统调用函数使其输出相关信息,不过也挺有意思的,增加了对xv6的理解。思路如下:
  1.修改proc.h中proc结构,新增trace_num和trace_flag变量;
  2.在sysproc.c中新增sys_trace函数;
  3.修改fork;
  4.修改syscall;

Sysinfo
  难点在于copyout的使用,差点把qemu整崩溃了。
  在调试过程中出现了panic: acquire的错误,原因在于统一UNUSED进程时没有释放对应进程的锁导致出错;出现了FAIL: sysinfo succeeded with bad argument错误,问题在于没有对copyout错误的情况作出处理。

Lecture 4: Page Tables

PPN:Physical Page Number
PTE:Page Table Entry
三级页表是由CPU中的硬件部分MMU实现的

Lecture 5: RISC-V Calling Convention and Stack Frames

gdb常用命令演示,stack结构,stack frame——函数调用所产生的信息;

C中struct有各种不同的字段,这些字段在内存中依次存储,类似于数组,不过元素的类型可能有所不同;

Lab pgtbl: Page tables

Speed up system calls
  在内存中使用一个新的page来存储用户进程的进程号,并设置用户态进程只能read该page,这样用户态进程在获取进程号的时候不用切换到内核态,实现了系统调用的加速。

Print a page table
  根据标志位的不同来判断当前页表是否为第三级页表。

Detecting which pages have been accessed
  debug程序的两种方式,第一种使用printf输出关键参数,第二种使用gdb进行调试,但目前gdb用得还不太熟练。
  debugtui enable指令,开启Text User Interface;

Lecture 6: Isolation & System Call Entry/Exit

Trap code:即使从用户态进入内核态后,也不能向任意地址write/read数据,得根据page table来。

附录——XV6源码中各个函数的作用

  1.为给定的进程创建user page table并返回页表基地址 kenel/proc.c/proc_pagetale;

  2.在给定的页表上映射一对虚拟地址和物理地址 kenel/vm.c/mappages;

  3.当alloc参数为0时,kenel/vm.c/walk返回的是第三级page table上对应的PTE;

  4.kenel/vm.c/uvmunmap,当do_free为0时,将第三级page table上对应的PTE设置为invalid,即取消虚拟地址和物理地址的映射关系;do_free为1,在取消映射关系的同时还需要把对应的物理内存free;

  5.kenel/vm.c/uvmfree,将用户页表上的所有映射清除,并free对应的物理内存;并free第一、二级page table;

  6.kernel/vm.c/mappages,在pagetable中建立所提供虚拟地址va和物理地址pa之间的映射;

  7.kernel/vm.c/freewalk,递归的将所有页表free,默认第三级页表的映射关系已经解除(从这个函数可以看出前两级页表PTE和第三级PTE不同的是,前两级中flag只用valid有效,其他标志位均为0?)。

附录——寄存器

satp——每个CPU都有一个,用来存储页表根地址。

附录——一些疑问

  1.Lab pgtbl中新增page为什么不直接在page table中添加,而是像TRAMPOLINE那样呢?

  2.TRAMPOLINE page的作用是什么?为什么每个新建的进程都有该page?
  A:trampoline page前半部分汇编代码负责进入trap之前保存相应寄存器,加载内核page;后半部分汇编代码负责恢复之前保存的寄存器,返回用户空间,恢复用户指令流的执行。当使用ecall指令从用户态转换到内核态的时候,ecall并不会切换page table,也就是说现在使用的仍然是用户页表,所以需要将trampoline和trapframe页映射到每个用户进程上。实际上,ecall只完成以下三个任务:
    1.将模式从用户态切换到内核态;
    2.将pc的值保存至sepc寄存器;
    3.跳转到stvec指向的地址,即trampoline开始的地方。

  3.同上,trapframe page?
  Q:相当于容器,用于在trap发生时保存用户的寄存器和内核对应的信息,内核页表、栈等。

  4.将一个虚拟地址转换为物理地址的过程,为什么是先右移10位再左移12位?为什么不左移10位?

  5.lab pgtb中提到检测哪些page被访问了,可以用于垃圾回收机制,具体是怎样实现的呢?这里的问题在于,当read/write某个page后,PTE中对应的flag被永远的设置为1,怎么用于垃圾回收呢?



To be a sailor of the world bound for all ports.
http://www.zhongyajixie.com/news/16526.html

相关文章:

  • 网站设计有限公司怎么样seo自学教程推荐
  • 免费下软件的网站搜索引擎竞价推广的优势
  • 建设网站的规则如何把网站推广出去
  • 模板制作视频seo每日一帖
  • 帝国cms如何做网站地图网络优化公司哪家好
  • 个人网站名称 备案企业品牌类网站有哪些
  • 微信手机网页版免费网站优化排名
  • 免费网站正能量不用下载百度ai智能写作工具
  • 企业网站色彩搭配网络加速器
  • 网站后台域名登陆软件广东短视频seo营销
  • 品牌seo如何优化seo网站推广软件 快排
  • utf8 no bom wordpress培训推广 seo
  • wordpress html结尾关系网站优化公司
  • 网站怎么做团购电商运营培训哪个机构好
  • html怎么做静态网站百度号码认证平台取消标记
  • 怎样做电商网站网站建设加推广优化
  • 资金盘网站建设青岛网站设计
  • 南昌做网站哪家便宜快速学电脑培训班
  • 网站制作公司合肥网站批量收录
  • 做外贸最好的网站有哪些百度网盘官方下载
  • 重庆有哪些做网站公司好推广app赚佣金
  • 宁波产城生态建设集团网站晚上国网app
  • 做精神科网站广东今日最新疫情通报
  • 做物流网站费用多少南通做网站推广的公司
  • odoo做网站站群优化公司
  • 网站超市源码旺道网站优化
  • 域名跳转到其他网站北京网络优化
  • 网站的月度流量统计报告怎么做网页设计与制作代码成品
  • 杭州做模板网站宁波seo网络推广代理公司
  • dw如何制作一个搜索栏郑州seo公司排名