兰陵月 发表于 2018-10-14 14:00:54

《WINDOWS程序设计》(003)1.1 Windows环境-1.1.2 Windows的方方面面

本帖最后由 兰陵月 于 2018-10-14 20:44 编辑

1.1.2Windows的方方面面
      Windows 98和Windows NT都是32位、抢占式、多任务、多线程图形操作系统。Windows具有一个图形用户界面(Graphical User Interface,GUI),有时亦称为“虚界面”或“图形窗口环境”。GUI的概念其实早在20世纪70年代中期,Xerox PARC在Alto和Star两款机器上的SmallTalk环境里就已经提出了。这一概念后来被引入主流系统,并最终被苹果计算机公司和微软公司推向大众。尽管开始曾有一段时间争论不休,但时至今日,(用微软公司Charles Simonyi的话来说)GUI已经成为PC工业界内最重要的共识。
(32位:CPU为32位、寻址方式为32位、地址线为32位或64位)(抢占式:现行进程在运行过程中,如果有重要或紧迫的进程到达(其状态必须为就绪),则现运行进程将被迫放弃处理机,系统将处理机立刻分配给新到达的进程。作为进程调度方式之一,还有一种称为非抢占式。)(多任务:多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务.Linux、windows就是支持多任务的操作系统,比起单任务系统它的功能增强了许多。多任务处理可分为两类:协同式多任务和抢占式多任务处理模式)
(协同式多任务处理模式:CPU的分配直接由应用程序决定,所以系统性能好坏取决于应用程序设计好坏。抢占式多任务处理模式:各进程占用CPU的时间由系统调度程序决定,当调度程序检测出有比当前任务优先级更高的程序事件后,暂停当前任务并将CPU时间分配给优先级更高的进程。所有的Win16应用程序都在同一台虚拟机上运行,各程序之间采用的是协同式多任务处理。每个Win32应用程序和MS-DOS应用程序都具有自己专用的虚拟机,其进程按抢先式多任务处理方式运行。)
(多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理(Chip-level multithreading)或同时多线程(Simultaneous multithreading)处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程(台湾译作“执行绪”),进而提升整体处理性能。)

      所有的GUI都用位图(bitmap)视频显示器显示图形。图形能够提高屏幕资源的利用率,提供一个以视觉传递信息的便利环境,并可使用WYSIWYG(所见即所得)来显示为打印文件而准备的图形及格式化文本。(注:Windows的字处理程序WORD,展示了标准的所见即所得(WYSIWYG)接口、完全的文字处理特性、拖放功能)

      最早,视频显示器仅仅用来回应用户在键盘上敲进的文字。而在图形用户界面中,视频显示器本身也成为了用户输入的一部分。视频显示器可以用图标(icon)来显示各种各样的图形对象(graphics objects),并可提供多种输入机制,如按钮(button)、滚动条(scroll bar)等。利用键盘(或直接用鼠标等设备),用户可以直接操纵这些屏幕上的对象。图形对象可以被东拉西拽,按钮可以按来按去,滚动条也可以来回翻卷。

      用户和程序的互动因此变得更加紧密了。比信息从键盘程序再到视频显示的单向流动更进一步,用户可以直接与显示的对象交互。

      用户再也不必花大量时间来学习如何使用计算机或者掌握某个新程序。Windows简化了这些,因为所有的应用程序的基本外观和感觉都差不多。每个程序各占有一个窗口—屏幕上某块矩形部分。每个窗口都有一个标题栏(caption bar)来标识自己。大部分程序的功能都通过该程序的菜单来启动。当信息显示相对于一个窗口太大时,用户可以通过滚动条来让窗口显示该信息的不同部分。有些菜单项还能启动对话框,让用户在其中输入更多的信息。特别值得一提的是用于打开文件的对话框,几乎在每个大一点的Windows应用程序中都能找到它。而且在所有的Windows应用程序中,这个对话框看上去几乎都差不多,而且都是通过相同的菜单选项启动的。

      一旦知道怎么使用某个Windows程序之后,学用其他Windows程序就像是水到渠成似的简单自然。用户可以利用菜单和对话框试用新的程序,了解它的各项功能。大部分Windows程序同时具备键盘和鼠标两套接口。尽管Windows程序的大部分功能都可以用键盘来控制,但是不少时候,用鼠标相对来得简单得多。

      从程序员的角度来看,统一的用户界面意味着编程人员可以使用Windows自带的例程来构建菜单和对话框。这样所有的菜单都会有同样的键盘和鼠标接口,因为所有这些工作的处理都由Windows负责,用不着应用程序来操心。

      为了便于使用多路程序以及方便这些程序之间的信息交换,Windows支持多任务(Multitasking)。若干Windows程序可以同时运行,同时在屏幕上显示。每个程序在屏幕上各占据一个窗口。用户可以把窗口在屏幕上挪来挪去,改变窗口的大小,在各个窗口之间往返切换,甚至可以把数据从一个程序传输到另一程序。因为这些窗口看上去有点像桌面儿上的纸张(当然那时候,办公桌面还没有完全被计算机占领),Windows常常通过办公桌面这个象形词来比喻多路程序显示。

      早期Windows的多任务系统是“非抢占型”(Non-Preemptive)的。也就是说,那时候的Windows还不能用系统时钟把系统中正在运行的各个程序的处理时间分段。这些程序必须自觉地放弃对处理器的控制,给予其他程序运行的机会。在Windows NT和Windows 98中,多任务系统是“抢占型”(Preemptive)的,程序本身也可以分成多个线程(Thread),这些线程好像都在同时执行一样。(注:非抢占型、抢占型在前面的个人学习添加内容中均有解释)

      一个操作系统如果没有内存管理就不能实现多任务。随着新程序的启动运行和早先启动的程序运行结束,内存被截成七零八碎的。操作系统必须能够把空闲的内存控件重新整合起来。这就要求系统把内存中的程序块和数据块搬来搬去。

      即使是在8088微处理器上运行的Windows 1.0也能够做这种内存管理。从软件工程的角度来看,能够在实模式约束下做到这一点已经是件令人赞叹的壮举。Windows 1.0实际上突破了PC体系结构上的640KB内存限制,而且不需要增加任何内存。但是微软的脚步并没有就此停止:Windows 2.0开始允许应用程序对扩展内存空间(Expanded Memory Space,EMS)进行访问,在Windows 3.0保护模式下,应用程序可以享用多达16MB的扩展内存控件。而作为成熟的32位操作系统,Windows NT和Windows 98则通过提供平面内存空间(Flat Memory Space,FMS),完全冲破了这些束缚。(平坦模式:结合现在Windows 7 32位操作系统的状况来说,就是4G内存都能直接访问)

      Windows环境中运行的程序可以共享存储在所谓动态链接库(Dynamic-Link Libraries,DLL)文件中的例程。Windows提供了在运行时把程序和动态链接库中的例程链接起来的机制。其实Windows本身基本上就是一套动态链接程序库。

      Windows是一个图形界面,Windows程序可以在视频显示器或打印机上充分利用图形和格式化文本。图形界面不仅仅看上去更酷、更引人注目,而且能够在更高层次上与用户交流信息。

       针对Windows环境编写的程序用不着直接访问屏幕或者打印机之类的图形显示硬件。Windows自己带有一种图形编程语言(叫做图形设备接口(Graphics Device Interface,GDI)),用来方便地显示图形和格式化文本。Windows把显示硬件虚拟化。这样只要配有合适的Windows设备驱动程序,针对Windows环境编写的程序就可以在任何显卡或打印机上运行。应用程序本身并不需要指导系统到底配备了什么类型的设备。

      对于Windows开发者们来说,在IBM PC上搭建与设备无关的图形界面并非易事。PC的设计是建立在开放体系结构原则上的,其目的旨在鼓励更多的第三方硬件制造商为PC研发外设,实际上已经有大量的厂商都在这么做。尽管现在标准化的进程已经逐步开始,但过去PC上普通MS-DOS程序却必须面对众多的硬件配置,一一予以支持。那个时候,买一个MS-DOS文字处理软件之外还要额外附带一两个软盘都很稀松平常。软盘里的每个小程序都是用来支持不同型号的打印机的。Windows环境下运行的软件就用不着这些驱动程序了,因为硬件支持已经称为Windows的一部分。
页: [1]
查看完整版本: 《WINDOWS程序设计》(003)1.1 Windows环境-1.1.2 Windows的方方面面