操作系统作为用户和计算机硬件系统之间的接口,主要有两种:
(1)命令接口

主要分为联机控制方式和脱机控制方式;

联机控制又称交互式命令接口,适用于分时和实时系统的接口;由一组键盘操作指令组成,用户通过控制台或终端输入操作命令,向系统提出各种服务请求;

脱机控制又称批处理命令接口,适用于批处理系统,由一组作业控制命令组成;脱机用户不能直接干预作业的运行,应连同作业一起提交给系统;

(2)程序接口

程序控制接口是一组系统调用命令(简称系统调用,也称广义指令)组成;用户通过在程序中使用这些系统调用命令请求操作系统为其提供服务。用户可以直接在程序中使用这组系统调用命令向系统提出各种服务要求,如使用各种外部设备,进行有关磁盘文件的操作,申请分配和回收内存以及其他各种控制要求;

操作系统的体系架构分为用户态和内核态;如图:

操作系统运行环境可以理解为:用户通过操作系统运行上层程序(如系统提供的命令解释程序或用户自编程序),这个上层程序的运行依赖于操作系统的底层管理程序提供支持服务,当需要管理程序服务时,系统则通过硬件中断机制进入内核态,运行管理程序;也可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入内核态。

系统调用就是用户在程序中调用操作系统所提供的一些子功能,系统调用可以被看做特殊的公共子程序。系统中的各种共享资源都由操作系统共同管理;因此在用户程序中,凡是与资源相关的操作(如存储分配,进行I/O传输以及管理文件等),都必须通过系统调用方式向操作系统提供服务请求,并由操作系统代为完成。

当中断或异常发生的时候,运行用户态的cpu就会进入内核态,这是通过硬件实现的(例如,用一个特殊的寄存器的一位来是表示cpu所处的工作状态,0表示内核态,1表示用户态,要进入内核态,只需要将该位置0)

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

1.设备管理。完成设备的请求和释放,以及设备启动等功能;

2.文件管理。完成文件的读,写,创建及删除等功能;

3.进程控制。完成进程的创建,撤销,阻塞和唤醒等功能;

4.进程通信。完成进程之间的消息传递或信号传递等功能;

5.内存管理。完成内存的分配,回收以及获取作业占用内存大小及始址功能;

举几个用户态进入内核态的例子:

1.用户程序要求操作系统的服务,即系统调用;

2.发送一次中断

3.用户程序中产生了一次错误状态;

4.用户程序中企图执行一条特权指令;

5.从核心态转向用户态由一条特殊指令实现,这条指令也是特权命令。一般是中断返回指令;

注意:用户态进入内核态,不仅仅是状态需要切换,而且,所使用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的;

转载于:https://www.cnblogs.com/smailjunk/p/10414748.html

由系统调用想起的。。。相关推荐

  1. linux启动程序api编程,Linux编程中关于API函数与系统调用间关系

    用户态xyz()函数,内核最终一般会调用形如sys_xyz()的服务例程来处理(不过也有一些例外,这里暂时不考虑) 函数xyz()是直接提供给用户编程使用的.图中"SYSCALL" ...

  2. Linux 编程中的API函数和系统调用的关系【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...

  3. 【Linux系统编程】 Linux系统调用概述

    系统调用概述 系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组"特殊"接口.用户程序可以通过这组"特殊"接口来获得操作系统内核提供的服务,比如用户可以 ...

  4. linux c 系统调用

    摘自 http://www.cnblogs.com/luxf/archive/2010/07/01/1769303.html 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派 ...

  5. Linux系统调用相关概念

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

  6. linux内核编译及添加系统调用(hdu)_浅谈关于Linux内核write系统调用操作的原子性

    Linux系统的write调用到底是不是原子的.网上能搜出一大堆文章,基本上要么是翻译一些文献,要么就是胡扯,本文中我来结合实例来试着做一个稍微好一点的回答. 先摆出结论吧.结论包含两点,即write ...

  7. linux系统列表,Linux常用系统调用列表-20210415054405.docx-原创力文档

    Linux Linux常用系统调用列表作者:雷震 2002年3月 本文列出了大部分常见的Linux系统调用,并附有简要中文说明. 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调 ...

  8. [Linux]Linux系统调用列表

    本文列出了大部分常见的Linux系统调用,并附有简要中文说明. 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的 ...

  9. hook系统调用(一):爬取MSDN官网上的API调用并改为自己的API(c++正则表达式的应用)

    前言:最近为了完成课题,需要写系统API的钩子程序.然而系统API种类繁多,手动调配是不可能的.而只改写一些API来应付课题又不甘心,想起之前读某位大佬的论文,提到了写爬虫程序并改写的思路,遗憾的是并 ...

最新文章

  1. Facebook首席工程负责人胡鲁辉:数字化2.0的理念、架构与业务模型丨鲸犀峰会
  2. linux vim五则运算编程,第3章--vi-vim编辑器的使用.ppt
  3. Spring 源码分析 spring-core
  4. 调试 ASP 程序脚本
  5. 学号 20175212 《Java程序设计》第3周学习总结
  6. java dumpheap_java程序性能分析之thread dump和heap dump
  7. 一个简易的数字输入框组件
  8. 这里是强化学习入门,的入门 | 绝对新手友好
  9. [Everyday Mathematics]20150112
  10. 计算机二级vfp教程云盘,全国计算机等级考试二级VFP教程.doc
  11. linux设备驱动的实现与理解
  12. Kinect v2保存图像和深度图序列
  13. 数字图像处理第二章——数字图像基础
  14. word2016论文不同章节设置页眉页码方法
  15. Python之input()函数用法,如何接收单行或多行的输入多个参数
  16. 【生成对抗网络 论文泛读】……pix2pix pix2pixhd……
  17. iptables之state模块使用
  18. 【_ 記 】各类邮箱POP3和SMTP服务器地址和端口
  19. 七校联合NewStarCTF 公开赛赛道WEEK2 web wp
  20. 2021年高压电工考试报名及高压电工最新解析

热门文章

  1. 突然!锤子科技天猫官方旗舰店商品全线下架 店铺撤店?!
  2. 在相册查看保存的图片
  3. python mypy类型检查_Python中类型检查的详细介绍
  4. 使用libjpeg库在LCD上显示图片
  5. 【kafka】kafka 数据重复的一个 案例
  6. 【ElasticSearch】Es 源码之 ResponseCollectorService 源码解读
  7. 95-40-115-java.util.concurrent-线程-AbstractExecutorService
  8. 【Java】java 实现 线程交替输出
  9. java : JSR107缓存规范
  10. Spring : 依赖注入(IoC)控制反转