1. 系统调用

系统调用是操作系统提供的有效服务界面,一般使用高级语言编写,如c和c++,对于特定的较为底层的任务,则使用汇编语言指令。

2. API和系统调用
API,应用程序接口,提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力。
使用API而不直接调用系统调用的原因主要由以下两点:1)由于API隐藏了绝大多数细节,所以程序员无需理解内部工作机制的细节,更加的user-friendly。2)因为API跟内核没有必然的联系,所以具有很好的可移植性。

有三种常用的API:Windows系统的Win32 API,适用于POSIX系统的POSIX API以及JAVA API。

3. 系统调用的实现
系统调用接口,由程序设计语言的运行时支持系统提供。系统调用接口截取API的函数调用,然后调用操作系统中的相关系统调用。

一般而言,每个系统调用有一个与其相关的数字,多个数字构成了向量表。系统调用接口维护这个列表索引,并通过其来调用所需要操作系统内核中的的系统调用。

4. 系统调用的参数传递

系统调用根据使用的计算机而异,通常需要提供比系统调用识别符更多的信息。传参方法有三种:1)通过寄存器直接传递传参 2)参数存在内存的块和表上,块的地址通过寄存器来传递 3)参数也可以通过程序压入堆栈中,并通过操作系统弹出。

5. 系统调用的类型
进程控制(Process control)
终止&运行程序,如end(), abort();

装入&执行进行– load(), execute();

创建&中止进程-create_process(), terminate_process();

获得&设置进程属性– create_process(), terminate_process();
等待时间wait_time();
等待&唤醒事件– wait_event(), signal_event();

分配和释放内存acquire_lock(), release_lock();

除了进程控制,还有文件管理(File manipulation),设备文件(Device manipulation),信息维护(Information maintenance),通信(Communication),保护(Protection)。

其中通信模型有两种:1)消息传递模型,通信进程彼此之间交换消息来交换信息,直接或间接的通过一个共同的邮箱 2)共享内存模型:进程通过shared memory create 和shared memory attach系统调用来获得其他进行所拥有的内存的访问权。

参考文献:
[1] Abraham Silberschatz. 操作系统概念. 高等教育出版社, 2007.3.

system call——系统调用相关推荐

  1. 阻塞性系统调用失败,errno(ENTIR)4 [Interrupted system call]系统调用被信号中断

    1.阻塞与非阻塞 非阻塞:程序调用后,不管能不能立刻得到结果,当前进程都会直接返回.如果得到结果则返回成功,否则返回失败. 阻塞:程序调用后,如果不能立刻得到结果,则当前进程会被挂起,无限期等待,直到 ...

  2. execve系统调用_《操作系统》知识结构

    作者:陈凌灏 单位:西安电子科技大学 注:转载请注明出处~~ 写在前面:<操作系统>这门课几乎可以说是计算机专业最重要的课程了.本文主要是在学习完这门课后,参照TANENBAUM的< ...

  3. 通过system调用Am命令执行动作

    在底层代码中看到这样一条语句: system("/system/bin/sh -c \"am broadcast -a android.intent.action.AT_AIRPL ...

  4. 【操作系统】系统调用

    System Call 系统调用 系统调用举例 札记 系统调用 系统调用提供了进程与操作系统之间的接口. 系统调用通常以汇编语言指令的形式提供,也有的系统允许系统调用直接为高级语言程序所用,如C.C+ ...

  5. 君正Zeratul开发(6)——为什么禁止使用system

    (一)前言  在君正Zeratul_T31_开发指南中明确规范,禁止在主程序中使用system 等系统调用接口函数,需要在另外的一个守护进程中去实现system函数的功能.这里有两个问题:1.syst ...

  6. 《Linux系统调用: clone》

    一.介绍 clone 函数来创建轻量级进程,和fork,vfork一样都是用来创建进程的,但是各自都有不同点,如果你会追踪kernel发现都会调用 do_fork 函数,只不过进入后再进行细分执行各个 ...

  7. 6.S081——陷阱部分(一文读懂xv6系统调用)——xv6源码完全解析系列(5)

    0.briefly speaking 这篇博客将要开始尝试阅读和研究与Xv6陷阱机制相关的代码,主要有以下文件,最重要的是结合Xv6 book将Xv6处理陷阱的相关逻辑和流程弄透.在Xv6的语境中所谓 ...

  8. 操作系统的系统调用是怎么一回事呢?

    为了从操作系统中获得服务,用户程序必须使用系统调用( System Call),系统调用陷入内核并调用操作系统.访管指令把目态切换成管态,并启用操作系统.当有关工作完成之后,在系统调用后面的指令把控制 ...

  9. Linux系统system call的源码以及init/main.c分析

    便于分析,我选择的是Linux 0.11版本的源码. 1.system_call源码及分析 首先分析system call系统调用,在linux-3.10.1, x86 64位的系统下,系统调用的入口 ...

最新文章

  1. MySQL外键设置中的的 Cascade、Restrict、SET NULL 、NO ACTION
  2. python数字加密解密_Python对整形数字进行加密和解密
  3. html面包屑菜鸟,css content属性与before及after伪元素配合使用价值发挥到最大
  4. 事件监听一直报错Cannot set property 'display' of undefined
  5. rplidar 启动马达 c++_【玩码】刘作虎:一加7 Pro的横向线性马达,为安卓手机最大...
  6. kubernetes service 原理解析
  7. Java对象创建的过程及对象的内存布局与访问定位
  8. 在win7的操作系统下安装Oracle11R2
  9. 制作WIN7、WINPE2003、Ubuntu、dos工具箱多启动U盘
  10. 【实用技巧】下载音乐到本地电脑
  11. 人人车北京第二家严选店开业 称年内将覆盖一二线城市
  12. [C++] [OpenGL] 基于GLFW+GLAD的OpenGL简单程序
  13. Jmeter设置之ramp-up
  14. C/C++编写Windows窗口应用程序(Win32程序),非黑漆漆的控制台窗口
  15. 阿里云 mysql参数_阿里云MYSQL数据库怎么修改参数值?
  16. Pipeline支撑运维自动化:sftp原子模块
  17. SwiftUI iOS 完整项目之基于CoreData构建购物计划App(教程含源码App Store上线app)
  18. 2022软件测试面试题(不含答案)
  19. 手把手教你使用CNN进行交通标志识别(已开源)
  20. 今天不谈电商,只聊搜狐的大数据实践!

热门文章

  1. 数据结构课程设计(四):行车路线问题(C++、图、迪杰斯特拉算法、最短路径)
  2. jnlp 文件签名验证不通过
  3. Python笔记:python实现跳板机
  4. excel 关联数据
  5. Microsoft Word 设置底纹
  6. 域名通过ipv6解析SSL协议无法访问
  7. SRGAN超分辨率网络
  8. SRGAN 论文学习
  9. ubuntu安装和卸载软件命令
  10. 时间戳与日期时间的转换