返回顶部

操作系统的用户接口

用户工作环境

用户工作环境的形成

  • 系统提供各种硬件、软件资源
  • 设计并提供使用方便的命令集合
  • 将OS装入计算机并初始化,形成可供使用的工作环境

系统安装

  • Windows + 虚拟机Linux(40G+)
  • 单独Linux分区

系统生成

定义:所谓系统生成,就是指为了满足物理设备的约束和需要的系统功能,通过组装一批模块来产生一个清晰的、使用方便的操作系统的过程。

系统生成的内容:根据硬件部件确定系统构造的参数,编辑系统模块的参数,并且连接系统模块成为一个可执行的程序。

操作系统的初启

系统引导的方式

  • 现场独立引导方式(滚雪球方式):OS核心文件存储在系统本身的存储设备中,由系统自己将OS核心程序读入主存并运行,建立一个操作环境。

  • 辅助下装方式

    OS主要文件不放在系统本身的存储设备中,在系统启动后执行下装操作,从另外的计算机系统中将操作系统常驻部分传送到该计算机中,使它形成一个操作环境。

独立引导方式(滚雪球方式)的过程

  • 初始引导:系统加电;执行初始引导程序,对系统硬件和配置进行自检,保证系统没有硬件错误;从磁盘中读入操作系统引导程序,并将控制权交给该程序模块。
  • 引导程序执行:引导程序执行,将操作系统核心文件读入内存,并将控制交给核心的初始化程序。
  • 核心初始化:初始化系统数据结构及参数;系统加电建立进程有关的数据结构;获得自由存储空间的容量,建立存储管理的数据结构;建立系统设备和文件系统的数据结构;初始化时钟。
  • 系统初始化:完善OS的操作环境,装载命令处理程序(或图形用户界面),并初始化;在多用户系统中,为每个终端建立命令解释进程,使系统处于命令接收状态。

Linux系统初启

Linux系统是以滚雪球的方式启动。

  • 系统加电或复位:对主存中所有的数据清零,对内存进行校验,若无错,CS:IP→BIOS入口。
  • BIOS启动:在ROM中的引导程序放在固定位置: FFFF: 0000 CPU从这里开始执行;上电自检,对硬件设备进行检测和连接,并将测得的数据送入BIOS数据区;从盘中读入Boot Loader(引导程序),从硬盘启动时,读入零柱面零磁道1扇区MBR(Master Boot Record),将控制权交给Boot Loader。
  • Loader(引导程序):功能:将OS读入内存,并将控制权交给OS的初始化程序。
  • 系统核心初始化

应用程序的处理

应用程序的处理步骤

  • 编辑:建立一个新文件,或对已有的文件中的错误进行修改。
  • 编译:将源程序翻译成浮动的目标代码。
  • 连接:主程序和其他所需要的子程序和例行程序连接装配在一起,使之成为一个可执行的、完整的主存映像文件。
  • 运行:将主存映像文件调入主存,启动有运行,得出计算结果。

示意图:

连接类型

  • 静态连接:一个源程序经编译后,生成一个可重定位的目标模块,并产生内部符号表和外部调用表,供连接程序(Link)使用。

    • 内部符号表:本模块可以被其他程序调用的入口点。
    • 外部调用表:本模块要调用的外部的程序模块名。
    • 连接需要做的工作:将各模块连接成为一个整体;构造全程符号表,在其中填写模块的逻辑地址;查找各程序的外部调用表,填入对应调用函数的地址。

    静态连接的缺点:静态连接将所需的外部函数链接到目标文件中形成为一个可执行文件。若多个应用程序都调用了同一个库中的外部函数,那么,多个应用程序的目标文件中都会包含这个外部函数对应的代码。

  • 动态链接:动态连接不需要将外部函数链接到目标文件中。而是在应用程序中需要调用外部函数的地方作记录,并说明要使用的外部函数名和引用入口号。——形成函数调用链表

    所需支持——DLL(动态链接库)

    当 Windows的装载程序将应用程序和DLL装入主存后,装 载程序会遍历函数调用链表,将DLL中函数在主存的入口(段:偏移)填入链表中的每个结点。

用户接口

操作系统的用户界面:操作系统的用户界面 (或称接口) 是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。

操作系统提供的用户界面

  • 操作界面(命令接口):用户使用操作界面来组织工作流程和控制流程的运行。
  • 系统功能服务界面(程序接口):用户程序在其运行过程中,使用系统功能调用来请求操作系统的服务。

操作命令与操作系统类型的关系

  • 作业控制语言——批处理操作系统
  • 键盘命令——分时操作系统、个人计算机操作系统
  • 图形用户界面——分时操作系统、个人计算机操作系统

实例操作系统提供的用户界面

  • MS-DOS ——键盘命令、系统功能调用
  • Windows——图形用户界面、系统功能调用
  • Linux(UNIX)——键盘命令、系统功能调用

作业控制语言

脱机方式下操作系统提供作业控制语言(JCL)。

定义:是一种命令语言,包括了对作业处理的命令和资源请求命令。

批处理系统中作业的组织

  • 作业申请:作业名、需用CPU时间,最迟完成时间、资源请求等
  • 操作说明书:编辑命令、编译命令、连接命令、运行命令等
  • 程序与数据

