Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          存儲(chǔ)管理方法詳解
          ?
          ??? 存儲(chǔ)管理是操作系統(tǒng)的重要組成部分,它負(fù)責(zé)計(jì)算機(jī)系統(tǒng)內(nèi)存空間的管理。其目的是充分利用內(nèi)存空間,為多道程序并發(fā)執(zhí)行提供存儲(chǔ)基礎(chǔ),并盡可能地方便用戶使用。
          ?
          ??? 采用多道程序設(shè)計(jì)技術(shù),就要在內(nèi)存中同時(shí)存放多道程序,這就要求存儲(chǔ)管理解決以下四個(gè)重要問題,以達(dá)到盡可能方便用戶使用和充分利用內(nèi)存以提高內(nèi)存利用率的目的:
          ?
          ??? 1.內(nèi)存空間的分配和回收
          ??? 2.內(nèi)存空間的共享與存儲(chǔ)保護(hù)
          ??? 3.地址映射(地址重定位)
          ??? 4.內(nèi)存擴(kuò)充
          ?
          1、連續(xù)分區(qū)存儲(chǔ)管理
          ?
          ??? 這是一種最簡單的存儲(chǔ)管理方式,系統(tǒng)是將整個(gè)內(nèi)存除了給操作系統(tǒng)劃分出一塊空間外,其余部分的空間都分配給一個(gè)作業(yè)使用。當(dāng)作業(yè)被調(diào)度時(shí),進(jìn)程全部進(jìn)入內(nèi)存,一旦完成,所有主存恢復(fù)空閑。個(gè)人機(jī)可采用此種管理方法,它不適宜多道程序設(shè)計(jì)系統(tǒng)。
          ?
          ?
          2、固定分區(qū)存儲(chǔ)管理
          ?
          ??? 這是支持多道程序設(shè)計(jì)的最簡單存儲(chǔ)管理方法。它的其基本思想是將內(nèi)存劃分成若干固定大小的分區(qū),每個(gè)分區(qū)中最多只能裝入一個(gè)作業(yè)。當(dāng)作業(yè)申請內(nèi)存時(shí),系統(tǒng)按一定的算法為其選擇一個(gè)適當(dāng)?shù)姆謪^(qū),并裝入內(nèi)存運(yùn)行。由于分區(qū)大小是事先固定的,因而可容納作業(yè)的大小受到限制,而且當(dāng)用戶作業(yè)的地址空間小于分區(qū)的存儲(chǔ)空間時(shí),容易產(chǎn)生磁盤碎片,造成存儲(chǔ)空間浪費(fèi)。
          ?
          ?
          3、可重定位分區(qū)存儲(chǔ)管理
          ?
          ??? 這是克服固定分區(qū)碎片問題的一種存儲(chǔ)分配方法,它不是預(yù)先將內(nèi)存劃分分區(qū),而是在作業(yè)裝入內(nèi)存時(shí)建立分區(qū),使分區(qū)的大小正好與作業(yè)要求的存儲(chǔ)空間相等。這種處理方式使內(nèi)存分配有較大的靈活性,也提高了內(nèi)存利用率。但是隨著對內(nèi)存不斷地分配、釋放操作會(huì)引起存儲(chǔ)碎片的產(chǎn)生。
          ?
          ??? 注:使用首先適應(yīng)/最優(yōu)適應(yīng)/最壞適應(yīng)的方式即這種。
          ?
          ?
          4、非請求分頁式存儲(chǔ)管理
          ?
          ??? 非請求分頁式是指將存儲(chǔ)空間和作業(yè)的地址空間分成若干個(gè)等分部分的分頁式,要求把進(jìn)程所需要的頁面全部調(diào)入主存后作業(yè)方能運(yùn)行,因此,當(dāng)內(nèi)存可用空間小于作業(yè)所需的地址空間時(shí),作業(yè)無法運(yùn)行。它克服了分區(qū)存儲(chǔ)管理中碎片多和緊縮處理時(shí)間長的缺點(diǎn),支持多道程序設(shè)計(jì),但不支持虛擬存儲(chǔ)
          ?
          ?
          5、請求分頁式存儲(chǔ)管理
          ?
          ??? 與非請求分頁式一樣將存儲(chǔ)空間和作業(yè)的地址空間分成若干個(gè)等分部分,當(dāng)進(jìn)程需要用到某個(gè)頁面時(shí)將該頁面調(diào)入主存,把那些暫時(shí)無關(guān)的頁面留在主存外。它支持虛擬存儲(chǔ),克服了分區(qū)存儲(chǔ)管理中碎片多和緊縮處理時(shí)間長的缺點(diǎn),支持多道程序設(shè)計(jì),但是它不能實(shí)現(xiàn)對最自然的以段位單位的共享與存儲(chǔ)保護(hù)。
          ?
          ??? 注1:因?yàn)槌绦蛲ǔJ且远挝粏挝粍澐值模砸远挝粏挝蛔钭匀弧?/font>
          ??? 注2:這里會(huì)有先進(jìn)先出調(diào)度算法(FIFO)、最近最少使用調(diào)度算法(LRU)、最近最不經(jīng)常使用調(diào)度算法(LFU)這樣的算法。
          ?
          ?
          6、段頁式存儲(chǔ)管理
          ?
          ??? 這是分段式和分頁式結(jié)合的存儲(chǔ)管理方法,充分利用了分段管理和分頁管理的優(yōu)點(diǎn)。作業(yè)按邏輯結(jié)構(gòu)分段,段內(nèi)分頁,內(nèi)存分塊。作業(yè)只需部分頁裝入即可運(yùn)行,所以支持虛擬存儲(chǔ),可實(shí)現(xiàn)動(dòng)態(tài)鏈接和裝配。
          ?
          ??? 注:邏輯地址與物理地址的對應(yīng)關(guān)系。
          ?
          ?
          ?
          ?
          具體的講解可以看以下地址:
          ?
          ?
          ********************************************************************************************************
          ?
          第三章 存儲(chǔ)管理

          ??? 存儲(chǔ)管理是操作系統(tǒng)的重要組成部分,它負(fù)責(zé)計(jì)算機(jī)系統(tǒng)內(nèi)存空間的管理。其目的是充分利用內(nèi)存空間,為多道程序并發(fā)執(zhí)行提供存儲(chǔ)基礎(chǔ),并盡可能地方便用戶使用。

          3.1 存儲(chǔ)管理的目的

          ??? 采用多道程序設(shè)計(jì)技術(shù),就要在內(nèi)存中同時(shí)存放多道程序,這就要求存儲(chǔ)管理解決以下四個(gè)重要問題,以達(dá)到盡可能方便用戶使用和充分利用內(nèi)存以提高內(nèi)存利用率的目的。

          ??? 一、內(nèi)存空間的分配和回收

          ??? 二、內(nèi)存空間的共享與存儲(chǔ)保護(hù)

          ??? 三、地址映射(地址重定位)

          ??? 四、內(nèi)存擴(kuò)充

          3.2 單用戶連續(xù)存儲(chǔ)管理

          ??? 這是一種最簡單的存儲(chǔ)管理方式,系統(tǒng)是將整個(gè)內(nèi)存除了給操作系統(tǒng)劃分出一塊空間外,其余部分的空間都分配給一個(gè)作業(yè)使用。個(gè)人機(jī)可采用此種管理方法,它不適宜多道程序設(shè)計(jì)系統(tǒng)。

          ??? 可以采用靜態(tài)重定位方式完成地址映射;處理器在執(zhí)行指令時(shí),要檢查其絕對地址是否屬于規(guī)定范圍內(nèi)的地址,如果屬于,則按此地址訪問,否則將產(chǎn)生“地址越界”中斷。

          ??? 某些系統(tǒng)還采用對換技術(shù)(Swapping)讓多個(gè)進(jìn)程輪流進(jìn)入內(nèi)存,這種技術(shù)多用于分時(shí)系統(tǒng),隨著進(jìn)程調(diào)度,將內(nèi)存中的進(jìn)程暫時(shí)移到外存,而把外存中某一進(jìn)程換進(jìn)內(nèi)存。

          3.3 固定分區(qū)存儲(chǔ)管理

          ??? 其基本思想是將內(nèi)存劃分成若干固定大小的分區(qū),每個(gè)分區(qū)中最多只能裝入一個(gè)作業(yè)。當(dāng)作業(yè)申請內(nèi)存時(shí),系統(tǒng)按一定的算法為其選擇一個(gè)適當(dāng)?shù)姆謪^(qū),并裝入內(nèi)存運(yùn)行。由于分區(qū)大小是事先固定的,因而可容納作業(yè)的大小受到限制,而且當(dāng)用戶作業(yè)的地址空間小于分區(qū)的存儲(chǔ)空間時(shí),造成存儲(chǔ)空間浪費(fèi)。

          ??? 一、空間的分配與回收

          ??? 系統(tǒng)設(shè)置一張“分區(qū)分配表”來描述各分區(qū)的使用情況,登記的內(nèi)容應(yīng)包括:分區(qū)號、起始地址、長度和占用標(biāo)志。其中占用標(biāo)志為“ 0 ”時(shí),表示目前該分區(qū)空閑;否則登記占用作業(yè)名(或作業(yè)號)。有了“分區(qū)分配表”,空間分配與回收工作是比較簡單的。

          ??? 二、地址轉(zhuǎn)換和存儲(chǔ)保護(hù)

          ??? 固定分區(qū)管理可以采用靜態(tài)重定位方式進(jìn)行地址映射。

          為了實(shí)現(xiàn)存儲(chǔ)保護(hù),處理器設(shè)置了一對“下限寄存器”和“上限寄存器”。當(dāng)一個(gè)已經(jīng)被裝入主存儲(chǔ)器的作業(yè)能夠得到處理器運(yùn)行時(shí),進(jìn)程調(diào)度應(yīng)記錄當(dāng)前運(yùn)行作業(yè)所在的分區(qū)號,且把該分區(qū)的下限地址和上限地址分別送入下限寄存器和上限寄存器中。處理器執(zhí)行該作業(yè)的指令時(shí)必須核對其要訪問的絕對地址是否越界。

          ??? 三、多作業(yè)隊(duì)列的固定分區(qū)管理

          ??? 為避免小作業(yè)被分配到大的分區(qū)中造成空間的浪費(fèi),可采用多作業(yè)隊(duì)列的方法。即系統(tǒng)按分區(qū)數(shù)設(shè)置多個(gè)作業(yè)隊(duì)列,將作業(yè)按其大小排到不同的隊(duì)列中,一個(gè)隊(duì)列對應(yīng)某一個(gè)分區(qū),以提高內(nèi)存利用率。

          3.4 可變分區(qū)

          ??? 可變分區(qū)存儲(chǔ)管理不是預(yù)先將內(nèi)存劃分分區(qū),而是在作業(yè)裝入內(nèi)存時(shí)建立分區(qū),使分區(qū)的大小正好與作業(yè)要求的存儲(chǔ)空間相等。這種處理方式使內(nèi)存分配有較大的靈活性,也提高了內(nèi)存利用率。但是隨著對內(nèi)存不斷地分配、釋放操作會(huì)引起存儲(chǔ)碎片的產(chǎn)生。

          ??? 一、空間的分配與回收

          ??? 采用可變分區(qū)存儲(chǔ)管理,系統(tǒng)中的分區(qū)個(gè)數(shù)與分區(qū)的大小都在不斷地變化,系統(tǒng)利用“空閑區(qū)表”來管理內(nèi)存中的空閑分區(qū),其中登記空閑區(qū)的起始地址、長度和狀態(tài)。當(dāng)有作業(yè)要進(jìn)入內(nèi)存時(shí),在“空閑區(qū)表”中查找狀態(tài)為“未分配”且長度大于或等于作業(yè)的空閑分區(qū)分配給作業(yè),并做適當(dāng)調(diào)整;當(dāng)一個(gè)作業(yè)運(yùn)行完成時(shí),應(yīng)將該作業(yè)占用的空間作為空閑區(qū)歸還給系統(tǒng)。

          ??? 可以采用首先適應(yīng)算法、最佳(優(yōu))適應(yīng)算法和最壞適應(yīng)算法三種分配策略之一進(jìn)行內(nèi)存分配。

          ??? 二、地址轉(zhuǎn)換和存儲(chǔ)保護(hù)

          ??? 可變分區(qū)存儲(chǔ)管理一般采用動(dòng)態(tài)重定位的方式,為實(shí)現(xiàn)地址重定位和存儲(chǔ)保護(hù),系統(tǒng)設(shè)置相應(yīng)的硬件:基址 / 限長寄存器(或上界 / 下界寄存器)、加法器、比較線路等。

          ??? 基址寄存器用來存放程序在內(nèi)存的起始地址,限長寄存器用來存放程序的長度。處理機(jī)在執(zhí)行時(shí),用程序中的相對地址加上基址寄存器中的基地址,形成一個(gè)絕對地址,并將相對地址與限長寄存器進(jìn)行計(jì)算比較,檢查是否發(fā)生地址越界。

          ??? 三、存儲(chǔ)碎片與程序的移動(dòng)

          ??? 所謂碎片是指內(nèi)存中出現(xiàn)的一些零散的小空閑區(qū)域。由于碎片都很小,無法再利用。如果內(nèi)存中碎片很多,將會(huì)造成嚴(yán)重的存儲(chǔ)資源浪費(fèi)。解決碎片的方法是移動(dòng)所有的占用區(qū)域,使所有的空閑區(qū)合并成一片連續(xù)區(qū)域,這一技術(shù)稱為移動(dòng)技術(shù)(緊湊技術(shù))。移動(dòng)技術(shù)除了可解決碎片問題還使內(nèi)存中的作業(yè)進(jìn)行擴(kuò)充。顯然,移動(dòng)帶來系統(tǒng)開銷加大,并且當(dāng)一個(gè)作業(yè)如果正與外設(shè)進(jìn)行 I/O 時(shí),該作業(yè)是無法移動(dòng)的。

          3.5 頁式存儲(chǔ)管理

          3.5.1 基本原理

          ??? 1 .等分內(nèi)存

          ??? 頁式存儲(chǔ)管理將內(nèi)存空間劃分成等長的若干區(qū)域,每個(gè)區(qū)域的大小一般取 2 的整數(shù)冪,稱為一個(gè)物理頁面有時(shí)稱為塊。內(nèi)存的所有物理頁面從 0 開始編號,稱作物理頁號。

          ??? 2 .邏輯地址

          ??? 系統(tǒng)將程序的邏輯空間按照同樣大小也劃分成若干頁面,稱為邏輯頁面也稱為頁。程序的各個(gè)邏輯頁面從 0 開始依次編號,稱作邏輯頁號或相對頁號。每個(gè)頁面內(nèi)從 0 開始編址,稱為頁內(nèi)地址。程序中的邏輯地址由兩部分組成:

          邏輯地址

          頁號p

          頁內(nèi)地址 d

          ??? 3 .內(nèi)存分配

          ??? 系統(tǒng)可用一張“位示圖”來登記內(nèi)存中各塊的分配情況,存儲(chǔ)分配時(shí)以頁面(塊)為單位,并按程序的頁數(shù)多少進(jìn)行分配。相鄰的頁面在內(nèi)存中不一定相鄰,即分配給程序的內(nèi)存塊之間不一定連續(xù)。

          ??? 對程序地址空間的分頁是系統(tǒng)自動(dòng)進(jìn)行的,即對用戶是透明的。由于頁面尺寸為 2 的整數(shù)次冪,故相對地址中的高位部分即為頁號,低位部分為頁內(nèi)地址。

          3.5.2 實(shí)現(xiàn)原理

          ??? 1 .頁表

          ??? 系統(tǒng)為每個(gè)進(jìn)程建立一張頁表,用于記錄進(jìn)程邏輯頁面與內(nèi)存物理頁面之間的對應(yīng)關(guān)系。地址空間有多少頁,該頁表里就登記多少行,且按邏輯頁的順序排列,形如:

          邏輯頁號

          主存塊號

          0

          B0

          1

          B1

          2

          B2

          3

          B3

          ??? 2 .地址映射過程

          ??? 頁式存儲(chǔ)管理采用動(dòng)態(tài)重定位,即在程序的執(zhí)行過程中完成地址轉(zhuǎn)換。處理器每執(zhí)行一條指令,就將指令中的邏輯地址( p,d )取來從中得到邏輯頁號 (p) ,硬件機(jī)構(gòu)按此頁號查頁表,得到內(nèi)存的塊號 B’ ,便形成絕對地址( B’,d , 處理器即按此地址訪問主存。

          ??? 3 .頁面的共享與保護(hù)

          ??? 當(dāng)多個(gè)不同進(jìn)程中需要有相同頁面信息時(shí),可以在主存中只保留一個(gè)副本,只要讓這些進(jìn)程各自的有關(guān)項(xiàng)中指向內(nèi)存同一塊號即可。同時(shí)在頁表中設(shè)置相應(yīng)的“存取權(quán)限”,對不同進(jìn)程的訪問權(quán)限進(jìn)行各種必要的限制。

          3.6 段式存儲(chǔ)管理

          3 6 1 基本原理

          ??? 1.邏輯地址空間

          ??? 程序按邏輯上有完整意義的段來劃分,稱為邏輯段。例如主程序、子程序、數(shù)據(jù)等都可各成一段。將一個(gè)程序的所有邏輯段從0開始編號,稱為段號。每一個(gè)邏輯段都是從0開始編址,稱為段內(nèi)地址。

          ??? 2.邏輯地址

          ??? 程序中的邏輯地址由段號和段內(nèi)地址(s,d)兩部分組成。

          ??? 3.內(nèi)存分配

          ??? 系統(tǒng)不進(jìn)行預(yù)先劃分,而是以段為單位進(jìn)行內(nèi)存分配,為每一個(gè)邏輯段分配一個(gè)連續(xù)的內(nèi)存區(qū)(物理段)。邏輯上連續(xù)的段在內(nèi)存不一定連續(xù)存放。

          3.6.2實(shí)現(xiàn)方法

          ??? 1.段表

          ??? 系統(tǒng)為每個(gè)進(jìn)程建立一張段表,用于記錄進(jìn)程的邏輯段與內(nèi)存物理段之間的對應(yīng)關(guān)系,至少應(yīng)包括邏輯段號、物理段首地址和該段長度三項(xiàng)內(nèi)容。

          ??? 2.建立空閑區(qū)表

          ??? 系統(tǒng)中設(shè)立一張內(nèi)存空閑區(qū)表,記錄內(nèi)存中空閑區(qū)域情況,用于段的分配和回收內(nèi)存。

          ??? 3.地址映射過程

          段式存儲(chǔ)管理采用動(dòng)態(tài)重定位,處理器每執(zhí)行一條指令,就將指令中的邏輯地址( s,d )取來從中得到邏輯段號 (s) ,硬件機(jī)構(gòu)按此段號查段表,得到該段在內(nèi)存的首地址 S’ 該段在內(nèi)存的首地址 S’ 加上段內(nèi)地址 d ,便形成絕對地址( S’+d ),處理器即按此地址訪問主存。

          3 6 3 段頁式存儲(chǔ)管理

          ??? 頁式存儲(chǔ)管理的特征是等分內(nèi)存,解決了碎片問題;段式存儲(chǔ)管理的特征是邏輯分段,便于實(shí)現(xiàn)共享。為了保持頁式和段式上的優(yōu)點(diǎn),結(jié)合兩種存儲(chǔ)管理方案,形成了段頁式存儲(chǔ)管理。

          ??? 段頁式存儲(chǔ)管理的基本思想是:把內(nèi)存劃分為大小相等的頁面;將程序按其邏輯關(guān)系劃分為若干段;再按照頁面的大小,把每一段劃分成若干頁面。程序的邏輯地址由三部分組成,形式如下:

          邏輯地址

          段號 s

          頁號 p

          頁內(nèi)地址 d

          ??? 內(nèi)存是以頁為基本單位分配給每個(gè)程序的,在邏輯上相鄰的頁面內(nèi)存不一定相鄰。

          ?? ? 系統(tǒng)為每個(gè)進(jìn)程建立一張段表,為進(jìn)程的每一段各建立一張頁表。地址轉(zhuǎn)換過程,要經(jīng)過查段表、頁表后才能得到最終的物理地址。

          3.7 虛擬存儲(chǔ)管理

          ??? 前面介紹的各種存儲(chǔ)管理方案有一點(diǎn)是共同的,即當(dāng)一個(gè)參與并發(fā)執(zhí)行的進(jìn)程運(yùn)行時(shí),其整個(gè)程序都在內(nèi)存,存在的缺點(diǎn)是:若一個(gè)進(jìn)程的尺寸比內(nèi)存可用空間大,則該進(jìn)程無法運(yùn)行;而實(shí)際上由于局部特性,一個(gè)進(jìn)程在運(yùn)行的任一階段只使用所占存儲(chǔ)空間的一部分,因此未用到的內(nèi)存區(qū)域就被浪費(fèi)。

          ??? 虛擬存儲(chǔ)管理是當(dāng)進(jìn)程要求運(yùn)行時(shí),不是將它的全部信息裝入內(nèi)存,而是將其一部分先裝入內(nèi)存,另一部分暫時(shí)留在外存(通常是磁盤)。進(jìn)程在運(yùn)行過程中,如果要訪問的信息不在內(nèi)存時(shí),發(fā)中斷由操作系統(tǒng)將它們調(diào)入內(nèi)存,以保證進(jìn)程的正常運(yùn)行。

          ??? 虛擬存儲(chǔ)管理分為頁式虛擬存儲(chǔ)管理、段式虛擬存儲(chǔ)管理和段頁式虛擬存儲(chǔ)管理。

          3.7.1頁式虛擬存儲(chǔ)管理

          ??? 一、基本原理

          ??? 基本思想是,在進(jìn)程開始執(zhí)行之前,不是裝入全部頁面,而是只裝入一個(gè)或幾個(gè)頁面,然后根據(jù)進(jìn)程執(zhí)行的需要,動(dòng)態(tài)地裝入其他頁面。

          ??? 頁表中將增加若干項(xiàng):標(biāo)志位(又稱駐留位),指示該頁是否裝入內(nèi)存;外存地址給出該頁在外存(磁盤)的地址。

          ??? 地址映射時(shí)當(dāng)從頁表標(biāo)志位得知此頁不在內(nèi)存時(shí),發(fā)缺頁中斷。此時(shí)暫停進(jìn)程執(zhí)行,CPU轉(zhuǎn)去執(zhí)行缺頁中斷處理程序,負(fù)責(zé)把所需的頁從外存調(diào)入到內(nèi)存某空閑塊中,并把物理頁號填入頁表、更改標(biāo)志位,然后再返回繼續(xù)執(zhí)行被中斷的進(jìn)程。

          ??? 二、頁面淘汰

          ??? 當(dāng)內(nèi)存已無空閑塊而又發(fā)生缺頁中斷時(shí),必須在內(nèi)存中選擇一頁面將其淘汰并寫回到外存,然后再換進(jìn)新的頁面,這一過程稱為頁面調(diào)度,選擇被淘汰頁面的算法稱作頁面調(diào)度算法。如果頁面淘汰算法不合理,可能產(chǎn)生剛被淘汰出去的一頁,又要訪問它,因而又要把它調(diào)入,如此反復(fù),使系統(tǒng)的頁面調(diào)入調(diào)出工作非常頻繁從而降低系統(tǒng)效率,這種現(xiàn)象稱為“顛簸”或“抖動(dòng)”。

          ??? 常用的頁面調(diào)度算法有:先進(jìn)先出調(diào)度算法(FIFO)、最近最少使用調(diào)度算法(LRU)和最近最不經(jīng)常使用調(diào)度算法(LFU)。

          ?? 注意,對于單用戶連續(xù)、固定分區(qū)、可變分區(qū)存儲(chǔ)管理是不能實(shí)現(xiàn)虛擬存儲(chǔ)管理的,因?yàn)樗鼈兊墓餐c(diǎn)是,在對作業(yè)進(jìn)行內(nèi)存分配時(shí)是將整個(gè)作業(yè)全部、連續(xù)地放入內(nèi)存。

          ******************************************************************************************************** ?

          posted on 2009-04-25 21:13 decode360 閱讀(179) 評論(0)  編輯  收藏 所屬分類: 01.IT_Base
          主站蜘蛛池模板: 永康市| 虹口区| 黑山县| 娄底市| 河南省| 岚皋县| 杨浦区| 织金县| 江西省| 莒南县| 遵义县| 哈密市| 石林| 剑阁县| 唐海县| 伊金霍洛旗| 隆德县| 赤水市| 新源县| 泽普县| 基隆市| 乌鲁木齐县| 渭南市| 琼结县| 固始县| 潜山县| 皮山县| 株洲县| 襄垣县| 久治县| 永善县| 乐清市| 特克斯县| 涟源市| 合作市| 屏南县| 永胜县| 临夏县| 曲阳县| 怀仁县| 长宁区|