• 操作系统:系统调用


    1.系统调用的定义

    凡是与共享资源有关的操作、会直接影响到其他进程的操作,
    就一定需要操作系统介入,就需要通过系统调用来实现。
    在这里插入图片描述

    1.回顾系统调用
    • 操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。
    • 主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。
    • “系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,
    • 应用程序可以通过系统调用来请求获得操作系统内核的服务

    2.系统调用与库函数的区别

    在这里插入图片描述

    1.程序调用计算机的过程:
    • 普通应用程序:可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及
    • 编程语言:向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。
    • 操作系统:向上提供系统调用,使得上层程序能请求内核的服务。
    • 裸机
    2.库函数的分类
    • 不涉及系统调用的库函数:如“取绝对值”的函数
    • 涉及系统调用的库函数:如“创建一个新文件”的函数

    3.系统调用的必要性

    思考:如果两个进程可以随意地、并发地共享打印机资源,会发生什么情况?

    解决方法:由操作系统内核对共享资源进行统一的管理,
    并向上提供“系统调用”,用户进程想要使用打印机这种共享资源,
    只能通过系统调用向操作系统内核发出请求。
    内核会对各个请求进行协调处理

    4.系统调用的功能实现

    1.功能分类
    1. 设备管理:完成设备的请求/释放/启动等功能
    2. 文件管理:完成文件的读/写/创建/删除等功能
    3. 进程控制:完成进程的创建/撤销/阻塞/唤醒等功能
    4. 进程通信:完成进程之间的消息传递/信号传递等功能
    5. 内存管理:完成内存的分配/回收等功能
    2.系统调用的作用
    • 应用程序通过系统调用请求操作系统的服务。
    • 而系统中的各种共享资源都由操作系统内核统一掌管,
    • 因此凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。
    • 这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

    5.系统调用的过程

    1.过程
    • 传递系统调用参数→
    • 执行陷入指令(用户态)→
    • 执行相应的内请求核程序处理系统调用(核心态)→
    • 返回应用程序。

    该中断由陷入指令引发,因此转入相应的中断处理程序――即系统调用的入门程序。

    注意:
    1.陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
    2.发出系统调用请求是在用户态,而对系统调用的相应处理核心态下进行
    3.陷入指令= trap 指令=访管指令

  • 相关阅读:
    王道数据结构——循环双链表(双向循环链表)
    浅谈设计模式-备忘录模式
    32.1 Java进阶之注解概念,工作原理
    Linux系统中使用CURL模拟请求HTTP服务
    java课程线上线下教学平台 ssm638
    Java中list集合自定义排序-2022新项目
    centos 7 升级Docker 与Docker-Compose 到最新版本
    【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计(Matlab代码实现)
    设备安全:防火墙总结(1)
    保姆级透明背景动画导出 —— json格式(Mac系统)
  • 原文地址:https://blog.csdn.net/qq_61888137/article/details/133183794