家電維修班,手機(jī)維修班,電腦維修班,電工班,焊工班,液晶電視維修班,電動工具維修班、電動車摩托車維修班、網(wǎng)絡(luò)營銷培訓(xùn)、網(wǎng)站設(shè)計(jì)培訓(xùn)、淘寶培訓(xùn)---全國招生 家電維修班,手機(jī)維修班,電腦維修班,電工班,焊工班,液晶電視維修班,電動工具維修班、電動車摩托車維修班、網(wǎng)絡(luò)營銷培訓(xùn)、網(wǎng)站設(shè)計(jì)培訓(xùn)、淘寶培訓(xùn)---全國招生

中日欧洲精品视频在线-中日韩在线观看-中日韩一区二区三区-中日韩精品视频在线观看-狂野欧美老黑粗又硬-狂野猛交xxxx吃奶

您的位置:網(wǎng)站首頁 > 電器維修資料網(wǎng) > 正文 >

Linux內(nèi)核的工作原理

★★★★★【文章導(dǎo)讀】:Linux內(nèi)核的工作原理具體內(nèi)容是:牛津字典中對"kernel"一詞的定義是:"較軟的、通常是一個(gè)堅(jiān)果可食用的部分。"當(dāng)然還有第二種定義:"某個(gè)東西核心或者 重要的部分。"對linux來說,它的kernel無疑屬于第二種解釋。讓我們來看看這個(gè)重要的東西是如何工…

來源: 日期:2013-11-27 21:58:34 人氣:標(biāo)簽:

Linux內(nèi)核的工作原理

    牛津字典中對"kernel"一詞的定義是:"較軟的、通常是一個(gè)堅(jiān)果可食用的部分。"當(dāng)然還有第二種定義:"某個(gè)東西核心或者 重要的部分。"對linux來說,它的kernel無疑屬于第二種解釋。讓我們來看看這個(gè)重要的東西是如何工作的,先從一點(diǎn)理論說起。

      廣義地來說kernel就是一個(gè)軟件,它在硬件和運(yùn)行在計(jì)算機(jī)(電腦)上的應(yīng)用程序之間提供了一個(gè)層。嚴(yán)格點(diǎn)從計(jì)算機(jī)(電腦)科學(xué)的角度來說,linux中的kernel指的是linus torvalds在90年代初期寫的那點(diǎn)代碼。

      所有的你在linux各版本中看到的其他東西--bash shell、kde窗口管理器、web瀏覽器、x服務(wù)器、tux racer以及所有的其他,都不過是運(yùn)行在linux上的應(yīng)用而已,而不是操作系統(tǒng)自身的一部分。為了給大家一個(gè)更加直觀的感覺,我來舉個(gè)例子,比如rhel5的安裝大概要占據(jù)2.5gb的硬盤(硬碟hdd存儲媒介之一)空間(具體多大當(dāng)然視你的選擇安裝來定),在這其中,kernel以及它的各個(gè)模塊組件,只有47mb,所占比例約為2%。

      那么kernel到底是如何工作的呢?如下面的圖表。kernel通過許多的進(jìn)入端口也就是我們從技術(shù)角度所說的系統(tǒng)調(diào)用,來使得運(yùn)行在它上面的應(yīng)用程序可用。kernel使用的系統(tǒng)調(diào)用比如"讀"和"寫"來提供你硬件的抽象(abstraction)。



      從程序員的視角來看,這些看起來只是普通的功能調(diào)用,然而實(shí)際上系統(tǒng)調(diào)用在處理器的操作模式上,從用戶空間到kernel空間有一個(gè)明顯的切換。同時(shí),系統(tǒng)調(diào)用提供了一個(gè)"linux虛擬機(jī)",可以被認(rèn)為是對硬件的抽象。

      kernel提供的更明顯的抽象之一是文件系統(tǒng)。舉例來說,這里有一段短的程序是用c寫的,它打開了一個(gè)文件并將內(nèi)容拷貝到標(biāo)準(zhǔn)的輸出:

