【操作系统】操作系统接口

 

用户接口 

  联机命令类型

  • 系统访问类:如注册命名Login;
  • 磁盘操作类:如磁盘格式化命令Format,复制整个软盘命令Diskcopy,软盘比较命令Diskcomp,备份命令Backup;
  • 文件操作类:如显示文件命令type,拷贝文件命令copy,文件比较命令comp,重新命名命令Rename,删除文件命令erase;
  • 目录操作命令:如建立子目录命令mkdir, 显示目录命令dir,删除子目录命令rmdir,显示目录结构命令tree, 改变当前目录命令chdir;
  • 其他命令:如输入输出重定向命令,管道连接,过滤命令,批命令。

  键盘终端处理程序  

  为了实现人机交互,还须在微机或终端上配置相应的键盘终端处理程序,它应具有下述几方面的功能:

  • 接收用户从终端上打入的字符。
  • 字符缓冲,用于暂存所接收的字符。
  • 回送显示。
  • 屏幕编辑。
  • 特殊字符处理。

  命令解释程序

  终端处理程序把用户键入的信息送键盘缓冲区中保存。一旦用户键入回车符,便立即把控制权交给命令处理程序。命令解释程序的主要作用是在屏幕上给出提示符,请用户键入命令,然后读入该命令,识别命令,再转到相应命令处理程序的入口地址,把控制权交给该处理程序去执行,并将处理结果送屏幕上显示。若用户键入的命令有错,而命令解释程序未能予以识别,或在执行中间出现问题时,则应显示出某一出错信息。

系统调用

  系统调用提供了用户程序和操作系统之间的接口,应用程序通过系统调用实现其与OS的通信,并可取得它的服务。系统调用不仅可供所有的应用程序使用,而且也可供OS自身的其它部分,尤其是命令处理程序使用。系统调用可分为:进程控制、文件操纵、通信管理、设备管理和信息维护等几大类。

  计算机设置了两种状态:系统态(也称为管态或核心态)和用户态(也称为目态)。操作系统在系统态运行,而应用程序只能在用户态运行。处理机会在系统态和用户态间切换。

  相应地,CPU的指令集分为特权指令和非特权指令两类。特权指令是在系统态时运行的指令,是关系到系统全局的指令;非特权指令是在用户态时运行的指令。

  系统调用和一般调用的区别

  • 运行在不同的系统状态
  • 状态的转换通过软中断进入
  • 返回时需要对进程做优先级分析,只有当其优先级最高时才继续执行,否则重新调度。
  • 嵌套调用时系统一般对深度有限制

  标准POSIX(Portable Operating System IX),也称为“基于UNIX 的可移植操作系统接口”。  

 

   系统调用是通过中断机制实现的,并且一个操作系统的所有系统调用都通过同一个中断入口来实现。当应用程序使用OS的系统调用时,产生一条相应的指令,CPU 在执行这条指令时发生中断,并将有关信号送给中断和陷入硬件机构,该机构收到信号后,启动相关的中断与陷入处理程序进行处理,实现该系统调用所需要的功能。中断分为外中断和内中断,是指由于外部设备事件所引起的中断,如通常的磁盘中断、打印机中断等;而内中断(也称陷入)则是指由于CPU 内部事件所引起的中断,如程序出错(非法指令、地址越界)、电源故障等。内中断(trap)也被译为“捕获”或“陷入”。通常,陷入是由于执行了现行指令所引起的;而中断则是由于系统中某事件引起的,该事件与现行指令无关。由于系统调用引起的中断属于内中断,因此把由于系统调用引起中断的指令称为陷入指令。

  每条系统调用一个唯一的系统调用号。给系统调用传递参数的方式有三种:陷入指令自带参数、直接将参数送入相应的寄存器中、参数表方式(将系统调用所需的参数放入一张参数表中,再将指向该参数表的指放在某个指定的寄存器中)。

  系统调用处理步骤:

  1. CPU从用户态转为系统态,保护CPU现场,将相关内容压栈;
  2. 分析系统调用类型,找到子程序入口,交由子程序执行;
  3. 执行完后恢复被中断的CPU现场。

