天天看點

作業系統與軟體工程學習筆記

版權聲明:本文為部落客原創文章,轉載注明出處http://blog.csdn.net/u013142781

慢慢發現,根據需求完成任務代碼其實并不是很難,遵循一些項目的規範,采用項目中統一的技術去實作對應的功能。東西都已經封裝好了,你隻需要使用一些工具或架構就可以輕易實作。

但是,你想要有質的提高,卻抛不開基礎知識,因為思維是最重要的。是以對一些基礎知識進行回顧,以下是對作業系統回顧後的總結。

在回顧中,收獲最大的是作業系統主要功能中的“記憶體擴充”,很值得借鑒學習的!

作業系統的基本特性

(1)并行性與并發性,并行性是指兩個或多個事件在同一時刻發生;并發性是指兩個或過個事件在同一時間間隔内發生;在多道程式環境下,并發性是指一段時間内宏觀上有多個程式在同時運作,但是在但處理機系統中,每一刻卻僅能有一道程式執行,故微觀上這些程式隻能分時地交替執行。對于多處理機。可以實作并行執行,多個程式同時運作。 

(2)引入程序,程序是指在系統中能獨立運作并作為資源配置設定的基本機關。 

(3)引入線程,通常把程序作為配置設定資源的基本機關,而把線程作為獨立運作的獨立運作和獨立排程的基本機關。 

(4)共享性,在作業系統環境下,所謂共享,是指系統中的資源可供記憶體中多個并發執行的程序(線程)共同使用。 

(5)互斥共享,僅當a程序通路完并釋放該資源後,才允許另一程序對該資源通路。 

(6)同時通路,交替通路。 

(7)虛拟技術,作業系統中所謂的“虛拟”是指通過某種技術把一個實體實體變為若幹個邏輯上的對應物。虛拟技術分為時分複用技術和空複用技術。 

(8)時分複用技術,人們利用時分複用技術,将一條實體信道虛拟為多條邏輯信道,将每條信道提供一對使用者通話。為每道程式建立一個程序,讓多道程式并發地執行。以此來分時使用一台處理機。 

(9)空分複用技術,通常一台機器上隻配置一台硬碟,我們可以通過虛拟磁盤技術将一台硬碟虛拟為多台虛拟磁盤。 

(10)異步,如列印請求,而此時列印機正在為其他程序列印,由于列印機術語臨界資源,是以正在執行的程序必須等待,且放棄處理機,知道列印機空閑,并在此把處理機配置設定該程序時,該程序方能繼續執行。程序是以人們不可預知的速度向前推進,此即程序的異步性。

作業系統的主要功能

(1)程序控制,主要功能時為作業建立程序,撤銷已結束的程序,以及控制程序在運作過程中的狀态轉換。 

(2)程序同步,程序同步的主要任務是為多個程序(含線程)的運作進行協調。 

(3)程序通信,程序通信的任務就是用來實作在互相合作的程序之間的資訊交換。 

(5)記憶體配置設定,允許正在運作的程式申請附加的記憶體空間。 

(6)記憶體保護,確定每道使用者程式都隻在自己的記憶體空間内運作,彼此互不幹擾。 

(7)在多道程式環境下,每道程式不可能都從“0”位址開始裝入記憶體,這就緻使位址空間内的邏輯位址和記憶體空間中的實體位址不相一緻。為使程式正确運作,存儲器管理必須提供位址映射功能。 

(8)記憶體擴充,用于實作請求調入功能和置換功能。請求調入功能允許在裝入一部分使用者程式和資料的情況下,便能啟動該程式運作。在程式運作過程中,若若發現要繼續運作時所需的程式和資料尚未裝入記憶體,可向os送出請求,有os從磁盤中将所需部分調入記憶體。置換功能,若發現在記憶體中已無足夠的空間來裝入需要調入的程式和資料時,系統應能從記憶體中的一部分暫時不用的程式和資料調至盤上,以騰出記憶體空間。 

(9)緩沖管理,例如在i/o裝置和cpu之間引入緩沖,可有效緩和兩者速度不比對的沖突,提高cpu使用率。 

(10)裝置配置設定,處理過程是:裝置處理程式首先檢查i/o請求的合法性,了解裝置狀态是否空閑的,了解有關的傳遞參數以及設定裝置的工作方式,blabla….. 

(11)檔案管理功能,分為檔案存儲空間管理、目錄管理、檔案讀寫/管理和保護 

(12)作業系統與使用者之間的接口,分為使用者接口和程式接口。使用者接口是提供給使用者使用的接口,使用者通過該接口取得作業系統的服務;程式接口是提供給程式員在程式設計時使用的接口,是使用者程式取得作業系統服務的唯一途徑。

一、軟體生命周期 

軟體定義 

軟體任務立項:名稱、性質、目标、意義、規模 

項目可行性分析:技術、經濟、操作可行性分析 

制定項目計劃:人員、組織、進度資金、裝置等多方面 

軟體需求分析:功能、性能、資料、操作等方面 

軟體開發期 

軟體概要設計:軟體構造、接口、全局資料和資料環境、子產品結構、子產品接口等 

編碼和單元測試:程式員完成實作并單元測試 

系統內建測試:把測試過的各個子產品使用如漸增內建政策組裝起來 

系統确認驗證:需要以使用者為主體、以需求規格說明書對軟體的定義為依據進行逐項确認。 

