程序接口,是OS专门为用户设置的,提供给程序员在编程时使用,也是用户程序取得OS服务的唯一途径。它是由一组系统调用(system call)组成,因而,也可以说,系统调用提供了用户程序和操作系统内核之间的接口。系统调用不仅可供所有的应用程序使用,而且也可供OS自身使用。在每个系统中,通常都有几十条甚至上百条的系统调用,并可根据其功能把它们划分成若干类,每一个系统调用都是一个能完成特定功能的子程序。

一、基本概念

在计算机系统中,通常运行着两类程序:系统程序和用户程序。为了防止应用程序对OS的破坏,应用程序和OS的内核是运行在不同的状态,即OS的内核是运行在系统态,而应用程序是运行在用户态。

1.1 系统态和用户态

在计算机系统中设置了两种状态:系统态(或称为核心态)和用户态。在实际运行过程中,处理机会在系统态和用户态间切换。相应地,现代多数OS将CPU的指令集分为特权指令和非特权指令两类。

  • 特权指令:特权指令是指在系统态运行的指令,它对内存空间的访问范围基本不受限制,不仅能访问用户空间,也能访问系统空间,如启动外部设备、设置系统时钟时间、关中断、转换执行状态等。特权指令只允许OS使用,不允许应用程序使用,以避免引起系统混乱。
  • 非特权指令:非特权指令是在用户态运行的指令。应用程序所使用的都是非特权指令,它只能完成一般性的操作和任务,不能对系统中的硬件和软件直接进行访问,对内存的访问范围也局限于用户空间。这样,可以防止应用程序的运行异常和对系统造成破坏。

这种限制是由硬件实现的,如果在应用程序中使用了特权指令,就会发出权限出错信息,操作系统捕获到这个信号后,将转入相应的错误处理程序,同时停止该应用程序的运行,重新调度。

1.2 系统调用

在OS中提供系统调用的目的,是使应用程序可以通过它间接调用OS中的相关过程,取得相应的服务。系统调用在本质上是应用程序请求OS内核完成某功能时的一种过程调用,但它是一种特殊的过程调用,它与一般的过程调用有下述几方面的明显差别:

  1. 运行在不同的系统状态:一般的过程调用其调用程序和被调用程序运行在相同的状态-系统态或用户态;而系统调用与一般调用的最大区别就在于,调用程序是运行在用户态,而被调用程序是运行在系统态。
  2. 状态的转换:由于一般的过程调用并不涉及到系统状态的转换,所以可直接由调用过程转向被调用过程。但在运行系统调用时,由于调用和被调用过程是工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程,需要通过软中断机制,先由用户态转化为系统态,经内核分析后,才能转向相应的系统调用处理子程序。
  3. 返回问题:在采用了抢占式(剥夺)调度方式的系统中,在被调用过程执行完后,要对系统中所有要求运行的进程做优先权分析。当调用进程仍具有最高优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行。此时,将把调用进程放入就绪队列
  4. 嵌套调用。像一般过程一样,系统调用也可以嵌套进行,即在一个被调用过程的执行期间,还可以利用系统调用命令去调用另一个系统调用。当然,每个系统对嵌套调用的深度都有一定的限制,例如最大深度为6。但一般的过程对嵌套的深度则没有什么限制

1.3 中断机制


二、系统调用的类型

待补充/307

