什么是系统调用

本文介绍了操作系统中内核模式与用户模式的概念,强调了系统调用在两者间的作用。系统调用作为内核功能的接口,允许用户模式的应用程序安全地执行如进程管理、进程通信、文件管理和内存管理等敏感操作。通过陷阱指令,系统调用使得用户程序能请求内核服务,如fork、exec、kill、wait等,并在完成后返回用户模式。
摘要由CSDN通过智能技术生成

系统调用

1 内核模式与用户模式

  • 为了保护设备,操作系统不可能让所有的程序都能轻松地访问到任何的文件,将处理器CPU分为两种模式,内核模式和用户模式,诸如一些修改寄存器内容的命令,比如次磁盘的IO操作、访问物理页内存、访问网络上的数据包,这些涉及内核的操作只能是通过高权限的内核模式下进行,用户模式下没有权限进行。

2 系统调用概念

  • 系统内核通过包装一些能够实现特定功能的特殊硬件指令和硬件状态,即为内核函数,通过一组称为系统调用(system call)的接口呈现给用户,为系统调用而封装出来的API也达数百个。

3 系统调用过程

  • 当系统发起调用时通常通过一个称为陷阱(trap)的特殊硬件指令,硬件将控制转移到预先指定的陷阱处理程序(trap handler)(即预先设置的操作系统),并同时将特权级别提升到内核模式(kernel mode)。
  • 在内核模式下,操作系统可以完全访问系统的硬件,因此可以执行诸如发起I/O请求或为程序提供更多内存等功能。
  • 当操作系统完成请求的服务时,它通过特殊的陷阱返回(return-from-trap)指令将控制权交还给用户,该指令返回到用户模式,同时将控制权交还给应用程序,回到应用离开的地方。

4 系统调用举例(Linux)

  • 进程管理

    • fork
    • exec
    • kill
    • wait
  • 进程通信

    • ipc
  • 网络通信

    • getdomainname 取域名
    • setdomainname 设置域名
    • gethostid 获取主机标识号
    • sethostid 设置主机标识号
    • gethostname 获取本主机名称
    • sethostname 设置主机名称
  • 文件管理

    • access 确定文件可存取性
    • chdir
    • mkdir
    • rename
  • 内存管理

  • 用户管理

    • getuid 获取用户标识号
    • setuid 设置用户标志号
    • getgid 获取组标识号
    • setgid 设置组标志号
    • getegid 获取有效组标识号
    • setegid 设置有效组标识号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值