軟體運作與維護

二、軟體開發六大模型 

(1)瀑布模型 

瀑布模型是一種基于裡程碑的階段過程模型,它所提供的裡程碑式 的工作流程,為軟體項 目按規程管理提供了便利,例如,按階段制定項目計劃,分階段進行成本核算,進行階段性評 審等;并對提高軟體産品品質提供了有效保證。 

瀑布模型的作用還展現在文檔上。每個階段都必須完成規定的文檔,并在每個階段結束前 都要對所完成的文檔進行評審。這種工作方式有利于軟體錯誤的盡早發現和盡早解決,并為軟 件系統今後的維護帶來了很大的便利。 

瀑布模型是一種線性模型,要求項目嚴格按規程推進,必須等到所有開發工作全部作完以後才能獲得可以傳遞的軟體産品。應該講,通過瀑布模型并不能對軟體系統進行快速建立,對 于一些急于傳遞的軟體系統的開發,瀑布模型有操作上的不便。 

瀑布模型主要适合于需求明确,且無大的需求變更的軟體開發,例如,編譯系統、作業系統等。但是,對于那些分析初期需求模糊的項目,例如那些需要使用者共同參加需求定義的項目,瀑布模型也有使用上的不便。

(2)原型模型,分為快速原型方法、原型進化模型 

<1>快速原型方法 

快速原型方法是原型模型在軟體分析、設計階段的應用,用來解決使用者對軟體系統在需求 上的模糊認識,或用來試探某種設計是否能夠獲得預期結果。 

快速原型是用來擷取使用者需求的,或是用來試探設計是否有效的。一旦需求或設計确 定下來了,原型就将被抛棄。是以,快速原型要求快速建構、容易修改,以節約原型建立成本、 加快開發速度。快速原型往往采用一些快速生成工具建立,例如4gl 語言。目前,microsoftvisual basic、inprise delphi 等基于元件的可視化開發工具,也被應用于原型建立之中,并 且都是非常有效的快速原型建立工具,而且還可用于原型進化。 

快速原型是暫時使用的,是以并不要求完整。它往往針對某個局部問題建立專門原型, 如界面原型、工作流原型、查詢原型等。 

快速原型不能貫穿軟體的整個生命周期,它需要和其他的過程模型相結合才能産生作 用。例如,在瀑布模型中應用快速原型,以解決瀑布模型在需求分析時期存在的不足。 

<2>原型進化模型 

原型進化對開發過程的考慮是,針對有待開發的軟體系統,先開發一個原型系統給使用者使 用,然後根據使用者使用情況的意見回報,對原型系統不斷修改,使它逐漸接近并最終到達開發目标。跟快速原型不同的是,快速原型在完成需求定義後将被抛棄,而原型進化所要建立的原型則是一個今後将要投入應用的系統,隻是所建立的原型系統在功能、性能等方面還有許多不足,還沒有達到最終開發目标,需要不斷改進。

(3)增量模型 

增量模型是瀑布模型和原型進化模型的綜合,它對軟體過程的考慮是:在整體上按照瀑布 模型的流程實施項目開發,以友善對項目的管理;但在軟體的實際建立中,則将軟體系統按功 能分解為許多增量構件,并以構件為機關逐個地建立與傳遞,直到全部增量構件建立完畢,并 都被內建到系統之中傳遞使用者使用。 

如同原型進化模型一樣,增量模型逐漸地向使用者傳遞軟體産品,但不同于原型進化模型的 是,增量模型在開發過程中所傳遞的不是完整的新版軟體,而隻是新增加的構件。

(4)螺旋模型 

螺旋模型即是一種引入了風險分析與規避機制的過程模型,是瀑布模型、快速原型方法和 風險分析方法的有機結合。 

螺旋模型基本方法是,在各個階段建立原型進行項目試驗,以降低各個階段可能遇到的項 目風險。例如,為了降低使用者對軟體界面不滿意的風險,可以在需求分析階段建立“界面原型”;為了降低軟體不能按設計要求實作的風險,可以在設計階段針對所采用的技術建立“仿真試探原型”。

(5)噴泉模型 

噴泉模型的過程方法所考慮的是,基于面向對象方法所帶來的便利,對軟體的分析、設計和實作按照疊代的方式交替進行,并通過進化的方式,使軟體分階段逐漸完整、逐漸求精。例如,第一階段軟體開發的目标可以是軟體的基本功能;第二階段可以是在第一階段建立的軟體的基礎上,對軟體進行進一步的完善,并實作軟體的主要功能;第三階段則是在第二階段的基礎上,對軟體進行更加完整的開發,并以實作軟體全部功能作為建立目标。

(6)元件複用模型 

自有軟體開發以來,軟體複用就一直存在,并産生了一些比較常用的軟體複用方法。傳統的軟體複用方法是建立源程式函數庫,可以把這些函數用在許多不同的軟體上面。而在面向對 象技術中,軟體複用則可以通過建立類子產品來實作。由于大多數的類子產品具有繼承性,是以, 比起傳統方法,基于類子產品的複用效果要好一些。 

元件技術是基于面向對象技術發展起來的,可以把元件看作為一個盒子,它裡面封裝了許多個類子產品。是以,元件比類更大、更 抽象,其中包含了更多的功能,更具有通用性,更加有利于複用。

繼續閱讀