進程須要必定的資源(包括CPU時間、內存、文件、I/O設備)以完成其任務。這些資源能夠在進程建立時分配給進程,也能夠在執行進程時分配給進程。除了在建立時獲得各類物理和邏輯資源外,進程還能夠接受傳輸過來的各類初始化數據(輸入)。緩存
須要注意:程序本省並非進程,程序是被動的實體,而進程是一個活動的實體。多線程
進程是具備必定獨立功能的程序關於某個數據集合上的依次運行活動,進程是系統進行資源分配和調度的獨立單位。性能
線程是進程的一個實體,是CPU和分配的基本單位。線程本身基本不擁有系統資源,只擁有在運行中必不可少的資源(如程序計數器,寄存器和棧),可是它可與同屬一個進程的其餘線程共享進程所擁有的所有資源。spa
一個線程能夠建立和撤銷另外一個線程。同一個進程中的多個線程之間能夠併發執行。線程
相對進程而言,線程是一個更加接近於執行體的概念,它能夠與同進程中的其餘線程共享數據,但擁有本身的棧空間,擁有獨立的執行序列。設計
進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其餘進程產生影響,而線程只是進程中的不一樣執行路徑。線程有本身的堆棧和局部變量,但線程沒有單獨的地址空間,一個線程死掉等於整個進程死掉,因此多進程的程序要比多線程的程序健壯,但在進程切換時,消耗資源較大,效率要差一些。但對於一些要求同時進行而且又要共享某些變量的併發操做,只能用線程,不能用進程。blog
③進程在執行過程當中擁有獨立的內存單元,而多線程共享內存,從而極大地提升了程序的運行效率。
④每一個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。可是線程不能都獨立執行,必須依賴在應用程序中,由應用程序提供多個線程執行控制。
⑤多線程的意義在於一個應用程序,有多個執行部分能夠同時執行。但操做系統並無將多個線程看作多個獨立的應用,來實現進程的調度和管理以及資源分配。
線程執行開銷小,但不利於資源的管理和保護,而進程正相反。同時,線程適合在雙CPU系統上運行,而進程則能夠跨機器運行。
操做系統負責下述與進程管理相關的活動:
內存是能夠被CPU和I/O設備所共同快速發昂問的數據倉庫。CPU在獲取指令週期時從內存中讀取指令,而在獲取數據週期時對內存內的數據經行讀出和寫入(馮·諾依曼結構中)。若是一個程序須要執行,那麼它必須先變換成絕對地址並裝入內存。隨着程序的執行,進程能夠經過產生絕對地址來訪問內存中的程序指令和數據。最終,程序終止,其內存空間得以釋放,而且下一個程序能夠裝入並得以執行。
操做系統負責下述有關內存管理的活動:
文件系統管理:是操做系統最爲常見的組成部分。磁帶、磁盤、光盤是常見的存儲介質。每種介質須要經過一個設備來控制,如磁盤驅動器和磁帶驅動器等,擁有的屬性包括:訪問速度、容量、數據傳輸效率、訪問方法(順序或隨機)
文件是由其建立者定義的一組相關信息的集合。一般,文件表示程序(源程序和目標程序)和數據。數據文件可使數值的、字符的、字符數值或二進制的。文件能夠沒有格式,也能夠有嚴格的格式。
操做系統經過管理大容量存儲器,來實現文件這一抽象概念。文件一般組成目錄以方便使用。最後,當多個用戶能夠訪問文件時,須要控制由什麼人以及按照什麼方式來訪問文件。
操做系統負責如下有關文件管理的活動:
大容量存儲器管理:因爲內存過小不能容納全部數據和程序,加上掉電會失去全部數據,計算機系統必須提供二級存儲器(secondary storage)以備分內存。絕大多數現代計算機系統都採用硬盤做爲主要在線存儲介質來存儲程序和數據。
操做系統負責下面有關硬盤管理的活動:
因爲二級存儲器使用頻繁,所以必須高效。可是有時使用比二級存儲更慢價格更低的存儲器,如磁盤數據的備份、不多使用的數據、長期檔案存儲。磁帶驅動器以及磁帶、CD/DVD驅動器以及光盤就是典型的三級存儲(tertiary storage)設備。這些介質格式包括WORM(一次寫,屢次讀)和RW(讀-寫)。三級存儲對系統性能並非關鍵,但也要管理好。有些操做系統對之加以管理,而另外一些則將三級存儲管理交給應用程序管理。
高速緩存:信息一般保存在一個存儲系統中(如內存)。當使用它時,它會被臨時地複製到更快的存儲系統中——高速緩存。當須要特定信息時,首先檢查它是否在高速緩存中。若是是,可直接使用高速緩存中的信息;不然,使用位於內存中的信息,同時將其複製到高速緩存中以便下次使用。
因爲高速緩存大小有限,因此高速緩存管理(cache management)的設計很重要。對高速緩存大小和置換策略的仔細選擇能夠極大地提升性能。
I/O系統:操做系統的目的之一在於對用戶隱藏具體硬件設備的特性。例如,在UNIX系統中,I/O子系統對操做系統自己隱藏了I/O設備的特性。I/O子系統包括下面幾個部分: