1.3.3 计算机系统的不同用户
计算机系统完成的所有任务都是通过执行程序中的指令来实现的。计算机系统由硬件和软件两部分组成。硬件(hardware)是物理装置的总称,人们看到的各种芯片、板卡、外设、电缆等都是计算机硬件。软件(software)包括运行在硬件上的程序和数据以及相关的文档。程序(program)是指挥计算机如何操作的一个指令序列,数据(data)是指令操作的对象。根据软件的用途,一般将软件分成系统软件和应用软件两大类。
系统软件(system software)包括为有效、安全地使用和管理计算机以及为开发和运行应用软件而提供的各种软件,介于计算机硬件与应用程序之间,它与具体应用的关系不大。系统软件包括操作系统(如Windows、UNIX、Linux)、语言处理系统(如Visual Studio、GCC)、数据库管理系统(如Oracle)和各类实用程序(如磁盘碎片整理程序、备份程序)。操作系统(Operating System,OS)主要用来管理整个计算机系统的资源,包括对它们进行调度、管理、监视和服务等,操作系统还提供计算机用户和硬件之间的人机交互界面,并提供对应用软件的支持。语言处理系统主要用于提供一个用高级语言编程的环境,包括源程序编辑、翻译、调试、链接、装入、运行等功能。
应用软件(application software)指专门为数据处理、科学计算、事务管理、多媒体处理、工程设计以及过程控制等应用所编写的各类程序。例如,人们平时经常使用的电子邮件收发软件、多媒体播放软件、游戏软件、炒股软件、文字处理软件、电子表格软件、演示文稿制作软件等都是应用软件。
按照在计算机上完成任务的不同,可以把使用计算机的用户分成以下4类:最终用户、系统管理员、应用程序员和系统程序员。
使用应用软件完成特定任务的计算机用户称为最终用户(end user)。大多数计算机使用者都属于最终用户。例如,使用炒股软件的股民、玩计算机游戏的人、进行会计电算化处理的财会人员等。
系统管理员(system administrator)是指利用操作系统、数据库管理系统等软件提供的功能对系统进行配置、管理和维护,以建立高效、合理的系统环境供计算机用户使用的操作人员。其职责主要包括:安装、配置和维护系统的硬件和软件,建立和管理用户账户,升级软件,备份、恢复业务系统和数据等。
应用程序员(application programmer)是指使用高级编程语言编制应用软件的程序员;系统程序员(system programmer)则是指设计和开发系统软件的程序员,如开发操作系统、编译器、数据库管理系统等系统软件的程序员。
很多情况下,一个人可能既是最终用户,又是系统管理员,同时还是应用程序员或系统程序员。例如,对于一个计算机专业的学生来说,有时需要使用计算机玩游戏或网购物品,此时他是最终用户的角色;有时需要整理计算机磁盘中的碎片、升级系统或备份数据,此时他是系统管理员的角色;有时需要完成老师布置的应用程序开发作业,此时他是应用程序员的角色;有时可能还需要完成老师布置的操作系统或编译程序等软件的开发作业,此时他是系统程序员的角色。
计算机系统采用层次化的体系结构,不同用户工作在不同的系统结构层,他们所看到的计算机的概念性结构和功能特性是不同的。
1.最终用户
早期的计算机非常昂贵,只能由少数专业人员使用。随着20世纪80年代初个人计算机的迅速普及以及20世纪90年代初多媒体计算机的广泛应用,特别是互联网技术的发展,计算机已经成为人们日常生活中的重要工具。人们利用计算机播放电影、玩游戏、炒股、发邮件、查信息、打电话等,计算机的应用无处不在。因而,许多普通人都成了计算机的最终用户。
计算机最终用户通过键盘和鼠标等外设与计算机交互,通过操作系统提供的用户界面启动并执行应用程序或系统命令,从而完成用户任务。因此,最终用户能够感知到的只是系统提供的简单人机交互界面和安装在计算机中的相关应用程序。
2.系统管理员
相对于普通的计算机最终用户,系统管理员作为管理和维护计算机系统的专业人员,对计算机系统的了解要深入得多。系统管理员必须能够安装、配置和维护系统的硬件和软件,能够建立和管理用户账户,需要时能够升级硬件和软件以及备份、恢复业务系统和数据等。也就是说,系统管理员应该非常熟悉操作系统提供的有关系统配置和管理方面的功能,很多普通用户无法解决的问题,系统管理员必须能够解决。
因此,系统管理员能感知到的是系统中的部分硬件层面、系统管理层面以及相关实用程序和人机交互界面。
3.应用程序员
应用程序员大多使用高级程序设计语言编写程序。应用程序员所看到的计算机系统除了计算机硬件、操作系统提供的应用编程接口、人机交互界面和实用程序外,还包括相应的程序语言处理系统。
在程序语言处理系统中,除了翻译程序外,通常还包括编辑程序、链接程序、装入程序以及将这些程序和工具集成在一起而构成的集成开发环境(Integrated Development Environment,IDE)等。此外,语言处理系统中还包括可供应用程序调用的各类函数库。
4.系统程序员
系统程序员在开发操作系统、编译器和实用程序等系统软件时,需要熟悉计算机底层的相关硬件和系统结构,甚至可能需要直接与计算机硬件和指令系统打交道。比如,直接对各种控制寄存器、用户可见寄存器、I/O控制器等硬件进行控制和编程。因此,系统程序员不仅要熟悉应用程序员所使用的所有语言和工具,还必须熟悉指令系统、机器结构和相关的机器功能特性,有时还要直接使用汇编语言等低级语言编写程序代码。
在计算机技术中,若一个存在的事物或概念从某个角度看似乎不存在,则称其透明。通常,在一个计算机系统中,系统程序员所看到的底层机器级的概念性结构和功能特性对高级语言程序员(通常就是应用程序员)来说是透明的,即看不见或感觉不到的。因为对应用程序员来说,他们直接用高级语言编程,不需要了解有关汇编语言的编程问题,也不用了解机器语言中规定的指令格式、寻址方式、数据类型和格式等指令系统方面的问题。
可以认为计算机系统是由各种硬件和各类软件采用层次化方式构建的分层系统,不同计算机用户工作所在的系统结构层如图1.11所示。
从图1.11中可看出,ISA处于硬件和软件的交界面上,硬件的所有功能都由ISA集中体现,软件通过ISA在计算机上执行。所以,ISA是整个计算机系统的核心部分。
图1.11 计算机系统的层次化结构
ISA层下面是硬件部分,上面是软件部分。硬件部分包括CPU、主存和输入/输出设备等主要功能部件,这些功能部件通过数字逻辑电路设计实现。软件部分包括低层的系统软件和高层的应用软件,汇编程序、编译程序和操作系统等这些系统软件直接在ISA上实现,系统程序员所看到的机器属性属于ISA层面的内容,所看到的机器是配置了指令系统的机器,称为机器语言机器,工作在该层次的程序员称为机器语言程序员;系统管理员工作在操作系统层,所看到的是配置了操作系统的虚拟机器,称为操作系统虚拟机;汇编语言程序员工作在提供汇编程序的虚拟机器级,所看到的机器称为汇编语言虚拟机;应用程序员大多工作在提供编译器或解释器等翻译程序的语言处理系统层,因此,应用程序员大多用高级语言编写程序,因而也称为高级语言程序员,所看到的虚拟机器称为高级语言虚拟机;最终用户则工作在最上面的应用程序层。