:编程语言的奥秘
一:软件解释器是怎样工作的
1:有些软件程序不能直接与计算机通信。它们是使用需要解释器的语言写成的,解释器是另一个程序,它将软件的命令翻译为可供处理器使用的指令。被解释的程序包括DOS批处理文件,用BASIC写成的程序,WORDPERFECT宏和用JAVA写成的在因特网上使用的软件。程序中的每条命令都独立成行。当你运行被解释程序时,专门为该种语言设计的解释器会在内存中创建一小块空间。在这里,解释器存入文件名称并跟踪它的当前位置,称为偏移量(OFFSET),即从文件的起始位置算起的当前命令的行数。
2:随着解释器读取每一行文件,它将该行的第一个单词与一个有效的命令列表进行比较。在BASIC程序中,解释器还能识别位于行首的变量。变量用来存储临时文件,例如文件名或数字。
3:在批处理文件中如果某行的第一个没有在命令列表中找到,解释器会寻找名称与该单词匹配的。COM、。EXE和。BAT文件。如果批处理文件中不满足这些条件,或者在BASIC程序中没有找到匹配的命令或变量,解释器会生成一条错误信息。
4:如果在有效命令的列表中找到了该单词,解释器执行整行,翻译命令单词和代表命令的要操作的参数的单词。例如,一行“DEL MYFILE。DOC”由命令DEL或DELETE和一个文件名MYFILE。DOC组成,它是一个参数,告诉命令要删除哪个文件。命令和参数转换为代码令牌——传递给处理器的指令缩写,由处理器执行指令。
5:如果哪个参数无效,或者它们试图进行被禁止的操作,例如将一个文件复制到自己,解释器会生成一条语法错误消息。
6:在执行该处理以后,解释器获取下一行的偏移量位置,并重复这个过程。这种直线执行的一个例外是如果有GOTO等命令将执行跳转到程序的另一个部分去。
第五章:WINDOWS的奥秘
一:WINDOWS怎样使用内存
1:计算机的内存可以被想象为在三个方向上扩展的管道系统。在一对垂直的管道之间是一个晶体管,它能够存放0和1。在内存有上百万给这样的交点。WINDOWS XP可以寻址4GB的内存。
2:当你启动计算机时,WINDOWS系统代码装载到内存的不同位置。负责管理应用程序的窗口和图形的代码——USER和GDI(图形设备接口)装载到内存的低端。WINDOWS 操作系统核心代码——虚拟机管理器(VIRTUAL MACHINE MANAGER。VMM)装载到内存的高端。
3:传统的DOS应用程序在内存低端,一个分隔开的内存空间中运行。
4:每个32位WINDOWS应用程序都运行在系统和DOS代码之上的它自己受到保护的内存空间上。每个应用程序都保证使用自己的内存。
5:所有的传统的WINDOWS应用程序都运行在位于32位应用程序之上的单一的内存空间的兼容模式中。尽管每个程序在一个时刻占有自己的那块内存空间,但有时它可能会放弃一部分内存,交给另一个16位应用程序使用,这个过程称为合作多任务。当应用程序不能正确的合作时,系统可能会崩溃。
6:如果应用程序需要访问硬件,例如打印机或显示适配器,WINDOWS会在内存的高端装载一个32位虚实设备驱动程序(VIRTUAL DEVICE DRIVER。VXD)。VXD还可以管理某些DOS功能。当你应用程序结束硬件操作时,VXD将从内存中删除。
7:如果没有足够的未分配内存可以满足应用程序的需求。WINDOWS使用虚实内存——硬盘空间——来存储内存中那些最近未被使用过的数据。WINDOWS可以自动变化虚实内存首需的磁盘空间的数量。如果一个程序的内存被交换到硬盘上,而后来它再次需要这些数据或代码,WINDOWS会为它分配真正的内存,并将一个应用程序的内存交换到硬盘上。如果任何应用程序(16位或32位程序)需要额外的内存空间,它向WINDOWS发送请求,WINDOWS检查还有多少可用的内存。然后WINDOWS为该应用程序分配额外的剩余内存空间。

 
关于WINDOWS 2000和WINDOWS XP   
从INTEL 80386出现以后,微处理器已经能够同时处理32位数据。但是有数量众多的应用程序是专门为16位窗口操作编写的,因此多年来WINDOWS不得不保留一部分16位代码,以实现与较早的“传统”应用程序的兼容。主要供网络应用程序使用的WINDOWS 2000是纯32位代码,这使它速度、可靠性和灵活性上有很多优势。但它在运行较早的16位WINDOW程序时就会问题多多。WINDOWS的最新版本——WINDOWS XP也是32位的,但是它提供了兼容模式功能,用以支持那些需要16位函数的较早的软件。 
二:WINDOWS的多任务是怎样工作的
1:WINDOWS的多任务功能使你可以同时执行多个应用程序。当你在前台使用文字处理软件时,你的WEB浏览器可以在后台无需照看的下载文件。随着每个应用程序的装载,处理器为该应用程序分配一块独占使用的内存。
2:当应用程序需要更多的内存时,它向WINDOWS发送请求,WINDOWS检查还有多少剩余内存并为该应用程序分配额外的RAM空闲空间。
3:如果没有足够的真实内存可以分配给该应用程序,WINDOWS会检查一个表格中记录的内存的不同分区在最近的使用情况。然后WINDOWS将最近使用的内存复制到虚实内存中,它是磁盘上的空间,但你的计算机将它作为内存来对待。然后WINDOWS 将这块内存分配给有需求的应用程序。真实内存太少会导致内存和磁盘之间的大量交换,这会使你的计算机变慢。
4:为了使装载到内存中的多个程序同时运行,WINDOWS为每个程序分配一片处理器的时间。但一个程序使用处理器的时间片结束时,WINDOWS通知处理器将处理器的寄存器的内容写到内存中,从而保存它正在进行的工作。寄存器是处理器的临时存储空间,临时存储正在处理的数据。WINDOWS还会在应用程序的代码中保存一个数字化的“书签”以记住其位置。
5:在处理器清除了寄存器之后,处理器使用来自下一个程序的数据重新填充寄存器,并从内存中的一个新的位置开始执行这个程序的指令,直到这个程序的时间片结束。WINDOWS通知处理器保存那些寄存器,并为需要执行多任务的下一个应用程序重复这个过程。
6:如果一个程序需要计算机的硬件提供服务,例如打印机端口或视频卡的服务,WINDOWS首先检查是否有另一个多任务程序已经在使用这个服务。如果正在使用,WINDOWS会将新的请求放到队列中,直到当前的硬件操作结束。然后WINDOWS允许发出的请求的程序通过驱动程序或BIOS访问硬件。
三:WINDOWS怎样共享程序代码
1:WINDOWS提供了一些称为动态数据库(DLL)的文件,它们含有执行诸如打开或保存文件等常用功能的一些软件代码。当WINDOWS应用程序需要使用这些函数或称例程时,应用程序向WINDOWS发送消息,指出DLL文件和函数的名称,这个过程称为函数调用。最常用的DLL是WINDOWS的COMMDLG。DLL,它包含了显示“打开文件”、“保存文件”、“查找”和“打印”对话框的函数。
2:应用程序还要发送DLL函数完成操作所需的信息。例如,一个程序调用COMMDLG。DLL中的“打开文件”函数,它需要传递文件的说明,例如*。*或*。DOC,用来显示在对话框的“文件名”文本框中。
3:应用程序还需要传递DLL完成操作之后所需要返回给应用程序的信息类型的说明。例如,应用程序需要以整数、真/假值或文本的形式返回信息。
4:WINDOWS将程序执行的责任以及DLL所需的参数和返回信息交给DLL。
5:DLL中的特定例程被装载到内存中,然后由处理器开始执行。此时是DLL而不是应用程序在运行。DLL执行与WINDOWS以及通过WINDOWS与计算机的硬件通信所需的全部操作。
6:在DLL函数执行结束后,DLL将返回信息放到内存中,应用程序可以在这里找到它,并通知WINDOWS清除内存中的DLL例程。‘
7:应用程序检查返回的信息,这个信息通常说明DLL函数是否被正确执行。如果操作成功,应用程序从调用函数的位置之后向下继续执行。如果操作失败,应用程序会显示一条错误消息。
四:WINDOWS怎样共享数据
1:在不同的文档和不同的应用程序之间共享数据的最简单的方法是通过WINDOWS剪贴板。任何时候你选择了一些数据——文本、图形、电子表格单元——并复制它们,WINDOWS会将这些数据的一份副本保存在供剪贴板使用的一块内存空间中。
2:应用程序用不同的格式——数据结构化定义的精确编码——来保存它们的文档。当你复制或剪切数据时,WINDOWS会将选种的内容以多种格式传递到剪贴板中,这样,接着它就可以被粘贴到使用不同格式的应用程序中去。一种格式是创建该数据的应用程序所使用的格式。另一种格式是将应用程序的黑体、对齐、字体等格式化代码转换为一种称为多功能文本格式(RTF)的通用形式,这种格式可以被所有的WINDOWS应用程序识别。第三种格式称为OEM(原始设备制造商)文本,它用来将文本粘帖到DOS应用程序中。
3:例如,如果数据是图形,WINDOWS会将它保存为三种格式——原始格式,例如。TIF或。PCX;位图格式;元文件格式。位图是显示像素的特定模式的记录,可以原始尺寸重新形成图象。元文件是一组命令集合,WINDOWS的图形设备接口(GDI)可以用这些命令来重现该图象。元文件是与分辨率无关的,也就是说,它们没有像位图那样被固定为某一种像素的排列。这使元文件可以利用你的显示器和打印机所能提供的全部分辨率,而且使你可以在无失真的条件下改变图象的尺寸(元文件通常被称为面向对象的图形,因为它存储的是一系列不同的对象——线条、矩形、圆弧——而不是像素)。
4:但你从剪贴板中粘贴数据时,接收数据的应用程序检查复制数据的各种格式。如果你将数据粘贴到复制到它的原应用程序中,应用程序一般会选用本来格式。
5:如果你从一个应用程序粘贴到另一个程序,接收程序会检查保存在剪贴板中的所有格式。应用程序选择它能够理解的并且保留了最多格式化信息的格式。例如,元文件图形比位图图形更为优先,因为元文件含有更多的细节信息,接收应用程序可以用这些信息来修改图形的尺寸或在页面上的布局。
6:为了粘贴不是自身格式的数据,接收应用程序首先把该数据的所有格式信息——例如粗体或字体——转换为接收应用程序使用的格式化代码。如果它正在接收元文件图形,应用程序会将包含在剪贴板中的命令发送给WINDOWS的GDI,由GDI向显示驱动程序发送在屏幕上形成图象所需的信息。
五:对象连接和嵌入(OLE)
1:对象连接和嵌入(OLE)用于将一个应用程序创建的数据粘贴到另一个不同的应用程序创建的文档中。但与剪贴板的那种粘贴不同,OLE对象——要粘贴的内容——保留了应用对数据来源的程序的服务器或对象应用程序的连接。OLE对象的创建类似于简单的剪贴板的粘贴:你选择并复制数据,然后使用OLE粘贴命令(根据程序的不同,可能是“特殊粘贴”、“粘贴连接”等称呼)将它粘贴到容器应用程序中。结果会产生一个复合文档。在这些复合文档中可以有存储对象,它们有自己的子存储对象。这些数据对象还有一个提示系统,维护了所有与其他对象和服务器应用程序的连接的记录。
2:OLE粘贴操作还会向DLL文件例程文件OLECLL。DLL发送一个函数调用。这个DLL例程在剪贴板中搜索连接标记,它们标记着创建要粘贴数据的服务器应用程序。该函数在服务器应用程序和客户端的复合文档之间创建连接。
3:连接是给服务器应用程序的提示,使它可以在有人修改、重命名或保存已经被粘贴到客户端应用程序中的数据时可以联系该OLE库。然后,如果客户端应用程序被装载,服务器对数据进行更新。
4:当你双击一个OLE对象时,客户端应用程序将提示发送给OLE数据库例程,搜索WINDOWS注册表,这里记录了你已经安装的每一个支持OLE的应用程序。搜索找到运行服务器应用程序的文件。
5:DLL激活服务器应用程序的一部分,然后该应用程序调用另一个DLL例程激活USER。EXE中的函数,USER。EXE是操作系统中负责显示WINDOWS菜单的模块。
6:USER。EXE使用服务器应用程序的菜单代替客户端应用程序中部分菜单。客户端保留较通用的文件和WINDOWS菜单,但其他通常涉及到应用程序特有功能的菜单被替换掉了。
7:使用被替换的菜单项,就可以修改嵌入的对象,就像在服务器应用程序中对其进行处理一样。在嵌入对象的外部单击可以恢复客户端应用程序自身的菜单。
8:如果一个对象是嵌入而不是连接的,复合文档中的提示会标记出服务器应用程序。嵌入使你通过双击嵌入对象来运行服务器应用程序。
第六章:应用软件的奥秘
一:定长字段记录
1:数据库中的大部分信息是存储在定长字段中的,之所以叫这样的名字是每个字段能够使用字符的数量——即空间——是在创建数据库的时候就已经确定的。定长字段的开始部分定义了该文件记录结构的信息——每个字段的名称、数据类型(通常是数字或字母)和长度。另外,结构中还可能包含字段中存储的数据的结构信息,例如,记录日期的字段可能需要MM-DD-YY(月-日-年)格式。字段还可能需要对输入其中的信息进行验证,例如,如果被输入的验证州名的字段中数据不是50种法定州名邮政缩写之一,它就会被拒绝。
2:文件的剩余部分是数据,以连续的数据流的形式存储。特定的数据片的位置是由为每个字段分配的长度决定的。
3:为了找到一条指定的记录,数据库软件通过一个简单的公式来计算该位置的偏移量:特定记录的编号减1,然后乘以每条记录的总长度,就得到了该记录的起始位置。计算出起始点之后,程序从该位置开始读取文件中的字节。
4:为了定位一条记录中的各个字段,程序按照一个简单的过程来计算要寻找的字段前面所有字段的字节数,然后从该字段的起始位置读取字节。
5:为了修改一条现有的记录,数据库软件将该记录读入它在计算机内存里创建的变量中,通过屏幕上的表单让用户修改这些变量中的信息。然后,软件将这些变量的新内容写回到数据库文件中去。
二:变长字段记录
1:信息也可以被存储为变长字段,顾名思义,字段的字节长度会随记录的不同而不同。备注文件是连接到定长数据库文件中的一个独立的文件。备注文件完全是由文本段组成的,例如,每条备注可能有上千个字节。
2:在与备注文件相关联的定长记录中,一个字段专门用于记录对应的文本在备注文件中的起始位置。这种类型的字段为指针,因为它本身并不含具有意义的数据,其内容指向可以找到真正信息的位置。
3:为了读取备注文本,数据库管理程序软件从定长文件中读取指针的值,找到备注中指定的位置,开始读取文本,知道碰到一个标志着备注文本结束的标记代码。计算机用户实际上永远不会看到指针字段中信息。相反,对于屏幕显示来说,软件会用指针所指向的文本代替指针的内容。来自这两个文件的信息将实现无缝连接。
4:为了向现有的变长字段添加更多的数据,数据库软件所先将附加的文本写到备注文件的结尾部分。
5:然后软件使用指向字段的剩余文本所在的磁盘位置的指针来代替记录结束标志。较长的备注可能会存储在多个独立的段内,每段的结尾都会指向下一段的开始。
三:数据库怎样存储记录
1:为了对记录进行索引,数据库管理程序首先要求你告诉它索引要建立在哪个字段上。这个字段称为关键字段(KEY FIELD)。有些数据库可以有多个索引和多个关键字段。
2:数据库管理程序读取每条记录并创建一个临时文件,由每条记录的关键字段所含的值和相应的给定每条记录在数据库中的位置的指针组成。如果出现重复的值,每个重复项都被记录在索引文件中。
3:在数据库程序将所有的值及其指针或记录编号读取到临时文件中之后,它将复制的值按字母顺序排列,形成索引。
4:数据库将排列的信息写入到结构为二叉树的索引文件中。二叉树有称B树,其目的是为了加速在索引文件中查找信息的过程。它是一棵树根在上的倒置树,每个结点有两个分支。这些分支将索引文件的逻辑分割划分为越来越小的两半。例如,A-M代表树的前两个分支之一,N-Z代表另一个主分支。在数据库搜索中通过使用B树搜索的方法,只需检查20个结点就可以搜索上百万条索引,而不用逐个检查这一百万个结点。
5:当数据库管理程序需要根据关键字字段找到相应记录时,它检查B树的对应分支。例如,如果管理程序查找以I开头的关键字段的记录,它沿着树的主干向下搜索,发现关键字段的值以A-M开头。
6:因为I在字母表中位于M之前,管理程序随后查找位于A和M之间的关键字段值。在这里,它找到以G开头的取值。I在G之后,因此管理程序在H和M之间查找,依此类推,直到它找到以I开头的值。
7:最终,管理程序到达最终的结点——称为“叶”——这里含有较短的固定数量的项(根据程序的不同而不同,可能是8个左右)及其指针。它找到了需要寻找的项,并使用指针找到数据库表格中的实际记录。
8:在数据库中插入新记录之后,为了对数据库重新进行索引,程序将每个新的索引项插入到索引B树中适当的“叶”结点下面的空白空间中。
9:如果该“叶”结点下没有空间,程序在原来的最后结点下面创建两个新结点。例如,L结点可能被分为一个LA-LK结点和一个LL-LZ结点,每个新结点大约含有父结点的一半信息。
四:关系型数据库是怎样工作的
1:想象搬家到新的城市,只需填写一份表格就可以自动更新驾驶执照、电话本、你的所有订购、你的银行记录——你的所有信息中的地址和电话号码。这就是关系型数据库所代表的概念。它将信息分别存储在不同的表格中,表格之间彼此共享数据。对任何一个表格中的信息进行修改就会被所有需要它的其他表格检测到并加以更新。关系型数据库的设计目的是大部分信息只需输入一次,而信息可以被许多个数据表使用。
2:当你要访问存储在数据库中信息时,要用到一张已经为该数据库创建的表单或报告。它将显示含有你要检索的信息的那些字段。在这个例子中,你希望获取的是关于作者和他们的书籍的信息,这些信息综合了两个表格的内容。
3:作者表格含有每位作者的姓名、国籍、出生和逝世日期等字段。书籍表格只含有每本书的标题、出版商名称、价格和作者姓名。作者表格中的作者字段是表格之间关系的主关键词。主关键词必须是父表格中唯一的字段,也就是说,它必须只标识该表格中的一个记录。本例中的书籍表格称为子表格。作者字段也是书籍表格的一部分,但是在这个表格中,作者字段的内容并不是唯一的:相同的名字可以出现在多条记录中(记住这些条件的一种方法是想象为一个父表格可以与多个子表格相关联,但一个子表格只能有一个父表格)。
4:这个例子中的表单指定了来自作者表格的多个字段,因此软件找到这个表格,从当前记录中取出这些字段的内容,并将它们显示在屏幕上。
5:然后数据库管理程序查找书籍表格的索引,找到作者字段为“HEMINGWAY”的所有记录。它使用这些索引项的指针来找到书籍表格中的正确记录,然后取出所需的字段并将它们显示在屏幕上。当你切换到作者表格中的一条新的记录(例如DITZGERALD),软件会显示作者表格中的信息,然后重新寻找书籍表格中作者字段与新的记录相匹配的所有记录。
6:一个报告或一张表单可能会含有来自多个不同表格的数据,并组成一个通过使用多重连接创建的复杂关系的集合。
五:电子表格中的公式如何工作
1:当你在一个单元格中输入公式时,电子表格通过一个微型编译器处理公式,将公式中的函数名称转化为更有效的权标化格式,在这种格式中函数是使用特定的数字代表的。例如,SIN和COS函数被转换为特殊的字节值,电子表格软件可以将之理解为正弦和余弦函数。编译器还会以逆波兰表达式的形式存储公式,例如(3+2)*10就成为32+10*。这种表达式在空间和效率上更优。
2:编译的结果被写入到为该单元格保留的内存空间中去。在这个空间中还要为计算的结果留出位置,还要有指向表格中的下一个公式和前一个公式的指针。这些指针实际上构成了所有公式的单元格的一个链表,能够在程序需要重新计算公式时节省在每个单元格中搜索公式所需的时间。在你删除一个公式时,它指向前一公式的指针可以将公式链表重新连接起来。
3:当表格重新计算时,程序可以通过对含有公式的单元格的指针形成的链表进行第一遍扫描以节省工作量和时间。它能够找出那些与发生变化的数据相关的公式,并标记出每个需要重新计算的公式。
4:然后程序对链表进行第二遍扫描,这次只关注那些被标记为需要重新计算的公式。对每个需要重新计算的公式,电子表格确定该公式是否依赖于其他尚未重新计算的公式。如果是,它调整单元格的指针以及连接的单元格的指针,使存在依赖的公式移动到链表的结尾(这个过程对下次需要重新计算表格时有很大好处——程序不在需要再次修改指针)。如果该公式不依赖于任何其他公式,或者所依赖的公式已经被重新计算过了,那么软件会立即重新计算该单元格。
5:为了计算一个公式,表格软件将公式所需的数据和公式代码输入到一个计算引缉中去,该引缉生成答案并将答案写到为该单元格存放信息所分配的内存位置中。
6:然后电子表格移至下一个公式,重复这个过程,直到最终计算完成所有依赖于其他公式的公式(稍前已经将它们放在链表的末尾)。
7:在有些电子表格程序中,例如EXCEL,软件会在每个单元格计算完成后立即更新屏幕上的显示。有些电子表格程序会等待其他所有表格都全部重新计算完成后才更新屏幕上的显示。
 
