(王道408考研操作系统)第一章计算机系统概述-第一节5:系统调用

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(王道408考研操作系统)第一章计算机系统概述-第一节5:系统调用相关的知识,希望对你有一定的参考价值。

前面说过,操作系统接口分为命令接口和程序接口,其中命令接口允许用户直接使用,而程序接口允许用户通过程序间接使用,实际上是由一组系统调用组成

一:什么是系统调用

系统调用是指用户在程序中调用操作系统所提供的一些子功能,系统调用可以视为特殊的公共子程序。系统中的各种共享资源都有操作系统统一掌控,因此在用户程序中,凡是与资源有关的操作(如存储分配,I/O传输等)都必须通过系统调用的方式向操作系统提出服务请求,并由操作系统代为完成。 一个操作系统提供的系统调用命令可以多大上百条(在我们的Linux系统编程中大家就可以感受到种类反复的系统调用接口)

这样可以保证系统的稳定性和安全性,阻止用户进行非法操作。这一点我们在Linux系统编程30:进程信号之产生信号的四种方式(Core Dump,kill,raise)一文中感受到了,kill-9这样的系统调用是无法被捕捉的。

二:系统调用分类

系统调用按照功能可以大致分为如下几类

  • 设备管理:完成设备的 请求、释放、启动等功能
  • 文件管理:完成文件的读、写、创建、删除等功能
  • 进程控制:完成进程的 “创建、撤销、阻塞、唤醒”等功能
  • 进程通信:完成进程之间的消息传递、信号传递等功能
  • 内存管理:完成内存的分配、回收等功能

三:系统调用和核心态用户态的关系

系统调用相关功能设计系统资源管理、进程管理等操作,对整个系统的影响相当大,因此吡啶需要使用某些特权指令才能够完成,所以系统调用的处理需要由操作系统内核程序负责完成,运行在核心态

用户程序执行陷入指令来发起系统调用,请求操作系统提供服务,陷入指令相当于把CPU的使用权交给操作系统的内核程序,此时CPU状态会从用户态进入核心态,之后操作系统内核程序再对系统调用请求作出相应处理,处理完成之后CPU状态会从核心态返回用户态

四:系统调用与库函数的关系

请问,如何使用C语言在屏幕上输出一行字呢?你可能会说,这还不简单,直接printf,可是大家想过没有这个printf到底是怎么来的。

从我的角度上讲,我的要求就是要在屏幕上输出字,屏幕就是硬件,所以现在就是用户要操作硬件,很显然如果直接操作显然是不可能的,所以必须要经过操作系统,但是操作系统非常复杂,对于非专业人士来讲,随意操作还可能造成系统毁坏。所以系统一般是封装的,但是它会向外提供一些接口(也就是函数)称为系统调用接口。但是很不幸的事实是要很好的使用系统调用也是需要一定的知识的,所以一些开发者会对部分系统调用进行一定的封装,形成库(lib),有了库就有利于上层开发者更好的开发。

也就是说我现在正在开发,有一个需求是想要在屏幕上输出一行字,由于不便于直接去操作系统,虽然操作系统提供了我一些系统调用接口,但是这些接口依旧很难使用或者很复杂(因为就连屏幕打印个字都这么复杂,更不要说其他操作了),所以有了这个需求,一些开发者为了帮我实现整个功能,把某些系统调用进行封装,封装为一个函数叫做printf,而对于我来说,就可以直接使用这个函数了。

经过以上叙述可以总结系统调用和库函数如下

  • 从开发角度上看,操作系统会对外表现为一个整体,但是会暴露自己的部分接口,以供上层开发者使用——系统调用
  • 系统调用在使用上功能比较繁琐,对用户水平要求也比较高。所以,一些开发者会将部分系统调用进行适度封装,从而形成库,有了库,就便于上层用户使用或者开发者进行二次开发。

五:操作系统的运行环境

首先用户通过操作系统运行上层程序,此上层程序的运行依赖于操作系统的底层管理程序提供服务支持,当需要管理程序服务时,系统则通过硬件中断进入核心态,运行管理程序;当然也有可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入核心态。管理程序运行结束时,用户程序需要继续运行,此时通过相应的保存的程序现场退出终端处理程序或异常处理程序,返回断点继续执行


传递系统调用参数->执行陷入指令(用户态) -> 执行系统调用相应服务程序(核心态)->返回用户程序

  • 陷入指令是在用户态下执行的,执行陷入指令之后立即引发一个内中断,从而CPU进入核心态
  • 发出系统调用请求是在用户态,而对系统调用的相应处理是在核心态下进行
  • 陷入指令是唯一一个只能在用户态下执行,而不能在核心态下执行的指令

以上是关于(王道408考研操作系统)第一章计算机系统概述-第一节5:系统调用的主要内容,如果未能解决你的问题,请参考以下文章

(王道408考研操作系统)第一章计算机系统概述-第一节2:操作系统的发展史

(王道408考研操作系统)第一章计算机系统概述-第一节1:操作系统基本概念以及目标和功能

(王道408考研操作系统)第一章计算机系统概述-第一节3:操作系统的运行机制与体系结构

专栏必读王道考研408操作系统万字笔记(有了它不需要你再做笔记了):各章节内容概述导航和思维导图

专栏必读王道考研408计算机组成原理万字笔记(有了它不需要你再做笔记了):各章节内容概述导航和思维导图

网络层-第一二节:网络层概述及其提供的服务