《程序员的自我修养》笔记十:系统调用与API

背景

系统资源有限,不能被多个应用程序同事访问,所以操作系统将可能产生冲突的系统资源保护起来,阻止应用程序直接访问。

程序想访问受保护的系统资源时,使用的由操作系统提供的接口,称为系统调用。


系统调用

  • 每个系统调用的含义,参数,行为都要有严格清晰的定义
  • 稳定和向后兼容

操作系统的系统调用从开始定义后就基本不做改变,仅增加新的调用接口,保持向后兼容

  • Windows 的系统调用实际上是 Windows API

Linux 常见的系统调用

  • exit
  • fork
  • read
  • write
  • open
  • close
  • waitpid
  • creat

系统调用的弊端

  • 使用不便,系统调用接口过于原始,有很多操作系统的细节,没有包装
  • 各个操作系统之间系统调用不兼容
  • 使用运行库可以避免上面的问题,但是涉及图形交互时很难保持兼容性

系统调用原理

  • 用户模式(用户态)
    普通应用程序运行在用户态的模式下,一些系统的操作受限
  • 内核模式(内核态)
    系统调用时运行在内核态的

操作系统通过中断来从用户态切换从内核态

CPU中断过程

  • 不同的中断具有不同的中断号
  • 一个中断处理程序一一对应一个中断号
  • 一个中断号对应多个系统调用

基于 int 的 Linux 的经典系统调用实现

Windows API

应用程序编程接口,API 不是一个专门的事物,而是一系列事物的总称。Windows 下提到 API ,一般指 Windows 系统提供给应用程序的接口,即 Windows API。

简介

Windows 的最底层接口是 Windows API,也是 Windows 编程基础,尽管 Windows 内核提供了数百个系统调用,但并没有公开,只能通过调用 API 层的接口。

  • Windows API 以 DLL 导出函数形式暴露给应用程序开发者的
  • Windows.h 包含了 Windows API 的核心部分
  • MSDN 里可以找到每个 API 的文档和示例,是学习 Win32 API 的最好工具

为什么要使用 Windows API

  • 为了保持向后兼容,而在 CRT 和系统调用之间添加了 Windows API 层
  • 隔离硬件结构不同而导致的程序兼容性问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值