UNIX系统调用

  进程控制

  • 创建进程fork:创建一个子进程,它继承了父进程几乎所有的属性,并具有与其父进程基本上相同的进程映像。
  • 终止进程exit:进程实现自我终止,通常,在父进程创建子进程时,便在子进程的末尾安排一条exit系统调用。
  • 等待子进程结束wait:将调用者进程自身挂起,直至它的某一子进程终止为止。
  • 获得进程ID:用于获得进程标识符的系统调用。
  • 获得用户ID:用于获得用户ID 的系统调用。
  • 进程暂停pause:可用此系统调用将调用进程挂起,直至它收到一个信号为止。

  进程间通信

  • 消息机制。用户(进程)在利用消息机制进行通信时,必须先利用msgget系统调用来建立一个消息队列。若成功,便返回消息队列描述符msgid,以后用户便可利用msgid去访问该消息队列。用户(进程)可利用发送消息的系统调用msgsend向用户指定的消息队列发送消息;利用msgrcv系统调用从指定的消息队列中接收指定类型的消息。
  • 共享存储器机制。当用户(进程)要利用共享存储器机制进行通信时,必须先利用shmget系统调用来建立一个共享存储区,若成功,便返回该共享存储区描述符shmid。以后,用户便可利用shmid 去访问该共享存储区。进程在建立了共享存储区之后,还必须再利用shmat将该共享存储区连接到本进程的虚地址空间上。以后,在进程之间便可利用该共享存储区进行通信。当进程不再需要该共享存储区时,可利用shmdt 系统调用来拆除进程与共享存储区间的连接。
  • 信号量机制

  文件操作

  • 创建文件(creat)。系统调用creat的功能是根据用户提供的文件名和许可权方式,来创建一个新文件或重写一个已存文件。创建后的文件随即被打开,并返回其文件描述符fd。若creat执行失败,便返回“-1”。
  • 打开文件(open)。设置系统调用open的目的,是为了方便用户及简化系统的处理。open 的功能是把有关的文件属性从磁盘拷贝到内存中,以及在用户和指名文件之间建立一条快捷的通路,并给用户返回一个文件描述符fd。文件被打开后,用户对文件的任何操作都只须使用fd而非路径名。
  • 关闭文件(close)。当把一个文件用毕且暂不访问时,开用户程序与该文件之间已经建立的快捷通路
  • 读和写文件read 和write
  • 连接和去连接(link 和unlink)。为了实现文件共享,必须记住所有共享该文件的用户数目。为此,在该文件的索引结点中设置了一个连接计数i.link。每当有一用户要共享某文件时,须利用系统调用link 来建立该用户(进程)与此文件之间的连接,并对i.link 做加1操作。当用户不再使用此文件时,应利用系统调用unlink去断开此连接,亦即做i.link的减1 操作。当i.link 减1 后结果为0 时,表示已无用户需要此文件,此时才能将该文件从文件系统中删除。

  unix中有一个trap.S文件,它是中断和陷入总控程序。该程序用于中断和陷入的一般性处理。为提高运行效率,该文件采用汇编语言编写。为了实现系统调用的嵌套使用,在系统中还设置了两个指针,其一是系统调用参数表指针AP;再者,还须设置一个调用栈帧指针FP。当 trap.S完成被中断进程的CPU环境和AP及FP指针的保存后,将会调用公共处理程序trap.C,以继续处理本次的系统调用所要完成的公共处理部分(确定系统调用号、实现参数传送、转入相应的系统调用处理子程序)。

  

参考

《计算机操作系统》第三版  汤小丹

posted @ 2020-05-26 10:01  Chen沉尘  阅读(1622)  评论(0编辑  收藏  举报