操作系统Organization and System Calls

操作系统要满足的要求:多路复用、隔离和交互

微内核
在这里插入图片描述

操作系统隔离性

CPU、内存
进程抽象了cpu
应用程序不能直接与CPU交互,只能与进程交互。操作系统内核会完成不同进程在CPU上的切换。所以,操作系统不是直接将CPU提供给应用程序,而是向应用程序提供“进程”,进程抽象了CPU,这样操作系统才能在多个应用程序之间复用一个或者多个CPU。

exec抽象了内存

files抽象了磁盘

操作系统防御性

需要在应用程序和操作系统之间提供强隔离性,通常来说,需要通过硬件来实现这的强隔离性,第一部分是user/kernel mode,kernel mode在RISC-V中被称为Supervisor mode但是其实是同一个东西;第二部分是page table或者虚拟内存(Virtual Memory)。

user/kernel mode

可以认为user/kernel mode是分隔用户空间和内核空间的边界
控制权的切换:在RISC-V中,有一个专门的指令用来实现这个功能,叫做ECALL。ECALL接收一个数字参数,当一个用户程序想要将程序执行的控制权转移到内核,它只需要执行ECALL指令,并传入一个数字。这里的数字参数代表了应用程序想要调用的System Call。

进程最重要的内核状态是其页表、内核堆栈和运行状态。我们将使用符号p->xxx来表示proc结构的元素;例如,p->pagetable是指向进程页表的指针

进程可以通过执行RISC-V ecall指令进行系统调用。此指令提高硬件特权级别,并将程序计数器更改为内核定义的入口点。入口点的代码切换到内核堆栈,并执行实现系统调用的内核指令。
当系统调用完成时,内核切换回用户堆栈,并通过调用sret指令返回用户空间,这会降低硬件特权级别,并在系统调用指令之后恢复执行用户指令。

启动xv6和第一个进程

xv6启动的过程

risc-v开机的时候会先启动一个存储在只读区的boot 加载器,然后这个加载器会将xv6内核加载到内存。
在机器模式下,cpu执行xv6开始程序entry.S。加载器直接将xv6内核加载进物理地址的内存0x80000000。然后_entry会开辟一个栈空间运行start.c.
start函数执行了一些只在机器模式中被允许的配置之后就切换为监督员模式。RISC-v通过mret指令进入监督模式。
之后返回main,在main中会初始化设备和子系统,通过调用userinit开创造第一个进程。第一个进程执行initcode.s这个指令通过exec系统指令来重新进入内核。内核完成exec后,将返回/init进程中的用户空间。Init根据需要创建一个新的控制台设备文件,然后将其作为文件描述符0、1和2打开。然后在控制台上启动一个shell。系统已启动。

lab:system calls1 trace

参考链接
实验目的,补齐trace的系统调用部分,已经给出用户态使用函数。

1.在user.h添加声明、usys.pl里添加entry入口,kernel/syscall.h里添加调用号。
usys.pl生成usys.s文件,在这里进入内核。
2.经过上述步骤进入内核,然后需要在内核中实现trace。上一步最后执行ecall指令跳转到kernel/syscall.c的syscall()函数。syscall会调用syscalls函数,所以在函数中添加sys_trace,并进行声明。
trace需要一个整数mask代表其要跟踪的系统调用,所以在kernel/proc.h中添加mask定义为traceid;
然后去实现sys_trace()函数,在sysproc.c中定义sys_trace()函数,通过传递定义在proc结构体中的参数traceid来实现system call。
在kernel/proc.c中fork调用时添加mask复制代码。
最后实现打印输出:因为最后要求的输出里含有syscall_name所以定义一个数组。

system call sysinfo

同trace的大体流程相似,主要内容:

  1. 统计运行状态的进程数量
  2. 统计空闲内存空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值