系统调用

为什么要有系统调用?
我认为有以下原因:

  1. 用户空间想要访问硬件
  2. 用户空间之间访问硬件是不安全的

因此,系统调用就作为用户空间进程和硬件设备的中间层出现,它使得用户进程可以受限制的访问硬件设备。这样既保证了安全,又可以使用了。

API POSIX和C库

用户进程不是直接调用的系统调用,而已调用的应用编程接口(API)。
unix世界中,流行的API是基于 POSIX 标准的。
C库实现了unix系统的主要API,提供了POSIX的绝大部分API

从程序员的角度看,他们只和API打交道
从内核角度看,他们只和系统调用打交道
也就是说,API再封装了系统调用,但它们的关系不是一一对应的,一个API可能调用了多个系统调用。

系统调用号

每个系统调用都有一个系统调用号
所有已经注册过的系统调用存储在一个列表sys_call_table中。

系统调用处理程序

软中断号 0x80 会陷入系统调用异常,导致系统切换到内核态并执行这个0x80对应的中断处理程序 system_call()

一个系统调用的实现

以后补充吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值