系统调用:系统调用的实现

7.3.3 系统调用的实现

  1. 中断和陷入硬件机构

  (1) 什么是中断和陷入。

  中断是指CPU对系统发生某事件时的这样一种响应:CPU暂停正在执行的程序,在保留现场后自动地转去执行该事件的中断处理程序;执行完后,再返回到原程序的断点处继续执行。

  (2) 中断和陷入向量。

  2. 系统调用号和参数的设置

  (1) 直接将参数送入相应的寄存器中。

  (2) 参数表方式。

  3. 系统调用的处理步骤

  首先,将处理机状态由用户态转为系统态;之后,由硬件和内核程序进行系统调用的一般性处理,即首先保护被中断进程的CPU环境,将处理机状态字PSW、程序计数器PC、系统调用号、用户栈指针以及通用寄存器内容等,压入堆栈;然后,将用户定义的参数传送到指定的地方保存起来。

  其次,是分析系统调用类型,转入相应的系统调用处理子程序。

  最后,在系统调用处理子程序执行完后,应恢复被中断的或设置新进程的CPU现场,然后返回被中断进程或新进程, 继续往下执行。

  4. 系统调用处理子程序的处理过程

  进入Creat的处理子程序后,核心将根据用户给定的文件路径名Path, 利用目录检索过程,去查找指定文件的目录项。查找目录的方式可以用顺序查找法,也可用Hash查找法。如果在文件目录中找到了指定文件的目录项,表示用户要利用一个已有文件来建立一个新文件。但如果在该已有(存)文件的属性中有不允许写属性,或者创建者不具有对该文件进行修改的权限,使认为是出错而做出错处理;若不存在访问权限问题,便将已存文件的数据盘块释放掉,准备写入新的数据文件。如未找到指名文件,则表示要创建一个新文件,核心便从其目录文件中找出一个空目录项,并初始化该目录项,包括填写文件名、文件属性、文件建立日期等,然后将新建文件打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值