關(guān)于操作系統(tǒng)的基本常識
關(guān)于操作系統(tǒng)的基本常識
關(guān)于操作系統(tǒng),我們需要掌握一些基本的常識問題。下面由學(xué)習(xí)啦小編為大家整理了關(guān)于操作系統(tǒng)的基本常識的相關(guān)知識,希望對大家有幫助!
關(guān)于操作系統(tǒng)的基本常識
操作系統(tǒng)基本常識1:進程與線程
進程是一個具有獨立功能的程序的一次運行活動,是系統(tǒng)進行資源分配的一個基本單元。
線程是進程的一個實體,是cpu調(diào)度的基本單元,自己并不擁有系統(tǒng)資源,他的資源和該進程內(nèi)的其他線程共享。、
引入線程的優(yōu)點:
調(diào)度開銷小,易于調(diào)度;
方便的實現(xiàn)并發(fā);
充分利用多處理器的性能;
線程和進程的不同:
線程必定屬于某個進程;但是一個進程可以擁有多個線程并且至少擁有一個線程。
不同進程互相獨立,資源分開,但是線程共用資源,沒有獨立的內(nèi)存空間。
進程是程序的一次執(zhí)行,線程可以理解為該程序中一個片段的執(zhí)行。
程序和進程和線程的關(guān)系:
獨立功能的一次程序執(zhí)行可以開啟一個進程,同程序可以多次開啟形成多個進程,每個進程中又可以開啟線程,當然每個程序都至少會有一個線程,比如main
線程同步的方法:
互斥量,信號量,條件變量,臨界區(qū)。
操作系統(tǒng)基本常識2:內(nèi)核線程和用戶線程
內(nèi)核線程的建立和銷毀都是操作系統(tǒng)負責(zé),通過系統(tǒng)調(diào)用完成。
用戶線程不需要操作系統(tǒng)負責(zé),利用線程函數(shù)庫調(diào)用完成創(chuàng)建銷毀同步管理,并且允許自己定制自己的調(diào)度算法,調(diào)度的代價比內(nèi)核線程的代價低很多。
操作系統(tǒng)基本常識3:內(nèi)存管理
方式:按照控件利用率排序的話為:塊式管理<頁式管理<段式管理<段頁式管理(其中段頁式管理每次操作要訪問三次內(nèi)存)
分頁和分段的區(qū)別:
頁是信息的物理單位,分頁是出于系統(tǒng)管理的需要
段式信息的邏輯段位,分段是為了滿足用戶的需要,每次分頁的大小也取決于用戶
虛擬內(nèi)存:虛擬內(nèi)存是內(nèi)存管理的一種技術(shù),相對于物理內(nèi)存而言,可以理解為假內(nèi)存,使得應(yīng)用程序把內(nèi)存當做連續(xù)可用,允許程序員編寫比實際系統(tǒng)擁有的內(nèi)存大得多的程序,實際上他的有一部分內(nèi)存暫時存儲于外部存儲上面,在需要時在進行數(shù)據(jù)交換
虛擬內(nèi)存的好處:
擴大地址空間
內(nèi)存保護。每個進程獨自運行在自己的虛擬內(nèi)存空間,互相不干擾,而且虛擬內(nèi)存還對特定的內(nèi)存地址進行寫保護。
當進程需要通信時,可以采用虛存共享的方式實現(xiàn)。
虛擬內(nèi)存的壞處:
建立很多的數(shù)據(jù)結(jié)構(gòu),占用額外的內(nèi)存。
虛擬地址到物理地址的轉(zhuǎn)換,增加了執(zhí)行時間。
頁面的換入換出需要磁盤io。
內(nèi)存碎片:多次進行內(nèi)存分配時就會出現(xiàn)內(nèi)存碎片。
內(nèi)存格式:(用戶使用段)(空白段)(用戶使用段)
內(nèi)碎片:分配給用戶的存儲空間(用戶使用段)沒有使用完,其他程序也無法使用的部分內(nèi)存,直到進程釋放。
外碎片:比如上面的空白段,他不屬于任何進程,但是又由于他太小不足以給與下一個進程分配空間,造成了外碎片。
操作系統(tǒng)基本常識4:cache替換算法
數(shù)據(jù)可以存放在cpu和內(nèi)存中,但是cpu處理速度快,容量小,內(nèi)存容量大,但是轉(zhuǎn)給cpu的速度慢。所以就需要cache來做一個折中,先從內(nèi)存調(diào)入cache再從cache調(diào)入cpu,又由于主存的快比cache多所以從主存調(diào)塊到chche中的時候,會出現(xiàn)該塊映射的映射的cache已經(jīng)被使用的情況,需要cache被迫騰出其中的某一塊來接受新塊,就需要替換。
隨機算法(RAND)
先進先出算法(FIFO)
近期最少使用算法(LRU)
最優(yōu)替換算法(OPT)
操作系統(tǒng)基本常識5:靜態(tài)鏈接和動態(tài)鏈接
靜態(tài)鏈接就是把要調(diào)用的函數(shù)或者是過程直接拷貝到可執(zhí)行文件中,當多個程序都需要調(diào)用該函數(shù)的時候,比較浪費內(nèi)存資源。
動態(tài)鏈接就是并沒有在被調(diào)用時復(fù)制到可執(zhí)行文件中,而是加入了一些重定位信息,當需要調(diào)用的時候到這里來執(zhí)行就ok了。
靜態(tài)鏈接庫:.lib文件,里面不允許再包含其他的動態(tài)或者靜態(tài)庫
動態(tài)鏈接庫:.dll文件
操作系統(tǒng)基本常識6:庫函數(shù)調(diào)用與系統(tǒng)調(diào)用
庫函數(shù)調(diào)用屬于上層,運行在用戶空間,屬于程序和用戶的一部分,不同的系統(tǒng)但是使用相同的庫那么效果就是一樣的。
系統(tǒng)調(diào)用是調(diào)用內(nèi)核提供給應(yīng)用程序的接口,屬于系統(tǒng)的一部分,而且不同的系統(tǒng)的系統(tǒng)調(diào)用是不一樣的。
操作系統(tǒng)基本常識7:用戶棧和內(nèi)核棧
內(nèi)核在創(chuàng)建線程的時候,會為進程創(chuàng)建相應(yīng)的堆棧,每個進程會有兩個棧,一個用戶棧,一個內(nèi)核棧,當進程在用戶空間時使用用戶棧,在內(nèi)核空間時使用內(nèi)核棧。并且通過設(shè)置堆棧指針寄存器的內(nèi)容可以在用戶棧和內(nèi)核棧之間相互轉(zhuǎn)換。