由系统调用想起的。。。

操作系统作为用户和计算机硬件系统之间的接口,主要有两种:
(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