簡介
異常,也成為內中斷,也成為例外或者陷入,指源自CPU執行指令內部的事件,如程式的非法操作碼,地址越界,算術溢出、虛存系統的缺頁以及專門的陷入指令等引起的。異常程式是指程式執行一些非法指令,異常程式出現的原因有:1、程式設計時出現的編程錯誤或運行時出現的硬體錯誤,一般可以通過異常處理解決問題;2、精心設計地入侵系統程式,如病毒。
異常處理
異常處理,是程式語言或計算機硬體里的一種機制,用於處理軟體或信息系統中出現的異常狀況(即超出程式正常執行流程的某些特殊條件)。
各種程式語言在處理異常方面具有非常顯著的不同點(錯誤檢測與異常處理區別在於:錯誤檢測是在正常的程式流中,處理不可預見問題的代碼,例如一個調用操作未能成功結束)。某些程式語言有這樣的函式:當輸入存在非法數據時不能被安全地調用,或者返回值不能與異常進行有效的區別。例如,C語言中的atoi函式(ASCII串到整數的轉換)在輸入非法時可以返回0。在這種情況下編程者需要另外進行錯誤檢測(可能通過某些輔助全局變數如C的errno),或進行輸入檢驗(如通過正則表達式),或者共同使用這兩種方法。
通過異常處理,我們可以對用戶在程式中的非法輸入進行控制和提示,以防程式崩潰。
從進程的視角,硬體中斷相當於可恢復異常,雖然中斷一般與程式流本身無關。
從子程式編程者的視角,異常是很有用的一種機制,用於通知外界該子程式不能正常執行。如輸入的數據無效(例如除數是0),或所需資源不可用(例如檔案丟失)。如果系統沒有異常機制,則編程者需要用返回值來標示發生了哪些錯誤。
異常安全
一段代碼是異常安全的,如果這段代碼運行時的失敗不會產生有害後果,如記憶體泄露、存儲數據混淆、或無效的輸出。異常安全可分成不同層次:
失敗透明(failure transparency),也稱作不拋出保證(no throw guarantee):代碼的運行保證能成功並滿足所有的約束條件,即使存在異常情況。如果出現了異常,將不會對外進一步拋出該異常。(異常安全的最好的層次)
提交或卷回的語義(commit or rollback semantics),或稱作強異常安全(strong exception safety)或無變化保證(no-change guarantee):運行可以是失敗,但失敗的運行保證不會有負效應,因此所有涉及的數據都保持代碼運行前的初始值。
基本異常安全(basic exception safety):失敗運行的已執行的操作可能引起了副作用,但會保證狀態不變。所有存儲數據保持有效值,即使這些數據與異常發生前的值有所不同。
最小異常安全(minimal exception safety)也稱作無泄漏保證(no-leak guarantee):失敗運行的已執行的操作可能在存儲數據中保存了無效的值,但不會引起崩潰,資源不會泄漏。
異常不安全(no exception safety):沒有保證(最差的異常安全層次)。
系統安全性的內容
系統安全性包括三個方面的內容,即物理安全、邏輯安全和安全管理。物理安全是指系統設備及相關設施受到物理保護,使之免遭破壞或丟失。安全管理包括各種安全管理的政策和機制。邏輯安全是指系統中信息資源的安全,它又包括以下三個方面。
(1) 數據機密性(Data Secrecy):指將機密的數據置於保密狀態,僅允許被授權的用戶訪問計算機系統中的信息(訪問包括顯示和列印檔案中的信息)。
(2) 數據完整性(Data Integrity):指未經授權的用戶不能擅自修改系統中所保存的信息,且能保持系統中數據的一致性。這裡的修改包括建立和刪除檔案以及在檔案中增加新內容和改變原有內容等。
(3) 系統可用性(System Availability):指授權用戶的正常請求能及時、正確、安全地得到服務或回響。或者說,計算機中的資源可供授權用戶隨時進行訪問,系統不會拒絕服務。但是系統拒絕服務的情況在網際網路中卻很容易出現,因為連續不斷地向某個伺服器傳送請求就可能會使該伺服器癱瘓,以致系統無法提供服務,表現為拒絕服務 。
病毒
一種人為製造的隱藏在計算機中具有傳染力和破壞力的電腦程式或某種密碼。它利用信息通道或存儲介質,從一個計算機系統傳染到另一個計算機系統以至整個計算機網路。它由傳染部和行動部兩個基本部分組成:傳染部決定病毒傳播的速度、傳染方式和侵襲的範圍;行動部決定病毒危害的程度。計算機一旦受到感染,輕則侵占系統資源,降低計算機工作效率,重則破壞程式數據或硬體,甚至使系統癱瘓。
計算機病毒的發源地在美國。1987年以後計算機病毒在全世界廣泛傳播。中國1989年4月發現第一例計算機病毒——“小球”病毒,此後計算機病毒在國內迅速蔓延。已經發現的多種病毒大部分是通過各種途徑從國外傳入的,也有中國人自己編寫的。
隨著計算機網路及信息系統的發展,計算機病毒的傳播速度及危害程度越來越大,計算機病毒的生產也向多樣化、自動化、密碼化和智慧型化趨勢發展,使抗毒工作更加困難。抗計算機病毒的措施主要依靠管理,如不使用、不複製不知底細的軟體,採用隔離辦法限制病毒傳染等。技術上可使用抗計算機病毒的“疫苗”程式,防止計算機病毒的傳染;也可用檢測、清除軟體來清除計算機病毒。計算機病毒的擴散和防治是一個對抗性的領域,必須制訂有關法律來防止計算機病毒的進一步擴散。中國由公安部計算機安全監察司負責計算機病毒的防治工作 。