系统调用的概念和类型相关推荐

  1. nginx虚拟主机概念和类型介绍

    nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服 ...

  2. 系统调用的概念及原理

    系统调用与内核函数 内核函数与普通函数形式上没有什么区别,只不过前者在内核实现,因此要满足一些内核编程的要求. 系统调用是用户进程进入内核的接口层,它本身并非内核函数,但它是由内核函数实现的,进入内核 ...

  3. Linux 终端概念和类型的理解

    目录 Linux 终端概念和类型的理解 查询正在使用的终端命令 可以使用 `tty` 查看当前所在的终端 查看当前连接计算机的终端设备 查看当前正在连接的终端设备和正在使用的程序 终端的概念 Linu ...

  4. 智慧城市的大脑——智慧模型的概念、类型和作用

    本文分析了我国智慧城市的发展现状,发现我国的智慧城市亟需智慧的"大脑"来分析利用数据.发现城市问题.提供解决方案.对此,提出智慧模型就相当于智慧城市的大脑,可以满足智慧城市分析的需 ...

  5. mysql 不同分区 同时insert_一文看懂mysql数据库分区表概念、类型、适用场景、优缺点及原理...

    概述 最近对项目上部分表按时间做了分区,所以顺便整理下mysql分区表的一些内容,仅供参考. 一.分区表概念 分区是将一个表的数据按照某种方式,比如按照时间上的月份,分成多个较小的,更容易管理的部分, ...

  6. 对指针的详细认识(一)—— 指针概念+指针类型+野指针+指针运算+二级指针

    文章目录 指针是什么? 指针的定义 指针的大小 指针类型 指针有哪些类型? 指针类型有什么意义? 野指针 野指针的成因 如何避免野指针 指针运算 指针+-整数 指针-指针 指针的关系运算 二级指针 指 ...

  7. 指标体系的概念和类型,总算有人讲明白了

    导读:与指标体系相关的概念有很多,包括指标.度量.KPI.维度等.界定清楚这些概念,对于构建和运用指标体系至关重要. 01 认识指标 与指标体系相关的概念有很多,包括指标.度量.KPI.维度等.界定清 ...

  8. 《大数据导论》之数据的概念、类型和组织形式

    目录 说在前面 一.数据的概念 二.数据类型 ​三.数据组织形式 说在前面 大数据时代悄然来临,带来了整个信息技术发展的巨大变革,并深刻影响着社会生产和人们生活的方方面面.全球范围内,世界各国政府也非 ...

  9. 【Linux】文件系统的概念和类型

    一. Linux文件系统的基本概念 文件系统(File System)是磁盘上有特定格式的一片区域,操作系统利用文件系统保存和管理文件. 不同的操作系统需要使用不同的文件系统,为了与其他操作系统兼容, ...

  10. 系统调用的概念和作用

    一.什么是系统调用,有何作用 1.概念 用户接口 命令接口-允许用户直接使用 程序接口-允许用户通过程序间接使用:由一组系统调用组成 系统调用 "系统调用"是操作系统提供给应用程序 ...

最新文章

  1. linux各种模式切换
  2. 多个线程对hashmap进行put操作的异常
  3. 逻辑回归和线性回归的区别_[PRML]线性分类模型贝叶斯逻辑回归
  4. 裁缝师(2011特长生 T2)
  5. Java开发人员的Erlang
  6. linux串口tx缓冲区大小,[Linux C]自己写的串口缓冲区
  7. Source Xref 与 JavaDocs 学习理解
  8. YOLOv2检测过程的Tensorflow实现
  9. 设计模式的有趣解释-追MM
  10. 寻找电路布线最短路径算法BFS
  11. 城市轨道交通运营管理属于什么院系_2020年报考山东交通职业学院城市轨道交通运营管理专业怎么样...
  12. jmeter在返回的json串中提取需要的值
  13. java 生成kml 文件
  14. okcc呼叫中心外呼系统使用教程
  15. 字节跳动前端开发面试题总结,需要的小伙伴来看!
  16. 方维团购V3.07版本短信插件开发
  17. web服务器硬件软件配置选择
  18. 网站备案常见词汇解释汇总
  19. 电话机器人API接口-空号识别-座席WEBAPI
  20. html跳转qq浏览器,为何QQ浏览器主页自动跳转

热门文章

  1. MySQL NULL的小陷阱
  2. python打开其他文件_python打开通达信,如何在python中打开其他文件
  3. Glide4.0源码全解析(二),load()背后的故事
  4. 非科班程序员和科班程序员的差距到底在哪里?
  5. 给大家安利一个买电脑好去处(内有福利)
  6. 插件开发之360 DroidPlugin源码分析(四)Activity预注册占坑
  7. tomcat自动启动 linux,Linux设置tomcat开机自启动
  8. python线程池的使用
  9. python物性库能调用哪些物质_浅谈湿空气物性计算软件CoolProp的应用
  10. mobx中跟新了数据视图没变化_如何做一个好的大数据平台架构