键盘命令

系统为联机用户(交互作业的用户)提供键盘命令。

定义:是操作系统为联机用户提供的一种操作命令,用户通过这组命令直接控制和干预程序的运行。

键盘命令的功能:

  • 分时操作系统——用于注册、通信、注销的各类命令。
  • 个人计算机操作系统——用于通信的各类命令。

图像用户界面

图形化用户界面是良好的用户交互界面,它将菜单驱动、图符驱动、面向对象技术等集成在一起,形成一个图文并茂的视窗操作环境。

菜单驱动方式

  • 是面向屏幕的交互方式,它将键盘命令以屏幕方式来体现。
  • 命令和系统能完成的操作,用菜单分类分窗口地在屏幕上列出。
  • 用户像点菜一样选择命令或某种操作,以控制系统去完成指定的工作。
  • 菜单系统的类型有多种,如下拉式菜单,上推式菜单和随机弹出式菜单。

图符驱动方式

  • 是一种面向屏幕的图形菜单选择方式
  • 图符也称图标,是一个小小的图符符号。它代表操作系统中的命令、系统服务、操作功能、各种资源。
  • 当需要启动系统命令、请求系统资源或操作功能时,可以选择代表它的图符,并借助标记输入设备(鼠标),采用鼠标的点击和拖拽功能,完成命令和操作选择及执行。

图形化的用户界面的特点

  • 所有程序以统一的窗口形式出现
  • 提供统一的菜单格式
  • 系统资源、系统命令、操作功能以图标表示
  • 统一的操作方法

系统功能调用

什么是系统功能调用

操作系统如何为用户提供服务:操作系统提供实现各种功能的例行子程序。

如何调用操作系统服务功能

  • 采用统一进管方式——系统提供 访管指令、访管中断
  • 访管指令(自愿进管指令)(svc n 表示机器访问指令的操作码记忆符,n为地址码)
  • 访管中断:当处理机执行到访管指令时发生中断,该中断称为访管中断,它表示正在运行的程序对操作系统的某种需求。操作系统提供实现各种功能的例行子程序,其中的每一个功能对应访管指令的一个功能号。

系统调用:系统功能调用是用户在程序一级请求操作系统服务的一种手段,它是带有一定功能号的“访管指令”。其功能是由操作系统中的程序完成的,即由软件方法实现的。

系统调用与库函数的区别

  • 系统调用代码属于OS(驻留在内存),库函数由开发软件提供,由编译工具链入用户程序。
  • 系统调用代码和执行引起CPU状态的变化:用户态→核心态,库函数的执行不会引起CPU状态的变化:用户态
  • 系统调用减小了用户程序大小

系统调用的组织实现

不同的操作系统,系统调用实现的具体方法有所不同,但其实质是相同的:

  • 每个系统调用对应一个执行程序段;
  • 系统调用程序段登记在一张表,每个系统调用对应一个系统调用号;
  • 每个系统调用要求一定数量的输入参数和返回值

示意图:

Linux系统调用

Linux系统调用号就是系统调用入口表中位置序号,系统调用通过接口函数将调用号传给内核,内核转入系统调用控制程序再通过调用号位置来定位核心函数,Linux内核的陷入由0x80(int80h)中断实现。

Linux系统调用控制程序的功能

  • 取系统调用号,检验合法性
  • 建立调用堆栈,保护现场信息
  • 根据系统调用号定位核心函数地址
  • 根据通用寄存器内容,从用户栈中取入口参数
  • 核心函数执行,把结果返回应用程序
  • 执行退栈操作,判别调度程序scheduler是否要被执行

Linux系统功能调用过程

UNIX/Linux有关进程管理的系统调用

  • fork 建立一个进程

  • exec 执行一个文件

  • wait: 等待子进程

  • exit: 进程中止

  • brk: 改变用户数据区 大小

  • sleep: 等待一段时间

  • kill: 发送软中断

  • signal:设置软中断处理程序

  • alarm:在指定时间后发送软中断

  • pause:等待软中断

  • nice:改变进程优先数计算结果

  • ptrace:跟踪子进程

UNIX/Linux与系统状态有关的系统调用

  • getuid: 取用户号
  • setuid: 设置用户号
  • getgid: 取用户组号
  • setgid: 设置用户组号
  • time: 取日历时间
  • stime: 设置日历时间
  • times: 取进程执行时间
  • gtty: 读当前终端tty部 分信息
  • stty: 设置当前终端tty 部分信息
  • stat: 读取文件状态(i 节点)
  • sync: 使主存映像与磁 盘文件信息一致

文件管理相关系统调用

  • open: 打开文件
  • close: 关闭文件
  • read: 读文件
  • write: 写文件
  • lseek: 修改读写指针
  • creat: 建立并打开文件
  • link: 联结文件
  • unlink: 删除文件
  • chdir: 改变当前目录
  • chmod: 改变文件属性
  • pipe: 建立并打开管道文件
  • chown: 改变文件主和用户组
  • dup: 产生一个文件描述符
posted @ 2022-01-01 20:49  cherish-lgb  阅读(776)  评论(0编辑  收藏  举报