#include <fcntl.h>
int main()
{
    int fd, count; char buf[1000];
    fd=open("mydata", o_rdonly);
    count = read(fd, buf, 1000);
    write(1, buf, count);
    close(fd);
}

    在這里,你可以看到四個(gè)系統(tǒng)調(diào)用的例子:打開、讀、寫和關(guān)閉。不談這段程序語法的細(xì)節(jié),重點(diǎn)是:通過這些系統(tǒng)調(diào)用linux kernel提供了一個(gè)文件的"錯(cuò)覺",而實(shí)際上它不過是一堆數(shù)據(jù)有了個(gè)名字,這樣一來你就不必去與硬件底層的堆棧、分區(qū)、頭和指針、分區(qū)等交涉了,而是直接以例子中的方式與硬件"交流",這也就是我們所說的抽象(abstraction),將底層的東西以更易懂的方式表達(dá)出來。

      系統(tǒng)文件是kernel提供的較為明顯的一種抽象。還有一些特性不是這么的明顯,比如進(jìn)程調(diào)度。任何一個(gè)時(shí)間,都可能有好幾個(gè)進(jìn)程或者程序等待著運(yùn)行。kernel的時(shí)間調(diào)度給每個(gè)進(jìn)程分配cpu時(shí)間,所以就一段時(shí)間內(nèi)來說,我們會有種錯(cuò)覺:電腦(計(jì)算機(jī)(電腦))同一時(shí)間運(yùn)行好幾個(gè)程序。這是另外一個(gè)c程序:

#include <stdlib.h>
main()
{
  if (fork()) {
    write(1, "parent\n", 7);
    wait(0);
    exit(0);
  }
  else {
    write(1, "child\n", 6);
    exit(0);
  }
}
   
      在這個(gè)程序中創(chuàng)建了一個(gè)新進(jìn)程,而原來的進(jìn)程(父進(jìn)程)和新進(jìn)程(子進(jìn)程)都編寫了標(biāo)準(zhǔn)輸出然后結(jié)束。注意系統(tǒng)調(diào)用fork(), exit() 以及 wait()執(zhí)行程序的創(chuàng)建、結(jié)束和各自同步。這是進(jìn)程管理和調(diào)度中 典型的簡單調(diào)用。

      kernel還有一個(gè)更加不易見到的功能,連程序員都不易察覺,那就是存儲管理。每個(gè)程序運(yùn)行得都好像它有個(gè)自己的地址空間來調(diào)用一樣,實(shí)際上它跟其他進(jìn)程一樣共享計(jì)算機(jī)(電腦)的物理存儲,如果系統(tǒng)運(yùn)行的存儲過低,它的地址空間甚至?xí)淮疟P的交互區(qū)暫時(shí)寄用。存儲管理的另外一個(gè)方面是防止一個(gè)進(jìn)程訪問其他進(jìn)程的地址空間--對于多進(jìn)程操作系統(tǒng)來說這是很必要的一個(gè)防范措施。

      kernel同樣還配置網(wǎng)絡(luò)鏈接協(xié)議比如ip、tcp和udp等,它們在網(wǎng)絡(luò)上提供機(jī)器對機(jī)器(machine-to-machine)和進(jìn)程對進(jìn)程(process-to-process)的通信。這里又會造成一種假象,即tcp在兩個(gè)進(jìn)程之間提供了一個(gè)固定連接--就好像連接兩個(gè)電話的銅線一樣,實(shí)際中卻并沒有固定的連接,特殊的引用協(xié)議比如ftp、dns和http是通過用戶級程序來實(shí)施的,而并非kernel的一部分。

      linux(像之前的unix)在安全方面口碑很好,這是因?yàn)閗ernel跟蹤記錄了每個(gè)運(yùn)行進(jìn)程的user id和group id,每次當(dāng)一個(gè)應(yīng)用企圖訪問資源(比如打開一個(gè)文件來寫入)的時(shí)候,kernel就會核對文件上的訪問許可然后做出允許/禁止的命令。這種訪問控制模式 終對整個(gè)linux系統(tǒng)的安全作用很大。

      kernel還提供了一大套模塊的集合,其功能包括如何處理與硬件設(shè)備交流的諸多細(xì)節(jié)、如何從磁盤讀取一個(gè)分區(qū)、如果從網(wǎng)絡(luò)接口卡獲取數(shù)據(jù)包等。有時(shí)我們稱這些為設(shè)備驅(qū)動。

      模塊化的kernel

      現(xiàn)在我們隊(duì)kernel是做什么的已經(jīng)有了一些了解,讓我們再來簡單看下它的物理組成。早期版本的linux kernel是整體式的,也就是說所有的部件都靜態(tài)地連接成一個(gè)(很大的)執(zhí)行文件。

