軟件的奧祕

:編程語言的奧祕
一:軟件解釋器是怎樣工作的
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中安裝程序,在其他軟件運行的時候,這個程序監視計算機的所有操作中是否出現與病毒有關的動作,例如下載文件,直接從因特網站點上運行程序、複製或解壓縮文件、試圖修改程序代碼,或者內存駐留的防病毒程序使操作暫停,顯示一條警告消息,等在執行之後試圖保留在內存中的餓程序。當他們檢測到可疑的操作時,待用戶的確認才允許任務繼續執行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章