用户界面
1 用户工作环境
1.1 用户环境
操作系统应为用户提供一个工作环境,这个环境可为用户提供能满足不同工作需要的恰当的服务。
- 设计合理的操作命令
- 提供各种硬件资源,并要提供关于操作系统的使用说明
- 将操作系统装入计算机,并对系统参数和控制结构进行初始化,以使计算机系统能够为用户工作
1.2 系统生成和系统启动
(一)系统生成
系统生成是指在一台裸机上(或者安装新的操作系统)安装操作系统的过程。
一般情况下,系统生成的工作是由系统程序员来完成的,在系统生成的过程中涉及到机器的硬件配置和操作系统核心参数的设置。还涉及软件系统的版权的问题。
在微机上的系统生成用户是可以完成的,比如安装WINDOWS 98、LINUX、MINIX 、 UNIX。
(二)系统初启
在系统生成后,用户每次使用机器时必须启动系统。对于大、中、小型计算机来说,系统启动的工作是由系统程序员(或系统管理员来完成的),对于微机来说,是由用户自己完成。
WINDOWS 初启:
1、打开机器电源;
2、ROM中引导程序运行装入系统盘中的主引导块;
3、主引导块程序执行,启动DOS引导程序做系统初始化的工作;包括系统资源初始状态的设置、系统主要数据结构初始化、引导图形用户界面程序;
4、图形用户界面运行,生成用户的图形用户界面,系统初启工作完成。
Windows XP操作系统加载过程
从按下计算机开关启动计算机,到登入到桌面完成启动,一共经过了以下几个阶段:
预引导(Pre-Boot)阶段、引导阶段、加载内核阶段、初始化内核阶段、登陆
(1)预引导阶段
在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test (POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR (Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。
(2)引导阶段
Windows XP Professional引导阶段包含4个小的阶段。
1、计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。
2、接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。
在boot.ini中,主要包含以下内容:
其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。
如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。
3、 在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。
4、硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。
引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)。
(3)加载内核阶段
在加载内核阶段,ntldr加载称为Windows XP内核的ntokrnli.exe。系统加载了Windows XP内核但是没有将它初始化。接着ntldr加载硬件抽象层(HAL,hal.d11),然后,系统继续加载HKEY LOCAL MACHINE\system键,NTLDR读取键来决定哪一个Control Set将被加载。控制集中包含设备的驱动程序以及需要加载的服务。NTLDR加载HKEY—LOCAL—MACHINE\system\service\...下start键值为0的最底层设备驱动。当作为Control Set的镜像的CurrentControl Set被加载时,ntldr传递控制给内核,初始化内核阶段就开始了。
(4)初始化内核阶段
在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:
内核使用在硬件检测时收集到的数据来创建了HKEY—LOCAL—MACHINE~-IARDWARE键。
核通过引用HKEY LOCAL MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。
系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY-LOCAL-MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行
Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,至此,初始化内核完毕。
UNIX系统初启:
1、将指定的UNIX操作系统执行代码程序装入内存;
a. ROM中引导程序将主引导块装入指定内存,
启动主引导程序运行;
b. 主引导程序在系统盘上找到UNIX文件,
装入内存,并启动其初启程序;
2、存储空间及其管理机构初始化;
3、与设备有关的初始化;
4、与文件系统有关的初始化;
5、创建0#和1#进程;
6、1#进程创建各终端进程;
7、终端进程运行shell;
8、各用户终端上出现
login:
表示系统初启完成,等待用户键入命令。
1.3 运行一个用户程序的过程
使用计算机解决问题大致分为三个步骤:
1、建立数学模型;
2、选择计算方法;
3、编程序、 上机调试。
在操作系统中,把编好源程序后上机调试的工作分成四个步骤,称为四个作业步:
编辑 编译 连接 运行
2 操作系统的用户界面
2.1 操作系统提供两个接口
操作系统提供两个用户接口:
程序级:系统调用
操作命令级:作业控制语言( 早期批处理操作系统)、键盘命令(交互式操作系统,分时操作系统为代表)、图形用户接口(UNIX、WINDOWS)
(一)作业控制语言(JCL)
在批处理操作系统时代,用户使用机是采用脱机方式,即用户将自己的程序、数据和用作业控制语言编写的上机操作的步骤的程序一起提交给计算中心(或机房),隔一段时间去机房取结果。
作业控制语言是一种语言,用来写程序操作步骤的程序。
(二)键盘命令
分时操作系统诞生后,用户可以通过用户终端直接使用计算机,并且可与计算机“对话”,这就是所谓的交互式计算机。用户可通过键盘直接向计算机发布各种命令,计算机可接受、执行用户命令。
在教材中提到的三种类型,也有时将键盘命令按命令的功能分类,
如UNIX系统中把键盘命令分成:基本命令、高级命令。
DOS系统把键盘命令分为:
文件管理(COPY、COMP、TYPE、DEL、REN)
磁盘管理(FORMAT、CHKDSK、DISKCOPY、DISKCOMP)
目录管理(DIR、CD、MD、RD、TREE)
设备工作模式(CLS、MODE)
日期、时间、系统设置(DATE、TIME、VER、VOL)
运行用户程序(MASM、LINK、DEBUG)
3 系统服务请求
操作系统和用户的另一个接口是系统调用(system call)。 (教材上称作系统调用命令。)
例如,在程序中要求显示某个子目录,这时就不能让正在运行的程序退出,然后发出“DIR”命令。这就要求在程序中能直接使用“DIR”命令,这种直接使用操作系统命令的功能称为系统调用。
系统调用:系统调用是操作系统与用户的接口之一,用户在程序中使用系统调用请求操作系统的服务。(系统调用命令、进管指令、访管指令)。
程序中:open 打开文件
creat 创建文件
exit 进程终止(程序序结束)
close 关闭文件
系统调用是通过访管指令请求操作系统服务的,
PDP-11系统计算机的UNIX系统
TRAP n
微机系统windows 95/98 , NT MS-DOS
INT N
教材上称为自愿进管指令: SVC N
SVC (supervisor call) :自愿进管指令的操作码
N:为地址码
系统调用是通过访管指令实现的。在程序中,如果希望请求操作系统的服务(例如,打开一个文件,显示某个目录的内容等),就要执行一条访管指令(trap、int),系统处理这个中断,即为用户提供相应的服务(或者称响应用户的请求)。
注意:
在汇编程序中是显式地使用访管中断命令,trap、INT。在高级语言中(C语言)是隐式使用访管指令。
系统调用的实现
不同的操作系统,系统调用实现的具体方法有所不同,但其实质的特点是相同的:
1、每个系统调用对应一个系统调用号;
2、每个系统调用有一个对应的执行程序段;
3、每个系统调用要求一定数量的输入参数和返回值;
4、整个系统有一个系统调用执行程序入口地址表;
一、UNIX系统调用的使用
在UNIX系统中系统调用是自陷的一种。例如:某用户程序要求打开一个文件:
汇编语言程序中: trap 5
C语言程序中: open(“文件路径名,mode)
二、trap处理程序
trap处理程序是UNIX系统的自陷处理程序,负责处理所有的自陷(来自处理机内部的中断),其中包括系统调用的处理。
在处理系统调用时,首先把要求的参数传送到指定的存储区(user结构中),然后根据系统调用号查系统调用入口表,找到相应处理程序的入口地址,并启动执行,处理程序执行完成后,返回trap程序,trap程序返回中断自陷总控程序。
三、系统调用入口表
系统调用入口表是系统调用处理程序入口地址表,该表的第一个表目对应0号系统调用,第二个表目对应1号系统调用,如此类推。在老版本的UNIX系统中只有64个系统调用,在现代流行的UNIX系统版本中,一般有128个系统调用。
UNIX系统的系统调用入口表的定义如下:
struct sysent {
int count; /* 参数的个数 */
int (call)(); / 执行程序入口地址 */
} sysent[64];
UNIX系统的系统调用:
有关进程管理的系统调用
fork 创建一个进程
exec 执行一个可执行的文件
wait 等待子进程终止
exit 进程终止(自杀)
…
与文件有关的系统调用
open 打开一个文件 close 关闭文件
read 读文件 write 写文件
creat 创建文件 lseek 修改文件的读写指针
link 文件连接
unlink 撤除文件连接(删除文件)
……
与系统状态有关的系统调用
time 取日历时间
stime 设置日历时间
……
操作系统提供的用户包括系统功能调用和操作命令
(一)菜单驱动方式
(二)图符驱动方式
(三)图形化用户界面