我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Windows这个我们熟悉的不能再熟悉的系统。
我们每天都在用Windows操作系统,但是其实我们每天直接在打交道的并不是Windows操作系统的内核,而是Windows操作系统的人机交互界面,这个界面其实只是Windows操作系统的一个组件,在Linux上,我们使用Linux系统所使用的界面则只是Linux系统上的一个程序。所以说,我们接触的并不是这些系统的内核。久而久之,我们基本会慢慢把界面里所展示的直观的东西误认为是Windows操作系统本身,其实不是。
今天我们来重新审视Windows操作系统,看看Windows操作系统本身典型特征和主要功能。由Windows操作系统的功能,可以知道Windows操作系统提供的服务有下面这些:提供了一个用以执行程序的环境,提供的服务有程序执行、I/O操作、文件操作、资源分配与保护、错误检测与排除等。
1.Windows操作系统的并发性
讲并发性之前,我们必须搞清楚操作系统的并发性和并行性这两个既相似又有区别的概念。并行性是指两个或多个事件在同一时刻发生:而并发性是指两个或多个事件在同一时间间隔内发生。
在多道程序环境下,并发性是指宏观上在一段时间内有多道程序在同时运行,但在单处理器系统中,每一时刻仅有一道程序在执行,故微观上这些程序是交替执行的。(这里提到一个多道程序环境的概念,我发现现在很多大学的操作系统课程都不讲这个概念,我会在我后续的文章里再解释一下这个概念,大家先估且用字面意思理解)。
举一个例子,假如对于一个学生来说,去食堂吃饭和做作业是需要做的两件事,一般在早上7:00~7:30去食堂吃饭,7:30~11:30做作业,11:30~12:00再次去食堂吃饭,那么在7:00~12:00这个时间间隔内,去食堂吃饭和做作业是两件并发执行的任务;而某些优秀的同学可以一心二用,去食堂吃饭的同时可以做作业,则此时去食堂吃饭和做作业同时进行,即两个任务并行执行。程序的并发执行能有效改善系统的资源利用率,但会使系统复杂化,因此操作系统必须具有控制和管理各种并发活动的能力。
2.Windows操作系统的共享性
资源共享是指系统中的硬件和软件资源不再为某个程序所独占,而是供多个用户共同使用。并发和共享是Windows操作系统的两个最基本的特征,二者之间互为存在条件。一方面,资源的共享是以程序的并发执行为条件的,若系统不允许程序的并发执行,就不存在资源共享问题;另一方面,若系统不能对资源共享实施有效的管理,也肯定影响到程序的并发执行,甚至根本无法并发执行。根据资源性质的不同,可将资源共享方式分为两种,一种叫互斥共享,一种叫同时访问。
互斥共享。系统中可供共享的某些资源,如打印机、某些变量、队列等一段时间内只能供一个作业使用的资源,只有当前作业使用完毕并释放后,才能被其他作业使用。
同时访问。系统中的另一类资源,如磁盘、可重入代码等,可以供多个作业同时访问。虽然这种“同时”是指宏观上的“同时”,微观上可能是作业交替访问该资源,但作业访问资源的顺序不会影响访问的结果。
并发性和共享性是Windows操作系统最基本的特征。
3.Windows操作系统的虚拟性
在操作系统中,虚拟是指把一个物理上的实体变为若干个逻辑上的对应物,前者是实际存在的,后者是虚拟的,这只是用户的一种感觉。例如,在操作系统中引入多道程序设计技术后,虽然只有一个CPU,每次只能执行一道程序,但通过分时使用,在一段时间间隔内宏观上这台处理器能同时运行多道程序。它给用户的感觉是每道程序都有一个CPU为其服务。
多道程序设计技术可以把一台物理上的CPU虚拟为多台逻辑上的CPU。此外还有虚拟存储器(从逻辑上扩充存储器的容量)、虚拟设备(独占设备变为共享设备)等技术。
4.Windows操作系统的异步性
在多道程序环境中,由于资源等因素的限制,程序是以“走走停停”的方式运行的,就像公共车一样,到站了会停,有红灯了也停,然后又启动。系统中的每道程序何时执行、多道程序间的执行顺序以及完成每道程序所需的时间都是不确定的,因而也是不可预知的。
我们再来看看Windows操作系统的主要功能和提供的服务
如前所述,Windows操作系统的职能是负责系统中软硬件资源的管理,合理地组织计算机的工作流程,并为用户提供一个良好的工作环境和友好的使用界面。下面来说明Windows操作系统的五大基本功能:处理器管理、存储器管理、设备管理、文件管理和用户接口管理。
1.Windows操作系统的处理器管理
处理器管理的主要任务是对处理器的分配和运行实施有效的管理。在多道程序环境下,处理器的分配和运行是以进程为基本单位的,因此对处理器的管理可归结为对进程的管理。
进程管理应实现下述主要功能:
进程控制。负责进程的创建、撤销及状态转换。
进程同步。对并发执行的进程进行协调。
进程通信。负责完成进程间的信息交换。
进程调度。按一定算法进行处理器分配。
2.Windows操作系统的存储器管理
存储器管理的主要任务是对内存进行分配、保护和扩充。存储器管理应实现下述主要功能:
内存分配。按一定的策略为每道程序分配内存。
内存保护。保证各程序在自己的内存区域内运行而不相互干扰。
内存扩充。为允许大型作业或多作业运行,须借助虚拟存储技术去获得增加内存的效果。
3.Windows操作系统的设备管理
计算机外设的管理是操作系统中最庞杂、琐碎的部分。设备管理的主要任务是对计算机系统内的所有设备实施有效管理。设备管理应具有下述功能:
设备分配。根据一定的设备分配原则对设备进行分配。
设备并行工作。为了使设备与主机并行工作,还需采用缓冲技术和虚拟技术。
设备传输控制。实现物理的输入/输出操作,即启动设备、中断处理、结束处理等。
设备独立性。即用户程序中的设备与实际使用的物理设备无关。
4.Windows操作系统的文件管理
操作系统中负责信息管理的部分称为文件系统,因此称为文件管理。文件管理的主要任务就是有效地支持文件的存储、检索和修改等操作,解决文件的共享、保密和保护问题。文件管理应实现下述功能:
文件存储管理。负责对文件存储空间进行管理,包括存储空间的分配与回收等功能。
目录管理。目录是为方便文件管理而设置的数据结构,它能提供按名存取的功能。
文件操作管理。实现文件的操作,负责完成数据的读写。
文件保护。提供文件保护功能,防止文件遭到破坏。
5.Windows操作系统的用户接口管理
为方便用户使用操作系统,操作系统还提供了用户接口。操作系统是覆盖在硬件上的第一层软件,是计算机底层硬件和用户之间的接口,只有通过操作系统提供的接口才能完成用户或应用程序对系统硬件的访问。在Windows系统中提供了命令行和图形界面两种用户接口以及程序接口,也就是如下3种接口方式提供给用户使用。
Windows操作系统是架构在硬件上的第一层软件,是计算机底层硬件和用户之间的接口。利用操作系统,才能实现应用程序(或用户)对系统硬件的访问。任何操作系统都会向上层提供接口,操作系统接口是方便用户使用计算机系统的关键。操作系统的接口分为用户接口和程序接口两大类。用户接口又包括命令接口和图形接口。
命令接口。命令接口是以命令的方式使用系统的用户界面。操作系统提供了一组联机命令接口,用户在文本方式的界面上,通过键盘输入相关命令,获得操作系统的服务,控制用户程序的执行。命令执行的结果也以文本方式显示在界面上。命令接口的特点是效率高、灵活,但不易使用,需要记忆相关命令及语法。提供一组命令供用户直接或间接控制自己的作业。主要有两种命令接口控制方式,即联机命令接口和脱机命令接口。
联机命令接口又称交互式命令接口,适用于分时或实时操作系统,它由一组键盘操作命令组成,用户通过控制台或终端输入操作命令,向系统提出各种服务要求,用户每输入完一条命令,控制权就转入操作系统的命令解释程序,然后由命令解释程序对输入的命令解释并执行,完成执行的功能。之后控制权又转回到控制台或终端,此时用户又可以输入下一条命令。这种方式我们现在用得最多,我们通过实时命令与计算机对话。
脱机命令接口又称批处理命令接口,即适用于批处理系统,它由一组作业控制命令(或称作业控制语句)组成,脱机用户不能直接干预作业的运行,应事先用相应的作业控制命令写成一份作业操作说明书,连同作业一起提交给系统。当系统调度到该作业时,由系统中的命令解释程序对作业说明书上的命令或控制语句逐条解释执行从而间接地控制作业的运行。
程序接口。也称为系统调用,是程序级的接口,由系统提供一组系统调用命令供用户程序和其他系统程序调用。用户在程序中可以直接使用这组系统调用命令向操作系统提出各种服务要求,如使用外设、申请分配内存、磁盘文件的操作等。
程序接口是由一组系统调用命令组成的,这些命令可供应用程序使用,使程序员访问系统资源。系统调用是操作系统提供给应用程序访问系统资源的唯一接口。每个系统调用都是一个能完成特定功能的子程序。用户接口属于高级接口,是用户与操作系统的接口;程序接口是低级接口,是任何内核外的程序与操作系统之间的接口。用户接口的功能最终是通过程序接口来实现的。
图形接口。图形接口是指通过图标、窗口、菜单、对话框及文字组合,在桌面上形成一个直观易懂、使用方便的计算机操作环境,以鼠标驱动方式使用系统的用户界面。用户通过鼠标,操作图形界面上的各种图形元素,实现与系统的交互,控制程序的执行。运行结果也以图形方式进行显示。
图形接口的特点是直观,不需要记忆命令和语法,轻松使用系统。操作系统上的图形接口(也称图形界面)是联机命令接口的图形化。这个部分就是和大家每天打交道最多的部分。大家通过鼠标去点击图形界面上的按钮等内容,有效的去操作计算机。
作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。