[读书笔记]程序员的自我修养 chp12

12.1 系统调用介绍

12.1.1 什么是系统调用

  1. 现代操作系统都将可能会发生冲突的系统资源(文件, 网络, IO, 设备)保护起来, 阻止应用程序直接访问
  2. 系统调用通过中断实现, linux 使用 0x80 中断, 而 windows 使用 0x2e 中断 作为系统调用的入口

12.1.2 Linux 系统调用

  1. 使用 0x80 中断, eax 存放系统调用的接口号, 同时, eax 也是调用结果的返回容器

12.1.3 系统调用的弊端

  1. 弊端:
    1. 使用不方便
    2. 各个操作系统之间不兼容
  2. 运行库 作为系统调用 与 程序之间的中间层 (保证各个平台兼容)
    1. 可以保证不同平台上调用的一致性 (源代码级别)
    2. 但是, 这个兼容性实际上是针对各个平台公共的性能

12.2 系统调用的原理

12.2.1 特权级与中断

  1. 通常CPU 的特权级别:
    1. 用户模式、
    2. 内核模式
  2. 中断需要两个属性:
    1. 中断号
    2. 中断处理程序
  3. 一般的中断过程:
    这里写图片描述

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

这里写图片描述

内核栈的切换:
这里写图片描述

这里写图片描述

需要注意的是, 系统调用参数的传入, 一般借助 ebx, ecx, edx, esi, edi, ebp 进行传递, 最多 6 个, 通过保护现场时候, 压入栈中,实现
这里写图片描述

12.3 windows api

  1. windows api 是操作系统用于 与 内核打交道的核心功能, 通过dll 导出函数的形式提供出来
    这里写图片描述

  2. CRT 实际上是对 windows api 的进一步封装

  3. 通过windows api 可以隔离内核的变化
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值