• 系统调用知识一般在操作系统编程或系统编程的课程中讨论;

0. 基本介绍

操作系统本质上是一个系统程序,即为别的程序提供服务的程序。操作系统是以系统调用(system call)的方式提供服务的。

  • 系统调用就是操作系统提供的应用程序接口(Application Programming Interface,API),

    • 用户程序即可通过调用这些 API 获得操作系统的服务;

例如,如果用户程序需要进行读磁盘内容的操作,在 C 程序代码中可使用如下的语句:

result = read(fd, buffer, nbytes);

该 read 函数是 C 语言提供的库函数,而这个库函数本身则是调用的操作系统的 read 系统调用。这里有两个 read:

  • 一个是 C 语言提供的 read 库函数;
  • 另一个是 read 系统调用,由操作系统提供;

    编译器在看到上述语句后,将 read 库函数扩展为 read 系统调用;

1. 分类

  • 进程控制类;
  • 文件管理类;
  • 设备管理类;
  • 内存管理类;
  • 信息维护类;
  • 通信类;

3. 系统调用的三个阶段

  • 参数准备阶段;

    在参数准备阶段,需要使用系统调用的程序将系统调用所需要的参数,上例中的 fd、buffer、nbytes,压入栈中,然后调用 read 库函数;

  • 系统调用识别阶段;

  • 系统调用执行阶段;

(操作系统)系统调用相关推荐

  1. 操作系统--系统调用

    操作系统–系统调用 系统调用的目的和作用 系统调用是操作系统提供给应用程序的接口 作用: 应用程序可以系统调用(程序接口)请求获得操作系统的服务 系统调用会使得处理器从用户态切换为核心态 系统调用的分 ...

  2. 操作系统系统调用_操作系统中的系统调用

    操作系统系统调用 系统调用简介 (Introduction to System calls) The interface between the operating system and the us ...

  3. 操作系统系统调用实验

    操作系统实验一(记录) 思路: 1.实验目标及要求 2.实验结果演示 3.实验流程 4.遇到的问题及解决 5.实验思考 一.实验目标 题目5:把指定文件变为长度为0的空文件 要求: 添加系统调用: \ ...

  4. 操作系统——系统调用

    1.简介 操作系统作为用户和计算机的接口,需要向上提供一些简单易用的服务,主要包括命令接口和程序接口.其中,程序接口由一组系统调用组成 系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口, ...

  5. 为什么 Linux 系统调用会消耗较多资源

    本文转载自:公众号真没什么逻辑,作者Draveness,特此感谢! 系统调用是计算机程序在执行的过程中向操作系统内核申请服务的方法,这可能包含硬件相关的服务.新进程的创建和执行以及进程调度,对操作系统 ...

  6. c语言strcat_s用于调用的参数太少_为什么系统调用会消耗较多资源呢

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

  7. 超干货!当初我要是这么学习操作系统就好了(附带思维导图)

    点击蓝色"小詹学Python"关注我哟 加个"星标",一起走向人生巅峰! 1 下面是本文的思维导图 我们平常说的进程和线程更多的是基于编程语言的角度来说的,那么 ...

  8. Linux系统调用相关概念

    目录: 1. Linux系统调用原理 2. 系统调用的实现 3. Linux系统调用分类及列表 4.系统调用.用户编程接口(API).系统命令和内核函数的关系 5. Linux系统调用实例 6. Li ...

  9. Linux内核深入理解系统调用(1):初始化-入口-处理-退出

    Linux内核深入理解系统调用(1):初始化-入口-处理-退出 rtoax 2021年3月 1. Linux 内核系统调用简介 这次提交为 linux内核解密 添加一个新的章节,从标题就可以知道, 这 ...

  10. 为什么系统调用会消耗较多资源?系统调用的三种方法:软件中断(分析过程)、SYSCALL指令、vDSO(虚拟动态链接对象linux-vdso.so.1)

    Table of Contents 软件中断 汇编指令 vDSO 总结 参考文章 系统调用是计算机程序在执行的过程中向操作系统内核申请服务的方法,这可能包含硬件相关的服务.新进程的创建和执行以及进程调 ...

最新文章

  1. 政务大数据共享难题的破解路径有哪些?
  2. Java 有关于线程
  3. 代码生成器,自己实现的一个基于模板的在线代码生成网站
  4. C语言学习之用选择法对10个整数排序
  5. 收集整理的非常有用的PHP函数
  6. 听说你还不懂哈夫曼树和哈夫曼编码
  7. SQL安装文件挂起解决方法
  8. vba java 网页_通过VBA提交JSP网站的Java脚本表单
  9. 文件摆渡是什么意思_小白学炒股:除权、填权、贴权是个什么东东?
  10. 一元函数微分学与多元函数微分学的对比学习
  11. oracle11g oem使用手册,Oracle11g从入门到精通pdf
  12. 视频二维码在线生成器怎么用?
  13. 射击比赛的成绩 华为od js
  14. r340服务器怎么接显示器,笔记本电脑如何连显示器_笔记本怎么链接显示器
  15. 怎么改变ADS1.2的字体大小
  16. app_process 自定义类似am pm命令
  17. struts的框架介绍
  18. Failed to shutdown DBConsole Gracefully
  19. APK反编译以及提取有用信息
  20. 【XDU-OJ系统-23】C语言程序设计题

热门文章

  1. globalmapper如何选取图像上的点_图像配准算法
  2. 【自我救赎--牛客网Top101 4天刷题计划】 第三天 渐入佳境
  3. 【自我救赎--牛客网Top101 4天刷题计划】 第一天 热身运动
  4. HDFS读流程,写流程,放置策略
  5. php打印出前一天时间戳,使用php 获取时间今天明天昨天时间戳的详解
  6. 2020-08-09
  7. jquery 分片上传php,jquery 大文件分片上传插件 fcup.js
  8. Qt 调用CUDA静态库和动态库生成与配置
  9. 基于Qt的UDP协议实现及解析数据
  10. Javascript 中调参数的脚本onclick=select(this) this 怎么解释