当前位置: 首页 > news >正文

操作系统-系统调用

应用程序调用printf(),会触发系统调用write()

1、概念

        操作系统服务的编程接口,通常由高级语言编写(C/C++),程序访问通常是通过高层次的API接口而不是直接进行系统调用。

2、三种最常用的应用程序编程接口(API)

1、win32 API(windows)

2、POSIX API用于POSIX-base-system(包括UNIX、LINUX,MacOS X的所有版本)

3、Java API 用于JAVA虚拟机(JVM)

3、系统调用的实现

3.1每个系统调用对应一个系统调用号

        系统调用接口根据系统调用号来维护表的索引

3.2系统调用接口调用内核态中的系统调用功能实现,并返回系统调用的状态和结果

3.3用户不需要知道系统调用的实现

        需要设置调用参数和获取返回结果

        操作系统接口的细节大部分都隐藏在编程接口后

        通过运行程序支持的库来管理

4、函数调用和系统调用的区别

        系统调用:INT和IRET指令用于系统调用,系统调用时,用户态和内核态使用不同的堆栈所以存在堆栈切换和特权级的转换。(内核态才有特权)

        函数调用:CALL和RET用于常规调用,常规调用时没有堆栈切换。

5、中断、异常和系统调用的开销

        中断、异常和系统调用的开销都大于函数调用,主要牵涉用户态和内核态的切换,开销包括:引导机制、建立内核堆栈、验证参数、内核态映射到用户态的地址空间(更新页面映射权限)、内核态独立地址空间(TLB)


http://www.mrgr.cn/news/46638.html

相关文章:

  • G1原理—8.如何优化G1中的YGC
  • Windows 11 开启 WSL(Windows Subsystem for Linux)完整指南
  • scala基础学习(数据类型)-集合
  • Spring Data Elasticsearch简介
  • Spring AMQP-保证消费者消息的可靠性
  • 网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法
  • [JAVA]连接数据库 并在Java中实现查询员工信息功能
  • OmniH2O——通用灵巧且可全身远程操作并学习的人形机器人(其前身H2O是HumanPlus的重要参考)
  • 解决Nginx出现“Too many open files”的问题
  • 测试基础知识(二)测试分类和质量模型
  • 手动更换SSL证书教程及注意事项
  • 五、Python基础语法(程序的输入和输出)
  • Windows系统安装Docker
  • QColormap Class
  • ctfshow-web 萌新题
  • 22.1 K8S之KubeSphere实现中间件高可用集群
  • 国内经典多模态大模型工作1——Qwen-VL系列(Qwen-VL、Qwen2-VL解读)
  • 深度学习的技术:学习ElasticSearch数据库
  • 基于函数计算FC 部署 ComfyUI实现AI生图 的优势
  • 误删文件不再烦恼,四大数据恢复软件让你轻松找回!
  • STM32单片机(F03C8T6)-点灯(寄存器点灯和库函数点灯)
  • 【C语言进阶教程】数据结构与算法(4.栈 5.队列 6.树)
  • 【Tourism】Zhengzhou
  • SQL第15课挑战题
  • The Android SDK location cannot be at the filesystem root
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.7-2.8