自动重新计算   
如果你已经打开了电子表格的自动重复功能,那么每次你作出任何影响到任一公式的修改时,电子表格都会更新。它是如何完成操作的?在你创建一个公式时,通过在它们的记录中修改一个标记,电子表格软件标记出该公式依赖的所有单元格。另外,它还在这些单元格中记录了任何找到依赖于它们的公式,这种方法比使用指针更为有效。当你修改任何用这种方法标记了的单元格时,软件会找出受影响的公式并重新计算它们。 
六:位图图形如何工作
1:当一个图形程序从驱动器上读取位图文件时,它首先检查包含在文件头中的信息,即位于文件起始位置的一些字节,这里含有程序解析文件的其余数据所需的信息。文件头从签名开始,它表示该文件为一个位图。你不会看到这个签名,但是如果文件带有。BMP、PCX、TIF或。JPG扩展名,你就知道它是一个位图。在这个签名之后,文件头记录了图形的宽度和高度,以像素为单位(像素是可以区分的光点),并定义了调色板(图象中使用的颜色数量和类型)。
2:在确定了图形文件的参数之后,程序逐位读取文件头之后含有图象的文字数据。最简单的位图图象只有黑、白二色像素。对于该种类型的图象,图形程序只需要知道两个信息:像素的位置以及该像素是亮还是暗。像素的位置是由文件头中定义的图象的宽度和高度决定的。在下面这个简单的戴帽子的人物头像中,每行像素包含11位。
3:在专供视频显示使用的内存中,组成黑白图象的字节是由一些1和0的二进制位组成的。1意味着与它对应的像素应该被点亮,0表示对应的像素应该熄灭。戴帽子的头像121个像素组成,其黑白图象可以被存储在16个字节中。
4:彩色位图的每个像素需要更多的信息。每个像素8位(1字节)数据可以定义256色的调色板,因为8为二进制信息能有2即256种取值(图中显示的取值是十六进制的,这是一种逢16进1的计数)。8个二进制位的每种可能的取值都与调色板中组成一个像素的红、蓝、绿色点的某种特定组合相匹配。尽管三个色点是独立的,但它们的距离非常接近,人眼会将它们看作一个混合颜色的单个点,称为一个虚拟像素。
5:对于24位图形来说,每个像素使用3字节内存来定义。3个字节足够定义超过1600万种可能的颜色(2),这就是有时24位颜色被称为真彩色的原因——难以想象现实生活中的颜色会超过1600万种。通常显示24位颜色时是让一个像素的3个字节分别分配表示组成该像素的红、蓝、绿颜色的数量。这3个字节的取值决定了每种颜色在像素中含有的分量。可以这样考虑8位颜色和24位颜色的区别:8位让你从“预先混合”的256种颜色中挑选,就像销售罐装油漆;而24位方法本质上是为每个像素快速配制不同的颜色。
6:因为位图文件可能会非常大,一些图形文件格式有内置的压缩功能,称为行程长度编码(RUN——LENGTH ENCODING,RLE),它能够压缩文件中的数据以节省磁盘空间。RLE利用了这样一种事实:在很多图形中,有很大块面积内的像素是完全相同的。RLE使用关键字节(KEY BYTE)来告诉软件下一个字代表几个像素还是一个像素。软件检查关键字节的第一位。如果是1,软件读取该字节中剩余7位的值——我们称之为值N——并将后N个字节的值作为单个连贯像素的颜色的组合。在N字节的结尾是另一个关键字节。
7:如果关键字节的首位为0,说明软件应该将下个字节的值应用于后续的N个像素。那么,关键字节后的第二个字节就是另一个关键字节,重复这一处理过程。
8:在解释位图文件之后,图形软件将像素的值放在图形适配器的一块内存中,称为帧缓冲,在其中存放着屏幕上每个像素的值。然后适配器使用内存中的这些数据调节电子信号,生成组成每个像素的红、蓝、绿颜色浓度。
9:数字——模拟转换电路(DIGITAL-TO-ANALOG CONVERTER,DAC)将数字值转换为相应的模拟值,确定向显示器发送多少电流。
10:3个不同的电流被发送到显示器。电流生成三束密度不同的电子束,分别照射在各自的荧光体上——每个荧光体用于显示3种颜色之一。荧光体涂在显示器屏幕的内表面上,根据激发它们的电子束的强度的不同而发出或明或暗的光亮
矢量图形任何工作
1:基于矢量的图形以显示列表的形式存储在一个文件中,这个列表用数学方法描述了每个图形的形状或对象,以及它们的位置和属性,例如线宽和填充(填充形状的颜色模式)。显示列表还指定了对象的层次——应首先画哪个对象,哪个对象在其他对象的上面。矢量图象与位图图形不同,位图图形的尺寸和形状固定不变。而通过修改定义矢量图形的数学公式,就可以修改其形状和大小。
2:为了绘制一个对象,程序只需知道一组点的位置,例如,贝赛儿曲线的公式只需要四个点,点起点、终、和两个控制点。这两个控制点决定了曲线从直线的位置上被“拉开”了多大距离。
3:每个点都由两个数字定义——一个是点的垂直位置,另一个是水平位置。每个数字都以非常高的精度存储,而不仅仅是指定像素的位置。这竟素使软件可以精种确地绘制曲线,不管曲线的尺寸是增加还是减少,或是曲线被移动,以及其他任何操作。
4:为了显示矢量图形,图形程序从显示例表中读取所有的公式以及有关数据,使用这些信息计算出一幅临时的位图图象。这个过程称为取景变换。、
5:为了显示填充,程序对组成该形状边界的所有像素位置的数学公式进行计算。,利用这个公式,程序可以确定那些像素位于形状之内并修改这些像素的颜色值进行匹配填充。
6:当你移动或修改一个形状,或调×××状的属性(例如其颜色),或是向图象中加入新的对象,软件都修改所有受影响的对象在显示列表中存储的数据,没有被修改的所有对象的数据都不变,然后取景变换重新计算显示位图以更新屏幕上显示。
字处理软件怎样格式化文本
1:当你在字处理软件中输入字段时,它们被存储为ASCII码,如图中的数字所示,保存在为该文挡保留的一块内存区域中。、
2:如果新的字符插入到现有文本中,字处理软件将新的文本放在内存中现有文本的后面,并建立一个指针,指向新文本应该出现的位置。当文挡被写入磁盘时,文本的各个分段会重新排序,以连续的方式写入文件。
3:文挡的一个特使的部分,称为文件头,存储着关于文件的信息,例如缺省的字体、页边距、缩进设置和其他一些除了专门的修改之外要应用于整篇文档的数据。
4:在通过应用属性(或称格式)——例如粗体、斜体、下划线、边距设置和字体大小——修改一段文本时,字处理软件使用两种方法之一来记录格式的修改。WINDOWS版、WORDPERFECT和用于编写网页的格式化语言HTML使用的都是内联格式(INLINE FORMATTING )。内联格式是在属性应该开始的位置处插入自己的代码。在属性有效的结束位置处,格式软件会插入另一个代码,表示格式的结束。这些代码通常不会显示在屏幕上。
5:WINDOWS版MICROSOFT WORD使用一组表格来记录所有的格式化信息。一个表格用于记录区域属性,例如出现在每个页面顶部的页眉、缩进设置、以及页面方向是纵向(垂直)还是横向(水平)。
6:第二个表格记录应用于段落的格式化属性,例如页边距设置、首行缩进和行间距等。
7:第三个表格记录应用于个体字符的格式化属性,例如字体和大小、粗体、斜体和下划线等。
8:区域、段落和字符表格中的指针指向文本这些属性应该使用的位置。
9:随着你输入或滚动一篇文挡,字处理软件从RAM中读取更多的文本和格式化代码,并向WINDOWS发送它自己的命令,WINDOWS将这些命令转交给显示驱动程序,一组控制你的显示适配器卡的专用代码。最后,显卡显示器发送电子信号,控制要显示的文本、图形或文挡的任何其他部分所需的像素的亮或暗。当字处理软件发送要打印的文本时,打印机驱动程序会完成类似的功能,将文本和格式转换为所有打印机创建的墨点,不管是点阵、喷墨还是激光打印机。
计算机病毒如何工作
1:计算机病毒是指程序员故意编写的可以感染程序或磁盘的代码,它们能够复制自己、隐藏代码首先被执行。病毒代码、等待特定的时机爆发,并且进行破坏性或恶作剧的操作。
2:当被感染的程序运行时,病毒通常进行以下四种操作:
复制:病毒将其副本插入到其他的程序文件中。当计算机读取病毒的每个后代的宿主时,它们会再次复制自己。程序病毒——搜索可执行的。COM和。EXE程序文件。病毒通常将自己的副本直接插入在程序的文件头的后面,文件头是文件头部的一小段代码,含有关于文件类型的信息。这能够确保病毒总是在文件的合法部分被执行之前首先执行。引导记录病毒——其目标则是主引导记录。计算机在读取任何其他文件之前,必须先读取这个记录以了解磁盘是如何组织的。由于隐藏在这里,病毒甚至能够在装载操作系统之前就开始运行。
等待事件:每次病毒运行时,都会检查特定的条件,通常是一个特定的日期。一旦触发条件满足,病毒就会进行破坏性的操作。如果触发条件不满足,除了复制自己之外它不会进行其他操作。
伪装:隐藏的病毒会对自己进行伪装以避免被防病毒软件发现。变形病毒使用的伪装方法是使用无实际功能的不断变化的假代码片段混杂在病毒的实际代码当中。每次病毒复制时,它都创建不同的伪代码来打破它的识别签名(参考下一节中介绍的签名检测)。病毒还可能会伪造文件头中关于文件长度的信息,以便使程序文件的大小看起来是正确的。
发作:当你触发满足时,病毒释放其有效代码——这才是它的真正目的。有效代码可能是无害的,例如显示一条消息“你被骗了”。有效代码也可能是破坏性的,删除或破坏驱动器上那些说明操作系统如何才能找到磁盘上的文件的信息。最阴险的病毒不会宣告它的存在,而是对文件进行微小的修改。例如,它可能会随机修改财务软件中的数据、窃取密码、或造成延迟使计算机运行变慢。
3:有些病毒会将自己复制到内存中。在内存中,病毒可以不断地检查触发动作的发生,例如某个特定的按键是否被接下。内存驻留病毒还能够发现防病毒软件查找受感染文件的企图,并返回虚假的信息以躲避检测。
防病毒软件如何工作
1:抵御病毒的第一道防线是能够监测主引导记录,程序文件和宏代码中是否存在病毒的防病毒软件。签名扫描程序在引导记录、程序和宏的内容中寻找与所有目前已知病毒表格中的病毒相匹配的可识别的代码。这种表格必须定期更新才能够有效地抵御新的病毒。
2:因为隐藏的病毒能够躲避签名扫描程序的检测,启发式监视程序检查由时间或日期触发的代码片段、搜索。COM和。EXE文件的例程,以及绕过操作系统的磁盘写操作。
3:内存驻留防病毒软件在RAM中安装程序,在其他软件运行的时候,这个程序监视计算机的所有操作中是否出现与病毒有关的动作,例如下载文件,直接从因特网站点上运行程序、复制或解压缩文件、试图修改程序代码,或者内存驻留的防病毒程序使操作暂停,显示一条警告消息,等在执行之后试图保留在内存中的饿程序。当他们检测到可疑的操作时,待用户的确认才允许任务继续执行。