相比較而言,現(xiàn)在的linux kernel是模塊化的:許多功能包含在模塊內(nèi),然后動態(tài)地載入kernel中。這使得kernel的內(nèi)核很小,而且在運(yùn)行kernel時(shí)可以不必reboot就能載入和替代模塊。

kernel的內(nèi)核在boot time時(shí)從位于/boot 目錄的一個(gè)文件加載進(jìn)存儲中,通常這個(gè)/boot 目錄會被叫做kernelversion,kernelversion與kernel版本有關(guān)。(如果你想知道你的kernel版本是什么,運(yùn)行命令行顯示系統(tǒng)信息-r。)kernel的模塊位于目錄/lib/modules/kernelversion之下,所有的組件都會在kernel安裝時(shí)被拷貝。

管理模塊

大部分情況下,linux管理它的模塊不需要你的幫忙,但是如果必要的時(shí)候有命令行可以來手動檢查和管理模塊。比如,為了查清楚當(dāng)前到底哪個(gè)模塊在載入kernel。這里有一個(gè)輸出的例子:

# lsmod
pcspkr              4224  0
hci_usb            18204  2
psmouse            38920  0
bluetooth          55908  7 rfcomm,l2cap,hci_usb
yenta_socket      27532  5
rsrc_nonstatic    14080  1 yenta_socket
isofs              36284  0

輸出的內(nèi)容包括:模塊的名字、大小、使用次數(shù)和依賴于它的模塊列表。使用次數(shù)對防止卸載當(dāng)前活躍的模塊非常總要。linux只允許使用次數(shù)為零的模塊被移除。

你可以使用modprobe來手動加載和卸載模塊,(還有兩個(gè)命令行叫做insmod和rmmod,但modprobe更易于使用因?yàn)樗詣右瞥四K依賴)。比如lsmod的輸出在我們的電腦(計(jì)算機(jī)(電腦))上顯示了一個(gè)名叫isofs的卸載模塊,它的使用次數(shù)是零而且沒有依賴模塊,(isofs是一個(gè)模塊,它支持cd上使用的iso系統(tǒng)文件格式)這種情況下,kernel會允許我們卸載模塊:

# modprobe -r isofs

現(xiàn)在,isofs不再顯示在ismod的輸出中,kernel由此節(jié)省了36,284字節(jié)的存儲。如果你放入cd并且讓它自動安裝,kernel將自動重新載入isofs模塊,而且isofs的使用次數(shù)增加到1次。如果這時(shí)候你還試圖移除模塊,就不會成功了因?yàn)樗诒皇褂茫?br />
# modprobe -r isofs
fatal: module isofs is in use.
   
lsmod只是列出了當(dāng)前被載入的模塊,modprobe則將列出所有可用的模塊,它實(shí)際上輸出了/lib/modules/kernelversion目錄下所有的模塊,名單會很長!

實(shí)際上,使用modprobe來手動加載一個(gè)模塊并不常見,但確實(shí)可以通過modprobe命令行來對模塊設(shè)置參數(shù),例如:

# modprobe usbcore blinkenlights=1

我們并不是在創(chuàng)建blinkenlights,而是usbcore模塊的實(shí)參數(shù)。

那么如何知道一個(gè)模塊會接受什么參數(shù)呢?一個(gè)比較好的方法是使用modinfo命令,它列出了關(guān)于模塊的種種信息。這里有一個(gè)關(guān)于模塊snd-hda-intel的例子

# modinfo snd-hda-intel
filename:      /lib/modules/2.6.20-16-generic/kernel/sound/pci/hda/snd-hda-intel.ko
description:    intel hda driver
license:        gpl
srcversion:    a3552b2df3a932d88ffc00c
alias:          pci:v000010ded0000055dsv*sd*bc*sc*i*
alias:          pci:v000010ded0000055csv*sd*bc*sc*i*
depends:        snd-pcm,snd-page-alloc,snd-hda-codec,snd
vermagic:      2.6.20-16-generic smp mod_unload 586
parm:          index:index value for intel hd audio interface. (int)
parm:          id:id string for intel hd audio interface. (charp)
parm:          model:use the given board model. (charp)
parm:          position_fix:fix dma pointer (0 = auto, 1 = none, 2 = posbuf, 3 = fifo size). (int)
parm:          probe_mask:bitmask to probe codecs (default = -1). (int)
parm:          single_cmd:use single command to communicate with codecs (for debugging only). (bool)
parm:          enable_msi:enable message signaled interrupt (msi) (int)
parm:          enable:bool

