6.S081

6.S081

Winter Lv4

Operating System

  • 退出qemu ctrl x a . 注意还有一个点号!!!

  • 在google中使用ctrl shift q 使用google scholar!。

  • 需要永久改变vim的配置 可以修改 ~/.vimrc 文件

  • Spack 是一个包管理系统 主要用于很多科学专业的计算使用  $foo is a variable while $(foo) is a result of a command 变量名可以用{} 包围着
     脚本中常见的if 中对文件使用的短句命令 -d foo 如果foo 存在且为目录 -e 如果存在 -f 如果存在且为普通文件  pushd 指令就是在程序执行的时候对所在的目录位置存在一个栈 ,pushd 后这个目录就位于top位置同时也变成现在的工作目录 功能和cd 类似的 但是在连续多步骤跳跃的时候很有用,这是cd可能需要多次连续使用

  • 还有一招可以切换桌面 就是win 然后触摸板使用四个指同时滑动。

    • 一般來説,我们的这个page有一个高为的全为0 的 guard page in threre 这个保护页没有相应的PTE 所以一旦超过了这个范围就会导致一个page fault
      • 所以实际上这个映射是很复杂的 可以是多对多 也可以是多对一 一对多 所有的这些编程技巧都是通OS 实现的
    • np 代表这个进程的数量
    • id 是在process mod 里面确定
    • ids ide 是在 mesh里初始化的 大小似乎就是点的个数
  • 学习了几个奇淫巧计

  • tmux 打开窗口 然后可以Ctrl+b c create the new windows and the ctrl+b % to split the window 拆分窗口 ctrl+b “ 水平拆分 ctrl + b o 来回切换 注意这里的一个使用方法就是先点击 ctrl + b 然后在点击其余的按键

  • 这是xv6 gdb tutorial

  • 首先咱们使用的命令是 gdb-multiarch 注意中间的横线一定不能少

  • 然后就是上面的网址里写的

  • 回顾一下gdb的基本用法

  • tmux 的一些用法 prefix & 关闭当前的windows

  • tmux attach 进入最近使用的session

  • prefix 数字 进入对应的windows

  • find -name {} 方便查找文件

  • 总结而言 一般我们先在一个windows运行 gdb qemu 然后一个新的window split 分为 gdb 和源码

  • prefix o 是在不同 pane 间移动

  • 注意启动gdb 后需要使用 target remote localhost:26000来关联上

  • 在 gdb 中我们使用 layout split 来同时显示源码和汇编

  • 在vim 里面也可以拆分 : split 然后 ctrl + w+w 连按两次 w 来移动窗口 垂直是vsplit 在内部打开另一个文件就是使用 open + filename 注意文件路径

  • qemu 可以使用这个监视模式 ctlr a c

Trap

  • 为了在用户代码与内核间思华切换 隔离安全性。
  • mode 管理员模式其实只是能够读写一些控制控制急寄存器 然后是以哦个PTE中没有PTE_U 的模式位的页表条目
  • ecall 开始经过trampoline 的两个中间函数 然后使用sys_call 指c函数看跳转表 感觉中间的两个函数是进行一个硬件准备 然后都是 使用汇编语言写的 感觉这些中间工作差不多就是一些内存上下文保存 还有虚拟地址映射的切换之类的
  • 系统调用指令 ecall 与普通的call 指令相似 传入的调用参数使用通用寄存器 riscv 就是a0 a1 a2 之类的
  • 两个额外的标记位 一个是a 表似乎是否是被读过 一个是d 表示是否是被写过 也许后面驱逐页的时候就需要
  • 感觉目前接触的最终要的一个感觉就是riscv 尽可能的简单 从而能够给予操作系统设计者最大的自由发挥的空间 ecall实际上只完成三件事 一件事是保存pc 第二就是读取trampoline 到 pc 第三件事就是变换mode 从user到管理员模式 同时很多指令行为的考虑没有一个通用的模式 例如保存在tramframe只是因为假设可能存在没有普通函数栈的情况
  • 所以我们抽象地来看其实内核模式与用户模式就是简单地在于虚拟空间以及内部使用的指令的不同 还有就是具体的位不同 通过几个底层的东西我们就可以抽象出如此美妙的东西 !
  • trampoline在用户和内核的虚拟页表都是相同的映射所以可以实现无缝切换
  • 数据库 本身也是一种建立在集合运算上 的一种简洁的抽象。
  • Post title:6.S081
  • Post author:Winter
  • Create time:2024-02-29 19:32:09
  • Post link:https://spikeihg.github.io/2024/02/29/6-S081/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
if (hexo-config('comment.enable') == true && hexo-config('comment.use') != "") { if (hexo-config('comment.use') == "waline") { @require "./waline.styl" } else if (hexo-config('comment.use') == "gitalk") { @require "./gitalk.styl" } else if (hexo-config('comment.use') == "twikoo") { @require "./twikoo.styl" } } .comments-container { display inline-block margin-top $spacing-unit width 100% #comment-anchor { width 100% height 10px } .comment-area-title { width 100% margin 10px 0 font-size 1.38rem color var(--default-text-color) font-family "Noto Sans", "Noto Sans SC",sans-serif font-weight bold i { color var(--default-text-color) } +redefine-tablet() { margin 5px 0 font-size 1.2rem } } }
On this page
6.S081