Chapter 3 用户界面
3.1 用户环境
用户环境指的是计算机用户工作的软件环境,包括命令行环境、桌面环境、相关的用户使用手册。
用户环境的构造指的是按照用户的要求和硬件特性,安装和配置好操作系统,为用户提供必要的操作命令或图形界面,并使其工作方式和交互方式合理高效,方便用户使用计算机完成相应的工作。
3.2 用户界面概念
用户界面(UI)是用户与操作系统内核进行交互和信息交换的媒介,其目的是让用户能够更加方便、高效、安全、可靠地操作计算机的软件和硬件,并完成预期的工作。用户界面通常分为操作界面和系统调用。
3.3 操作命令
操作界面:用户可以通过操作界面直接或间接地控制自己的作业或获得操作系统提供的服务。操作界面包括操作命令、批处理命令和图形用户界面三种典型形式。
- 图形用户界面,GUI,包含窗口、图标、按钮等元素。
- 操作命令,一般通过命令行完成,用户在控制台输入命令与操作系统交互。
- 批处理与脚本程序,在控制台环境下自动处理一批命令,如执行windows批处理程序或linux shell脚本程序。
shell是操作系统与用户交互的页面,其本身不执行命令,而仅仅是组织和管理命令,shell脚本是Shell上可执行命令序列的集合。
Linux Bash有代码的自动补全功能(Tab键),Bash不区分变量类型,其中所有变量均为字符串,只有当变量中全为数字时其才为一个整数变量。
重定向与管道:在Linux中,标准输入输出以文件形式存在,分别为0(标准输入)、1(标准输出)、2(标准错误)。命令的输入缺省来自于键盘(文件0),输出缺省到达控制台命令行(文件1、2)。通过重定向可以将输入输出定向到其他地方如文件中。
- < 为输入重定向符号,将命令输入由键盘改为由其他文件等,相当于将文件中的内容输入到了控制台。
- > 为输出重定向符号
- >> 符号也是输出重定向,与>不同的是一个符号重定向到文件时会首先清空文件,而两个符号会在后面追加。
- 2>和2>>均为错误重定向,将命令的错误重定向到某个文件中。
- &>为输出与错误组合重定向,即将原来输出到文件1和2的内容均重定向到别的位置。
管道:将一个程序的输出作为另一个程序的输入。管道操作符"|"。
脚本(Script)通过类似程序的方式执行具有一定逻辑顺序的命令序列完成较复杂的功能和人机交互。脚本程序保存在文本文件中,是Shell命令语句的集合。脚本文件中所有命令按照顺序执行,凡是能够在shell中直接执行的命令,都可以写在脚本中,脚本中还可以使用一些shell中不能使用的命令。执行shell脚本需要可执行权限:chmod +x。
运行脚本程序的方法:
- 直接运行(缺省版本的shell)
- 使用某一个特定版本的shell运行脚本
- 在脚本文件首行指定文件shell(
#!/bin/bash
)
脚本文件中支持变量定义、流程控制、函数、调试方法。
3.4 系统调用
系统调用是操作系统内核为应用程序提供的服务,是应用程序与操作系统之间的接口。
系统调用一般涉及核心资源或硬件的操作,运行于核态,在调用时产生中断,这种中断是自愿中断、软件中断、内部中断。
系统调用的形式:通过访管指令SVC N,N即为系统调用编号,调用过程发生中断。执行该指令后CPU首先保护现场,然后由中断服务程序查找N号系统调用的入口地址,接着去执行这个系统调用,执行完之后恢复现场。在DOS系统中使用INT 21H进行系统调用(AH寄存器存放系统调用号,这里的INT指令就相当于SVC指令),Linux中为INT 80H(EAX存放系统调用号)。
Linux系统调用的工作原理:
- 应用程序使用隐式方式调用系统调用,这个系统调用将被编译器编译为含有INT 80H的代码。
- 在内核system_call函数部分查找系统调用的入口地址。
- 具体实现系统调用。
系统调用处理函数指针表sys_call_table[]。