對我們來說比較有興趣的以"parm"開頭的那些部分:顯示了模塊所接受的參數(shù)。這些描述都比較簡明,如果想要更多的信息,那就安裝kernel的源代碼,在類似于/usr/src/kernelversion/documentation的目錄下你會找到。

里面會有一些有趣的東西,比如文件/usr/src/kernelversion/documentation/sound/alsa/alsa-configuration.txt描述的是被許多alsa聲音模塊承認(rèn)的參數(shù);/usr/src/kernelversion/documentation/kernel-parameters.txt這個(gè)文件也很有用。

前幾天在ubuntu論壇有一個(gè)例子,說的是如何將參數(shù)傳遞到一個(gè)模塊(詳見https://help.ubuntu.com/community/hdaintelsoundhowto)。實(shí)際上問題的關(guān)鍵是snd-hda-intel參數(shù)在正確驅(qū)動聲音硬件時(shí)需要一點(diǎn)操作,而且在boot time加載時(shí)會中止。解決方法的一部分是將probe_mask=1選項(xiàng)賦給模塊,如果你是手動加載模塊,你需要輸入:

# modprobe snd-hda-intel probe_mask=1

更有可能,你在文件/etc/modprobe.conf中放置這樣類似的一行:options snd-hda-intel probe_mask=1

這"告訴"modprobe每次在加載snd-hda-intel模塊時(shí)包含probe_mask=1選項(xiàng)。現(xiàn)在的有些linux版本將這一信息分離進(jìn)/etc/modprobe.d下的不同文件中了,而不是放入modprobe.conf中。

/proc系統(tǒng)文件

linux kernel同樣通過/proc系統(tǒng)文件來展示了許多細(xì)節(jié)。為了說明/proc,我們首先需要擴(kuò)展我們對于文件的理解。除了認(rèn)為文件就是存儲在硬盤(硬碟hdd存儲媒介之一)或者cd或者存儲空間上的持久信息之外,我們還應(yīng)當(dāng)把它理解為任何可以通過傳統(tǒng)系統(tǒng)調(diào)用如:打開、讀、寫、關(guān)閉等訪問的信息,當(dāng)然它也可以被常見的程序訪問。

/proc之下的"文件"完全是kernel虛擬的一個(gè)部分,給我們一個(gè)視角可以看到kernel內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。實(shí)際上,許多l(xiāng)inux的報(bào)告工具均能夠很好地呈現(xiàn)在/proc下的文件中尋到的格式化版本的信息。比如,一列/proc/modules將展示一列當(dāng)前加載的模塊。

同樣的,/proc/meminfo提供了關(guān)于虛擬存儲系統(tǒng)當(dāng)前狀態(tài)的更多細(xì)節(jié)信息,而類如vmstat的工具則是以一種更加可理解的方式提供了相同的一些信息;/proc/net/arp顯示了系統(tǒng)arp cache的當(dāng)前內(nèi)容,從命令行來說,arp -a顯示的也是相同的信息。

尤其有意思的是/proc/sys下的"文件"。/proc/sys/net/ipv4/ip_forward下的設(shè)置告訴我們kernel是否將轉(zhuǎn)發(fā)ip數(shù)據(jù)包,也就是說是否扮演網(wǎng)關(guān)的作用。現(xiàn)在,kernel告訴我們這是關(guān)閉的:

# cat /proc/sys/net/ipv4/ip_forward
0

當(dāng)你發(fā)現(xiàn)你可以對這些文件寫入的時(shí)候,你會覺得更加有意思。繼續(xù)舉例來說:

# echo 1 > /proc/sys/net/ipv4/ip_forward

將在運(yùn)行的kernel中打開ip 轉(zhuǎn)發(fā)(ip forwarding)

除了使用cat和echo來檢查和更正/proc/sys下的設(shè)置以外,你也可以使用sysctl命令:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

這等同于:
# cat /proc/sys/net/ipv4/ip_forward
0

也等同于:
# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

還等同于:
# echo 1 > /proc/sys/net/ipv4/ip_forward
   

需要注意的是,以這種方式你所做的設(shè)置改變只能影響當(dāng)前運(yùn)行的kernel的,當(dāng)reboot的時(shí)候就不再有效。如果想讓設(shè)置永久有效,將它們放置在/etc/sysctl.conf文件中。在boot time時(shí),sysctl將自動重新確定它在此文件下找到的任何設(shè)置。

/etc/sysctl.conf下的代碼行大概是這樣的:net.ipv4.ip_forward=1

性能調(diào)優(yōu)(performance tuning)

有這樣一個(gè)說法:/proc/sys下可寫入的參數(shù)孕育了整個(gè)linux性能調(diào)優(yōu)的亞文化。我個(gè)人覺得這種說法有點(diǎn)過夸,但這里會有幾個(gè)你確實(shí)很想一試的例子:oracle 10g的安裝說明(www.oracle.com/technology/obe/obe10gdb/install/linuxpreinst/linuxpreinst.htm)要求你設(shè)置一組參數(shù),包括:kernel.shmmax=2147483648 這將公用存儲器的大小設(shè)置為2gb。(公用存儲器是處理期內(nèi)的通信機(jī)制,允許存儲單元在多個(gè)進(jìn)程的地址空間內(nèi)同時(shí)可用)

ibm 'redpaper'在linux性能和調(diào)優(yōu)方面的說明(www.redbooks.ibm.com/abstracts/redp4285.html)在調(diào)教/proc/sys下的參數(shù)方面給出了不少建議,包括:vm.swappiness=100 這個(gè)參數(shù)控制著存儲頁如何被交換到磁盤。

一些參數(shù)可以被設(shè)置從而提高安全性,如net.ipv4.icmp_echo_ignore_broadcasts=1 它"告訴"kernel不必響應(yīng)icmp請求,從而使得你的網(wǎng)絡(luò)免受類如smurf攻擊之類的拒絕服務(wù)器(server網(wǎng)絡(luò)資源下載)(denial-of-service)型攻擊。
net.ipv4.conf.all.rp_filter=1 則是"告訴"kernel加強(qiáng)入站過濾(ingress filtering)和出站過濾(egress filtering)
【看看這篇文章在百度的收錄情況】

相關(guān)文章

聯(lián)系方式

  • 0731-85579057 , 0731-85569651
  • 點(diǎn)擊這里給我發(fā)消息點(diǎn)擊這里給我發(fā)消息點(diǎn)擊這里給我發(fā)消息
網(wǎng)站欄目導(dǎo)航: 培訓(xùn)課程 手機(jī)硬件 手機(jī)軟件 綜合維修 學(xué)校資訊 考證指南 就業(yè)導(dǎo)航 招生指南 教學(xué)管理 入學(xué)須知 學(xué)校圖片 教學(xué)大綱 師資力量 學(xué)生感言 學(xué)校概況 教學(xué)實(shí)景 手機(jī)維修培訓(xùn)資訊 電腦維修培訓(xùn) 維修間故事 手機(jī)維修培訓(xùn) 液晶電視維修培訓(xùn) 家電維修資料網(wǎng) 電器維修資料網(wǎng) 招生地區(qū) 刷機(jī)教程 家電維修 手機(jī)技巧 老版網(wǎng)站 招生平臺網(wǎng)絡(luò)工程
友情鏈接: 監(jiān)控安裝培訓(xùn) 電動工具維修 家電維修學(xué)校 電工培訓(xùn)學(xué)校 液晶電視維修 焊工培訓(xùn)學(xué)校 電工焊工學(xué)校 電腦維修學(xué)校 家電維修培訓(xùn) 電腦維修培訓(xùn) 家裝電工培訓(xùn)網(wǎng)絡(luò)安裝維護(hù) 主板維修 液晶顯示器 筆記本電腦維修 電腦組裝維護(hù) 電腦硬件維修 電腦維修 電工考證 電工證 裝修電工 水電工 維修電工 電工 焊接技術(shù) 電焊工 焊工 電動設(shè)備維修 電動工具維修 制冷維修 空調(diào)維修 冰箱維修  更多>>
陽光-手機(jī)維修教育品牌學(xué)校
點(diǎn)擊這里給我發(fā)消息 點(diǎn)擊這里給我發(fā)消息 點(diǎn)擊這里給我發(fā)消息
電工培訓(xùn)學(xué)校 電動車維修學(xué)校 摩托車維修學(xué)校 摩托車維修培訓(xùn) 手機(jī)維修培訓(xùn) 家電維修培訓(xùn) 電腦維修培訓(xùn) 電動工具維修培訓(xùn) 液晶電視維修培訓(xùn) 安防監(jiān)控培訓(xùn) 空調(diào)維修培訓(xùn) 網(wǎng)絡(luò)營銷培訓(xùn) 網(wǎng)站設(shè)計(jì)培訓(xùn) 淘寶網(wǎng)店培訓(xùn) 電器維修培訓(xùn) 家電維修學(xué)校 電工培訓(xùn) 焊工培訓(xùn) 電工學(xué)校 電工培訓(xùn)學(xué)校 電動車維修學(xué)校 摩托車維修學(xué)校 摩托車維修培訓(xùn) 手機(jī)維修培訓(xùn) 家電維修培訓(xùn) 電腦維修培訓(xùn) 電動工具維修培訓(xùn) 液晶電視維修培訓(xùn) 安防監(jiān)控培訓(xùn) 空調(diào)維修培訓(xùn) 網(wǎng)絡(luò)營銷培訓(xùn) 網(wǎng)站設(shè)計(jì)培訓(xùn) 淘寶網(wǎng)店培訓(xùn) 電器維修培訓(xùn) 家電維修學(xué)校 電工培訓(xùn) 焊工培訓(xùn) 電工學(xué)校 電工培訓(xùn)學(xué)校 電動車維修學(xué)校 摩托車維修學(xué)校 摩托車維修培訓(xùn) 手機(jī)維修培訓(xùn) 家電維修培訓(xùn) 電腦維修培訓(xùn) 電動工具維修培訓(xùn) 液晶電視維修培訓(xùn) 安防監(jiān)控培訓(xùn) 空調(diào)維修培訓(xùn) 網(wǎng)絡(luò)營銷培訓(xùn) 網(wǎng)站設(shè)計(jì)培訓(xùn) 淘寶網(wǎng)店培訓(xùn) 電器維修培訓(xùn) 家電維修學(xué)校 電工培訓(xùn) 焊工培訓(xùn) 電工學(xué)校 電工培訓(xùn)學(xué)校 電動車維修學(xué)校 摩托車維修學(xué)校 摩托車維修培訓(xùn) 手機(jī)維修培訓(xùn) 家電維修培訓(xùn) 電腦維修培訓(xùn) 電動工具維修培訓(xùn) 液晶電視維修培訓(xùn) 安防監(jiān)控培訓(xùn) 空調(diào)維修培訓(xùn) 網(wǎng)絡(luò)營銷培訓(xùn) 網(wǎng)站設(shè)計(jì)培訓(xùn) 淘寶網(wǎng)店培訓(xùn) 電器維修培訓(xùn) 家電維修學(xué)校 電工培訓(xùn) 焊工培訓(xùn) 電工學(xué)校
中山市,固原市,銀川市,玉樹,海東,隴南市,酒泉市,張掖市,天水市,金昌市,蘭州市,榆林市,延安市,渭南市,銅川市,阿里,山南,拉薩市,怒江,文山州,楚雄州,普洱市,昭通市,玉溪市,昆明市,畢節(jié),銅仁,遵義市,貴陽市,甘孜州,資陽市,達(dá)州市,宜賓市,南充市,遂寧市,綿陽市,瀘州市,自貢市,三亞市,崇左市,河池市,玉林市,欽州市,梧州市,柳州市,梅州市,肇慶市,湛江市,佛山市,珠海市,韶關(guān)市,湘西州,懷化市,郴州市,張家界市,邵陽市,株洲市,仙桃市,隨州市,荊州市,荊門市,襄樊市,黃石市,駐馬店市,信陽市,南陽市,漯河市,中衛(wèi)市,石嘴山市,海西,海南藏州,黃南州,海北,甘南,慶陽市,平?jīng)鍪?武威市,白銀市,嘉峪關(guān)市,安康市,漢中市,咸陽市,寶雞市,林芝,日喀則,昌都,迪慶,德宏,大理,西雙版納,紅河州,臨滄市,麗江市,保山市,曲靖市,黔東州,黔西州,安順市,六盤水市,涼山州,阿壩州,雅安市,廣安市,眉山市,內(nèi)江市,廣元市,德陽市,攀枝花市,成都市,海口市,來賓市,百色市,貴港市,北海市,桂林市,南寧市,云浮市,揭陽市,潮州市,清遠(yuǎn)市,陽江市,汕尾市,惠州市,茂名市,江門市,汕頭市,深圳市,廣州市,婁底市,永州市,益陽市,岳陽市,湘潭市,長沙市,恩施州,黃岡市,孝感市,鄂州市,十堰市,武漢市,周口市,商丘市,三門峽市,許昌市,焦作市,安陽市,鶴壁市,平頂山市,開封市,鄭州市,聊城市,濱州市,德州市,萊蕪市,日照市,泰安市,煙臺市,濰坊市,東營市,淄博市,上饒市,濟(jì)南市,撫州市,宜春市,贛州市,新余市,九江市,景德鎮(zhèn)市,寧德市,南平市,泉州市,莆田市,廈門市,宣城市,亳州市,六安市,宿州市,黃山市,滁州市,安慶市,淮北市,馬鞍山市,蚌埠市,蕪湖市,合肥市,麗水市,舟山市,衢州市,金華市,湖州市,嘉興市,寧波市,宿遷市,鎮(zhèn)江市,鹽城市,連云港市,蘇州市,徐州市,南京市,綏化市,牡丹江市,佳木斯市,大慶市,鶴崗市,哈爾濱市,白城市,白山市,遼源市,吉林市,葫蘆島市,鐵嶺市,盤錦市,阜新市,錦州市,本溪市,鞍山市,沈陽市,錫林郭勒盟,通遼市,烏海市,呂梁市,忻州市,晉中市,晉城市,陽泉市,太原市,廊坊市,承德市,保定市,邯鄲市,唐山市,寧夏,甘肅省,西藏,貴州省,重慶市,廣西,湖南省,河南省,江西省,安徽省,江蘇省,黑龍江省,遼寧省,山西省,天津市,四平市,內(nèi)蒙古,吳忠市,果洛,西寧市,定西市,商洛市,西安市,那曲,黔南州,巴中市,樂山市,賀州市,防城港市,東莞市,河源市,常德市,衡陽市,咸寧市,宜昌市,濮陽市,新鄉(xiāng)市,洛陽市,菏澤市,臨沂市,威海市,濟(jì)寧市,棗莊市,青島市,吉安市,鷹潭市,萍鄉(xiāng)市,南昌市,龍巖市,漳州市,三明市,福州市,池州市,巢湖市,阜陽市,銅陵市,淮南市,臺州市,紹興市,溫州市,杭州市,泰州市,揚(yáng)州市,淮安市,南通市,常州市,無錫市,大興安嶺,黑河市,七臺河市,伊春市,雙鴨山市,雞西市,齊齊哈爾市,延邊,松原市,通化市,長春市,朝陽市,遼陽市,營口市,丹東市,撫順市,大連市,阿拉善盟,興安盟,烏蘭察布市,巴彥淖爾市,呼倫貝爾市,鄂爾多斯市,赤峰市,包頭市,呼和浩特市,臨汾市,運(yùn)城市,朔州市,長治市,大同市,衡水市,滄州市,張家口市,邢臺市,秦皇島市,石家莊市,青海省,陜西省,云南省,四川省,海南省,廣東省,湖北省,山東省,福建省,浙江省,上海市,吉林省,河北省,北京市 主站蜘蛛池模板: mm625亚洲人成电影网| 日本免费xxx| 日本边添边摸边做边爱边| 美美哒免费影视8| 久久久久亚洲精品影视| 飘雪在线观看免费高清完整版韩国| 欧美xxxx性喷潮| 午夜性色一区二区三区不卡视频| 卫生间被教官做好爽HH视频| 亚洲色t图| z0000性欧美| 国产精品99久久免费黑人人妻| 九九大香尹人视频免费| 日本高清无人区影院| 亚洲伊人精品综合在合线| 成人片免费看| 久久伊人免费| 欧美精品九九99久久在观看| 亚洲 日本 天堂 国产 在线| 亚洲日本在线不卡二区| yin荡体育课羞耻play双性| 精品国产在线亚洲欧美| 三级色视频| 亚洲成色爱我久久| YELLOW高清视频免费观看| 精品无码国产自产在线观看| 色女仆影院| 野花香在线观看免费高清播放视频| 玉林天天论坛| 国产精品久AAAAA片| 欧美极限变态扩张video| 亚洲综合网国产精品一区| 国产盗摄TP摄像头偷窥| 内射一区二区精品视频在线观看 | 嫩草影院久久国产精品| 亚洲黄色在线视频| 69精品人妻一区二区三区蜜桃| 4388成人| 九色PORNY蝌蚪视频首页| 我要搞av| 高清欧美videos sexo|