日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中的memory management和page mapping

發布時間:2023/11/29 linux 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中的memory management和page mapping 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 首先要說的最簡單的是在一個process在運行的時候,它看到的內存是這個樣子的。3G以后是給kernel使用的運行和動態分配的內存的空間,注意因為是process所看到的,下面全部都是虛擬地址空間。
如下:

?2 然后需要說的是Linux Physical Memory Layout
下面這段話解釋了為什么linux不能占用所有的Ram內存:

Why isn't the kernel loaded starting with the first available megabyte of RAM? Well, the PC architecture has
several peculiarities that must be taken into account.

For example:
1 Page frame 0 is used by BIOS to store the system hardware configuration detected during the
Power-On Self-Test(POST); the BIOS of many laptops, moreover, writes data on this page frame
even after the system is initialized.

2 Physical addresses ranging from 0x000a0000 to 0x000fffff are usually reserved to BIOS
routines and to map the internal memory of ISA graphics cards. This area is the well-known hole from
640 KB to 1 MB in all IBM-compatible PCs: the physical addresses exist but they are reserved, and
the corresponding page frames cannot be used by the operating system.

3 Additional page frames within the first megabyte may be reserved by specific computer models. For
example, the IBM ThinkPad maps the 0xa0 page frame into the 0x9f one.

所以總之一句話:前1M的內存存儲了BIOS和其他一些硬件信息。所以Linux代碼物理開始地址在1M處。

在不考慮virtual address也就是不考慮使用page table的時候,kernel的物理占用如下圖所示:


圖中各個段的含義都已經很明確了。kernel物理內存 [_text? _end].
具體的值可以不用細扣,因為不同的架構上,不同的內核編譯后可能位置和大小可能有偏差。
比如我的?linux-2.6.38.8版本的內核編譯后產生的System.map文件中_text 和 _end的地址為:

  • 0xc0400000 --- _text
  • 0xc0cc5000 --- _end

首先說明這是內核使用page table之后的虛擬內存的地址。
圖中_text在虛擬內存中:起始于3G + 偏移量4M。
_end在虛擬內存中:起始于3G + 偏移量超過12M。

這說明我用的內核編譯后比上圖中的內核要大一些。

3 Kernel Page Tables
因為Kernel加載完初始完后,就會進入保護模式,所以在往下走之前需要了解保護模式,并且了解Linux的Page Table的使用,如下可以是Linux的頁表的形式,每個Process和Kernel都有一個Page Table:

然后Process和Kernel的Page Table的關系是怎么樣的呢?請看這句引用:

1 The kernel maintains a set of page tables for its own use, rooted at a so-called master kernel Page Global Directory.

2 After system initialization, this set of page tables is never directly used by any process or kernel thread;

3 rather, the highest entries of the master kernel Page Global Directory are the reference model for the corresponding entries of the Page Global Directories of every regular process in the system.

將3這句話復制出來加以強調:

the highest entries of the master kernel Page Global Directory are
the reference model for the corresponding entries of the Page Global Directories of
every regular process in the system.

--------------------------
4 加入頁表后,具體我們分為兩部分來講,
第1:Kernel Page Table中各映射了些什么東西?第2:Kernel是如何完成這些映射的?

第1:Kernel Page Table中各映射了些什么東西?就是Kernel在運行的時候使用的Page Table。

依次介紹下:

  • Physical memory mapping ---- 這一塊是最基本的內存映射,
    • 先假設內存在0-896M(1G - 128M)之間,那么在初始化的時候,0x0 - 896M(physical address) ----(3G + 0x0) - (3G + 896M)[Linear address]了。Kernel的function variable地址在編譯的時候就確定好了為3G以后的Virtual address.因此Kernel是假設自己有1G的虛擬內存可以使用的,頁不夠就swap【swap比較復雜,先假設自己知道,也可以先假設內存足夠】。
    • 如果RAM實際大小大于896M,那么在訪問高地址的時候,動態的remap【section later will discuss it】。
  • Fix-mapped linear addresses. ---- 只是知道這一塊可以被映射到任何的內存,【不是太清楚用途,先放一放】
  • Persistent kernel mappings ----- Starting from PKMAP_BASE we find the linear addresses used for the persistent kernel mapping of high-memory page frames.
  • vmalloc area ----- Linux provides a mechanism via vmalloc() where non-contiguous physically memory can be used that is contiguous in virtual memory.【見下面non-contiguous memory allocation.】

?------------------------------------------------------------------------------------------------
?------------------------------------------------------------------------------------------------

Kernel Mappings of High-Memory page Frames
我想利用這個dynamic kernel-mapping來理解,linear address與physical address 的對應關系的,以及內核是如何keep track of physical page frame including low-memory and high memory.

1 直接用一段話來說明Kernel Mapping存在的必要性。

1 Where to store map page table(其實上圖中有)
The linear address that corresponds to the end of the directly mapped physical memory, and thus to the
beginning of the high memory, is stored in the high_memory variable, which is set to 896 MB.

2 Page frames above the 896 MB boundary are not generally mapped in the fourth gigabyte of
the kernel linear address spaces, so the kernel is unable to directly access them.

3 This implies that each page allocator function that returns the linear address of the
assigned page frame doesn't work for high-memory page frames, that is, for page frames in
the ZONE_HIGHMEM memory zone

所以說low-memory本來就被映射了,所以不需要remap。high-memory因為沒有被page table映射,所以需要在用到的時候動態的申請remap。

2 第一種方法:Permanent kernel mappings(如上圖的persistent kernel mappings位置)
用于映射的基本變量和數據結構:

  • pkmap_page_table ------- stores the address of this Page Table
  • LAST_PKMAP ------? macro yields the number of Page Table entries.
  • pkmap_count ------ array in kernel 原型為:int pkmap_count[LAST_PKMAP].
    The pkmap_count array includes LAST_PKMAP counters, one for each entry of the pkmap_page_table Page Table
    用于記錄counter。
    1 The counter is 0
    The corresponding Page Table entry does not map any high-memory page frame and is usable.

    2 The counter is 1
    The corresponding Page Table entry map any high-memory page frame, but it cannot be
    used because the corresponding TLB entry has not been flushed since its last usage.
    表明這個線性地址被映射過了,可是現在還沒有模塊使用它,它屬于閑置資源,如果暫時資源不夠就對這種資源進行回收。

    3 The counter is n (greater than 1)
    The corresponding Page Table entry maps a high-memory page frame, which is used by exactly n - 1
    kernel components.

  • page_address_htable ----- This table contains one page_address_map data structure for each page frame in high memory that is currently mapped.
  • page_address_map ----- prototype 如下:
    struct page_address_map {
    struct page *page;
    void *virtual;
    struct list_head list;
    };
  • page_address( ) function ----- returns the linear address associated with the page frame, or NULL if the
    page frame is in high memory and is not mapped.
  • struct page ----- State information of a page frame is kept in a page descriptor of type page. All page descriptors are stored in the mem_map array.即是說physical address中的每一個page frame在內核的初始化數據中都有對應的一個struct page數據結構。kernel就是通過對這些struct page類型的page descriptor調度和存儲信息的。就像進程的基本信息都存放在struct task中一樣。還有下面這句話,所以說struct page是物理上的RAM的每一個page在kernel中的數據結構的代表:
    The kernel must keep track of the current status of each page frame. For instance, it must
    be able to distinguish the page frames that are used to contain pages that belong to
    processes from those that contain kernel code or kernel data structures. Similarly, it must
    be able to determine whether a page frame in dynamic memory is free. A page frame in
    dynamic memory is free if it does not contain any useful data. It is not free when the page
    frame contains data of a User Mode process, data of a software cache, dynamically
    allocated kernel data structures, buffered data of a device driver, code of a kernel module,
    and so on

?首先要說明的是kernel對page的引用是這樣的:
假設Kernel當前正在操作一個struct page,那么當他想得到這個page的線性地址也就是虛擬地址的時候,調用page_address(page)返回它的線性地址。當然如果它是low_memory或者它是high_memory并且已經被映射。
如:_ _va((unsigned long)(page? -? mem_map)? <<? 12) ------ low memory這樣得到線性地址。

下面的偽代碼主要是解釋remap是如何進行的,不解釋,具體參看書本<Understanding the linux kernel>:

void * kmap(struct page * page)
{
if (!PageHighMem(page))
return page_address(page);
return kmap_high(page);
}

void * kmap_high(struct page * page)
{
unsigned long vaddr;
spin_lock(&kmap_lock);
vaddr = (unsigned long) page_address(page);
if (!vaddr)
vaddr = map_new_virtual(page);
pkmap_count[(vaddr-PKMAP_BASE) >> PAGE_SHIFT]++;
spin_unlock(&kmap_lock);
return (void *) vaddr;
} View Code 1 for (;;) {
2 int count;
3 DECLARE_WAITQUEUE(wait, current);
4 for (count = LAST_PKMAP; count > 0; --count) {
5 last_pkmap_nr = (last_pkmap_nr + 1) & (LAST_PKMAP - 1);
6 if (!last_pkmap_nr) {
7 flush_all_zero_pkmaps( );
8 count = LAST_PKMAP;
9 }
10 if (!pkmap_count[last_pkmap_nr]) {
11 unsigned long vaddr = PKMAP_BASE +
12 (last_pkmap_nr << PAGE_SHIFT);
13 set_pte(&(pkmap_page_table[last_pkmap_nr]),
14 mk_pte(page, _ _pgprot(0x63)));
15 pkmap_count[last_pkmap_nr] = 1;
16 set_page_address(page, (void *) vaddr);
17 return vaddr;
18 }
19 }
20 current->state = TASK_UNINTERRUPTIBLE;
21 add_wait_queue(&pkmap_map_wait, &wait);
22 spin_unlock(&kmap_lock);
23 schedule( );
24 remove_wait_queue(&pkmap_map_wait, &wait);
25 spin_lock(&kmap_lock);
26 if (page_address(page))
27 return (unsigned long) page_address(page);
28 }

3 Temporary Kernel Mappings

Temporary kernel Mappings 和Permanent kernel mappings中有一個比較:

1 The temporary mapping of data from highmem into kernel virtual
memory is done using the functions kmap(), kunmap(), kmap_atomic() and kunmap_atomic().

2 The function kmap() gives you a persistant mapping, ie. one that will
still be there after you schedule and/or move to another CPU.
However, this kind of mapping is allocated under a global lock, which can be a bottleneck on SMP systems.
The kmap() function is discouraged.

3 Good SMP scalability can be obtained by using kmap_atomic(), which is lockless.
The reason kmap_atomic() can run without any locks is that the page is mapped to a fixed address
which is private to the CPU on which you run. Of course, this means that you can not schedule between setting up
such a mapping and using it, since another process running on the same CPU might also need the same address!
This is the highmem mapping type used most in the 2.6 kernel.

Fix-mapped 的一些數據結構:

  • enum fixed-address ----- 主要用于內核編譯的時候確定virtual 地址,它還包括很多其他的用途,但是這里的Temporary kernal mapping只用到了FIX_KMAP_BEGIN和FIX_KMAP_END。以下是它的數據結構定義:。
    ?Here we define all the compile-time 'special' virtual
    ?addresses. The point is to have a constant address at
    ?compile time, but to set the physical address only
    ?in the boot process. We allocate these special addresses
    ?from the end of virtual memory (0xfffff000) backwards.


    enum
    fixed_addresses{
      ....
      #ifdef CONFIG_HIGHMEM
    FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
    FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
    #endif
      ....
    }
  • enum km_type --- 主要用于訪問high_memory的remap。
    1 Each CPU has its own set of 13 windows, represented by the enum km_type data structure.

    2 The kernel must ensure that the same window is never used by two kernel control paths at the same time.
    Thus, each symbol in the km_type structure is dedicated to one kernel component and is named after the
    component. The last symbol, KM_TYPE_NR, does not represent a linear address by itself, but yields the
    number of different windows usable by every CPU。

    以上的意思是:模塊總共可能有13個control path(kernel component)同時運行,于是將這13個control path各分一個window
    (即一個page table entry)。這樣就不用加鎖,不會出現沖突了。同時如果是smp, 每個cpu都有13個window。

    【雖然暫時不知道為什么會有13個control path?但以后會理解的】
    下面這段代碼就是使用fixed_addresses and km_type來進行page的替換,將type轉換成cpu對應的window的linear address, 然后修改page table:
    void * kmap_atomic(struct page * page, enum km_type type)
    {
    enum fixed_addresses idx;
    unsigned long vaddr;
    current_thread_info( )->preempt_count++;
    if (!PageHighMem(page))
    return page_address(page);
    idx = type + KM_TYPE_NR * smp_processor_id( );
    vaddr = fix_to_virt(FIX_KMAP_BEGIN + idx);
    set_pte(kmap_pte-idx, mk_pte(page, 0x063));
    _ _flush_tlb_single(vaddr);
    return (void *) vaddr;
    }
    ------------------------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------------------

?ps:

1 ZONE_DMA
Contains page frames of memory below 16 MB

2 ZONE_NORMAL
Contains page frames of memory at and above 16 MB and below 896 MB

3 ZONE_HIGHMEM
Contains page frames of memory at and above 896 MB


-----------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------

Linear Addresses of Noncontiguous Memory Areas?

Linux provides a mechanism via vmalloc() where non-contiguous physically memory can be used that is contiguous in virtual memory.
主要是如果系統中連續的內存不夠的時候,使用vmalloc(),可以在high_memory中分配一些零碎的page,使得這些page在physical memory是離散的,使用page table將其映射成virtual memory是連續的。

get_vm_area() ------ looks for a free range of linear addresses between VMALLOC_START and VMALLOC_END.(就是說分配一塊虛擬地址),此函數的主要功能就是。

  • Invokes kmalloc( ) to obtain a memory area for the new descriptor of type vm_struct.
  • Gets the vmlist_lock lock for writing and scans the list of descriptors of type vm_struct looking for a free range of linear addresses that includes at least size + 4096 addresses (4096 is the size of the safety interval between the memory areas).
  • If such an interval exists, the function initializes the fields of the descriptor, releases the vmlist_lock lock, and terminates by returning the initial address of the noncontiguous memory area。
  • Otherwise, get_vm_area( ) releases the descriptor obtained previously, releases the vmlist_lock lock, and returns NULL.
  • 下面是申請物理上的page,并且映射為virtual上連續的page,讀者讀的時候即使有些不理解的地方,大體上就是這個樣子,可以暫時不求甚解。

    void * vmalloc(unsigned long size)
    {
    struct vm_struct *area;
    struct page **pages;
    unsigned int array_size, i;
    size = (size + PAGE_SIZE - 1) & PAGE_MASK;
    area = get_vm_area(size, VM_ALLOC); ------------ 【分配虛擬內存地址】
    if (!area)
    return NULL;
    area->nr_pages = size >> PAGE_SHIFT;
    array_size = (area->nr_pages * sizeof(struct page *));
    area->pages = pages = kmalloc(array_size, GFP_KERNEL); ---------- 【申請存儲struct page *的指針數組】
    if (!area_pages) {
    remove_vm_area(area->addr);
    kfree(area);
    return NULL;
    }
    memset(area->pages, 0, array_size);
    for (i=0; i<area->nr_pages; i++) {
    area->pages[i] = alloc_page(GFP_KERNEL|_ _GFP_HIGHMEM); -------- 【在高地址處分配物理上存在的page,其實是返回struct page * 的指針】
    if (!area->pages[i]) {
    area->nr_pages = i;
    fail: vfree(area->addr);
    return NULL;

    }
    }
    if (map_vm_area(area, _ _pgprot(0x63), &pages)) ---------- 【在page table做映射,如果存在就修改,不存在就生成page table的各級表項】
    goto fail;
    return area->addr; ------- 【返回虛擬地址】
    }



    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的linux中的memory management和page mapping的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    六月丁香伊人 | 在线观看亚洲国产精品 | 亚洲天堂自拍视频 | 天天操福利视频 | 国产精品成人自拍 | 精品亚洲免费视频 | 国产永久免费观看 | 在线观看视频h | 婷婷综合伊人 | 久久午夜网 | 日韩精品在线看 | 91成版人在线观看入口 | 欧美国产日韩一区二区三区 | 狠狠狠色丁香婷婷综合激情 | 国产色视频网站 | 国产成人精品免费在线观看 | wwwwww国产| 欧美成人精品欧美一级乱 | 成人久久精品 | 日韩久久精品一区二区三区下载 | 国产亚洲精品久久久网站好莱 | 免费看网站在线 | 亚洲综合黄色 | 91片黄在线观 | 在线观看成人小视频 | 久久免费黄色 | 人人澡人人澡人人 | 免费精品 | 精品在线免费观看 | 中文字幕黄色 | 精品视频免费 | 中文字幕亚洲精品在线观看 | 天天操天天干天天玩 | 免费看一级特黄a大片 | 韩日电影在线观看 | 啪啪免费视频网站 | 四虎国产精品成人免费4hu | 午夜精品视频福利 | 手机看片中文字幕 | 久草视频在线免费看 | 久久久久久久久久久网站 | 丁香婷婷久久 | 国产日本三级 | 91福利影院在线观看 | 国产一级电影网 | 国产精品久久久久久69 | 亚洲电影黄色 | 99精品热视频只有精品10 | 久久免费视频6 | 99午夜| 国产精品入口久久 | 久久免费激情视频 | 欧美专区日韩专区 | av爱干| 福利区在线观看 | 日韩av免费一区 | 欧美激情va永久在线播放 | 欧美性生爱 | 四虎国产精品成人免费影视 | 久久精品国产亚洲 | 国产69精品久久app免费版 | 五月天激情视频在线观看 | 午夜视频福利 | 日韩免费高清 | 亚洲欧洲一级 | 色综合天天综合在线视频 | 黄色成人av| 91看片看淫黄大片 | 日日夜夜天天操 | 92av视频| 亚洲国产精品久久久久久 | 伊人精品影院 | 9ⅰ精品久久久久久久久中文字幕 | 久久久久 | 黄色影院在线观看 | 九九久久久久久久久激情 | 麻豆视频在线观看 | 成人国产精品久久久 | 全久久久久久久久久久电影 | 91精品视频免费看 | 国产五月婷婷 | 日韩亚洲在线视频 | 四虎影视国产精品免费久久 | 精品国产一区二区三区蜜臀 | 成人福利在线观看 | 一级免费观看 | 麻豆视频免费入口 | 2019久久精品 | 国产精品一区二区久久 | 国产高清久久久久 | 国产护士av | 国产理论片在线观看 | 日韩av高清在线观看 | 欧美激情在线网站 | 97超碰国产在线 | 一级理论片在线观看 | av免费试看| 天天色天天操天天爽 | 91最新在线 | 国产在线一区二区 | 国产高清免费在线观看 | 特黄色大片 | 97综合视频 | 片黄色毛片黄色毛片 | 精品视频专区 | 96国产精品| 色av男人的天堂免费在线 | 中文字幕一区二区三区精华液 | 国产午夜三级一区二区三 | 韩国av一区 | 毛片永久新网址首页 | 欧美人人爱 | av高清一区| 欧美一区二区三区在线观看 | 在线观看亚洲a | japanese黑人亚洲人4k | 久久一区二区三区日韩 | 久久免费国产精品1 | 久久艹艹 | 日日干美女 | 亚洲高清精品在线 | 91av社区 | 日本丶国产丶欧美色综合 | 91热视频在线观看 | 91精选| 国产精品视频免费在线观看 | 国产成人精品一区二区三区福利 | 欧美日韩视频 | 免费三级网 | 亚洲国产中文字幕在线视频综合 | 国产一区福利在线 | 人人草在线观看 | 久久一区二区三区超碰国产精品 | 久久深夜福利免费观看 | 四虎成人网 | 狠狠色丁香婷婷综合视频 | 在线中文字幕网站 | 亚洲成人国产精品 | 亚洲精品在线视频观看 | 18国产精品白浆在线观看免费 | 免费福利视频网 | 91精品免费在线 | 亚洲在线成人精品 | 久久人人爽爽人人爽人人片av | 91在线操 | 国产偷v国产偷∨精品视频 在线草 | 香蕉视频在线视频 | 在线免费视 | 天天爽网站 | 麻豆成人在线观看 | 五月天堂色 | 国产精品高潮呻吟久久av无 | 国产视频一区在线 | 97香蕉久久超级碰碰高清版 | 亚洲最快最全在线视频 | 三级动态视频在线观看 | 在线天堂中文在线资源网 | 免费下载高清毛片 | 精品播放 | 久久国产精品视频观看 | 免费在线观看午夜视频 | 不卡的一区二区三区 | 在线观看精品黄av片免费 | 日韩在线影视 | 日韩在线视频国产 | 欧洲亚洲精品 | 国产在线观看91 | 国内精品久久久久久中文字幕 | 婷婷丁香自拍 | 日韩在线国产精品 | 日韩av不卡在线播放 | 美女视频黄免费的 | 午夜免费福利视频 | 免费黄色网址网站 | 久久看看| 国产中文字幕国产 | 黄色成人91 | 日韩电影中文字幕在线 | 国产精品国产三级国产aⅴ无密码 | 亚洲综合欧美日韩狠狠色 | 天天插狠狠插 | 91黄色小视频 | 69视频在线| 黄色a三级 | 特级西西www44高清大胆图片 | 99精品视频播放 | 黄色网址在线播放 | 中文字幕在线高清 | 亚洲五月婷婷 | 91精品国产麻豆国产自产影视 | av网站免费线看精品 | 久久人人精 | 996久久国产精品线观看 | 国产成人精品福利 | 国产午夜精品av一区二区 | 操老逼免费视频 | 成人app在线免费观看 | 91免费视频网站在线观看 | 999成人免费视频 | 91九色视频网站 | 国产精品美女久久久久久2018 | 欧美性久久久久久 | 九草视频在线观看 | 亚洲区视频在线观看 | 久久精品高清 | 日日天天干 | 亚洲国产电影在线观看 | 超碰97免费在线 | 激情喷水 | 在线观看黄污 | 最近中文字幕大全中文字幕免费 | 91成人短视频在线观看 | 国产精品久久久久久久久久免费 | 男女全黄一级一级高潮免费看 | 久久夜色精品国产欧美一区麻豆 | av大全在线 | a天堂一码二码专区 | 在线观看日韩专区 | 久久兔费看a级 | 四虎影视www | 九九九视频在线 | 国产一二三四在线视频 | 国产99区 | 久久精品婷婷 | 黄色大全免费观看 | 怡红院av久久久久久久 | 91精品视频在线观看免费 | 在线观看91av | 97超碰中文字幕 | 亚洲一区久久久 | 国产成人一区二区在线观看 | www日韩在线观看 | 中文字幕资源在线 | 中文字幕在线日 | 久久久久国产一区二区三区 | 国产精品1000| 久久99久久99精品免观看软件 | www色婷婷com| 国产又粗又猛又色又黄视频 | av电影免费在线看 | 亚洲精品在线视频网站 | 中文字幕频道 | 人人躁| 色婷婷激情四射 | 天天干天天操天天爱 | 亚洲国产精品传媒在线观看 | 国产成人一区三区 | 97网站| 欧美激情综合网 | 91精品播放| 人人舔人人舔 | 日韩二区三区在线 | 男女精品久久 | 亚洲精品在线资源 | 91麻豆精品国产91久久久无需广告 | 免费av大全 | 波多野结衣在线中文字幕 | 成人一级免费视频 | 911香蕉视频 | 日韩大片免费在线观看 | 99久久999久久久精玫瑰 | 亚洲五月婷婷 | 69夜色精品国产69乱 | 黄色a视频免费 | 五月花婷婷| 日韩中文在线字幕 | 九九免费在线观看视频 | 久久黄色小说视频 | 狠狠撸电影 | av在线进入 | 热久久精品在线 | 在线视频 一区二区 | 中文字幕一区二区三 | 国产精品日韩 | 国产精品免费观看网站 | 国产在线自| 久久精品视频免费播放 | 在线免费观看黄 | 91传媒免费在线观看 | 操操操夜夜操 | 五月婷婷丁香六月 | 国内精品视频一区二区三区八戒 | 国产又粗又猛又色又黄视频 | 免费视频 你懂的 | 碰碰影院 | .国产精品成人自产拍在线观看6 | 亚洲免费不卡 | 亚洲精品99久久久久中文字幕 | av在线免费在线 | 99久久99久久 | 国产精品一区二区在线看 | 国产最新福利 | 国产情侣一区 | 精品久久久久一区二区国产 | 美女视频黄免费的久久 | 国产91影视 | 日日操操 | 激情五月在线视频 | 91麻豆精品国产午夜天堂 | 丁香5月婷婷久久 | 欧美激情精品一区 | 在线中文字幕播放 | 日韩午夜视频在线观看 | 日韩在线观看高清 | 国产精品一区二区吃奶在线观看 | 久久免费电影网 | 最近能播放的中文字幕 | 久久97久久97精品免视看 | 欧美孕妇与黑人孕交 | 亚洲欧美在线视频免费 | 婷婷视频| 日韩免费电影一区二区三区 | 91av视频播放 | 日韩中文免费视频 | 在线观看亚洲精品 | 亚洲激情网站免费观看 | 久久久亚洲精华液 | 亚洲一级片 | 九九免费观看全部免费视频 | 色婷婷福利 | 亚洲精选国产 | www.香蕉视频在线观看 | 中文字幕二区 | 国产精品资源 | 精品电影一区二区 | 国产99久| 久久激情综合网 | 日韩欧美区 | 精品国产一区二区三区免费 | 亚洲欧美乱综合图片区小说区 | 国产又黄又爽又猛视频日本 | 欧美激情综合色综合啪啪五月 | 欧美性成人 | 日韩电影在线观看一区二区 | 成 人 黄 色 视频 免费观看 | 日韩在线视频观看 | 国内视频在线 | 国产一区二三区好的 | 在线观看av网站 | 中文综合在线 | 欧美一级片播放 | 国产高h视频 | 一区二区在线电影 | 蜜臀精品久久久久久蜜臀 | 中文字幕视频一区二区 | 国产三级国产精品国产专区50 | 成人久久精品 | 国产黄色在线观看 | 免费中文字幕 | 豆豆色资源网xfplay | 色播五月激情五月 | 在线免费试看 | 91免费的视频在线播放 | 伊人影院得得 | 亚洲精品国产免费 | 992tv人人网tv亚洲精品 | 欧美久久久久久久 | 99色视频 | 亚洲国产婷婷 | 精品在线视频播放 | 午夜av剧场 | 久久免费成人网 | 日韩av影视在线观看 | 亚洲一区黄色 | 少妇高潮流白浆在线观看 | 日日操网站 | 国产成人黄色网址 | 国产一区二区久久久 | 国产精品不卡一区 | 久久国产精品视频观看 | 亚洲视频综合在线 | 狠狠的操狠狠的干 | 日韩精品第1页 | 亚洲国产人午在线一二区 | 日韩高清三区 | 狠狠操天天射 | 丁香六月激情婷婷 | 99激情网| 在线色资源 | 国产精品永久免费 | 五月天伊人 | 日本狠狠色 | 国产一区二区三区 在线 | 久久免费精品视频 | 97成人精品视频在线观看 | 色综合久久久久综合体桃花网 | 亚洲精品综合欧美二区变态 | 992tv在线观看网站 | 99色99| 色婷婷国产 | 国产做a爱一级久久 | 91超级碰 | 亚洲蜜桃av | 97超碰福利久久精品 | 日韩欧美综合在线视频 | 在线观看免费一级片 | 国产精品观看 | a极黄色片 | 超碰97免费 | 99久久精品午夜一区二区小说 | 久久这里只有精品首页 | 中文在线免费视频 | 超碰97国产 | 日本不卡视频 | 欧美analxxxx | 在线免费高清一区二区三区 | 日韩av一区二区三区四区 | 日日夜夜精品视频天天综合网 | 国产又粗又猛又黄又爽的视频 | 99免费看片 | www.888.av| 美女视频又黄又免费 | 亚洲国产丝袜在线观看 | 精品久久一| 日韩mv欧美mv国产精品 | 麻豆传媒一区二区 | 欧美日韩高清不卡 | 色综合天天综合 | 性色av免费在线观看 | 在线观看第一页 | 在线国产欧美 | 久久国内精品视频 | 在线不卡的av| 波多野结衣电影一区 | 国产a国产 | 三级视频片 | 三级在线视频观看 | 精品视频在线看 | 国产亚洲一区二区在线观看 | 国产a视频免费观看 | 久草在线免费在线观看 | 久久一区二区三区四区 | 亚洲aⅴ乱码精品成人区 | 亚洲精品午夜国产va久久成人 | 丝袜美腿在线视频 | 亚洲成av人片在线观看香蕉 | 国产日本在线观看 | av在线永久免费观看 | 日韩精品电影在线播放 | 在线中文字幕网站 | 美女网色| 日本在线观看视频一区 | 天堂av中文字幕 | 亚洲精品色 | bbw av| 国产又粗又猛又色又黄网站 | 久久女教师 | 欧美精品一区二区三区一线天视频 | 在线色亚洲 | 国产在线a不卡 | 久久精品99久久久久久2456 | 免费av试看 | 国产在线精品一区二区三区 | 国产高清在线永久 | 91看片在线观看 | 美国av片在线观看 | 国产不卡av在线播放 | 成人免费毛片aaaaaa片 | 久久亚洲综合色 | 99精品在线播放 | 国产成人333kkk | 在线播放一区二区三区 | 日韩久久精品 | 国产天天爽 | 久久综合亚洲鲁鲁五月久久 | 天天草av | 九九视频在线 | 六月丁香激情综合 | av观看久久久 | 三上悠亚一区二区在线观看 | 91国内在线 | 在线观看视频一区二区三区 | 成人黄色小说视频 | 欧美另类一二三四区 | 国产精品 中文字幕 亚洲 欧美 | 国产午夜精品免费一区二区三区视频 | 一区二区精品在线 | 国产一区在线免费观看视频 | 欧美人牲| 欧美在线视频不卡 | 91视频久久 | 美女黄频在线观看 | 福利片免费看 | 4438全国亚洲精品观看视频 | 91香蕉国产在线观看软件 | 中文字幕在线不卡国产视频 | 99免费在线观看 | 国产精品久久久久久久av电影 | 日韩精品极品视频 | 六月色婷 | 免费三级黄 | 99精品国产99久久久久久福利 | 中文字幕日韩伦理 | 国产成人精品亚洲日本在线观看 | 99精品视频在线观看视频 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产91精品看黄网站在线观看动漫 | 伊人婷婷久久 | 国产黄色片久久久 | 在线国产片| 国产69精品久久久久久 | 91久久丝袜国产露脸动漫 | 色哟哟国产精品 | 狠狠操在线 | 国产在线 一区二区三区 | 天天爱天天操 | 成人午夜电影免费在线观看 | 国产精品免费麻豆入口 | 亚洲午夜av电影 | 韩国一区二区在线观看 | 婷婷色网视频在线播放 | 2019免费中文字幕 | 欧美成人精品三级在线观看播放 | 激情久久网 | 99精品国产福利在线观看免费 | 国产精品一区二区免费 | 久久久亚洲电影 | 亚洲黄色区 | 日韩精品一区二区免费视频 | 日韩欧在线 | 久久综合九色九九 | 免费激情在线电影 | 国产成人一区二区在线观看 | 日韩xxx视频 | 国产精品嫩草在线 | 狠狠色丁香婷婷综合基地 | 免费av视屏| 免费黄在线看 | 精品亚洲视频在线观看 | 4hu视频| 黄色一区三区 | 精品网站999www | 豆豆色资源网xfplay | 九九视频精品免费 | 在线观看成人 | 久久九九精品久久 | 免费亚洲一区二区 | 国产福利免费看 | 97超碰在线免费观看 | 亚洲精欧美一区二区精品 | 国产美女在线免费观看 | 久久亚洲欧美 | 欧美性生活久久 | 欧美日韩超碰 | 亚洲精品免费在线播放 | 香蕉影视app| www色网站 | 日本久久综合网 | 国产在线不卡一区 | 午夜精品久久一牛影视 | 一二三四精品 | 欧美在线不卡一区 | 91精品久久久久久久久 | 欧洲视频一区 | 日日夜夜91 | a在线观看国产 | 蜜桃av综合网 | 午夜精品久久久久久久99 | 久久国产精品精品国产色婷婷 | 久久久久国产精品www | 欧洲亚洲激情 | 国产精品久久毛片 | 97色在线| 亚洲精品视频在线播放 | 亚洲综合射 | 精品一区二区电影 | 日韩黄视频 | 日韩中文字幕免费视频 | 成 人 黄 色 视频免费播放 | 狠狠干天天射 | 久久精品久久99精品久久 | 日本动漫做毛片一区二区 | 欧美在线视频a | 99精品久久久久久久久久综合 | 亚洲不卡123 | 精品免费久久 | 国产精品一区二区av影院萌芽 | 黄色av网站在线观看免费 | 99久久久国产精品免费99 | 国产黄大片 | 日韩高清在线一区 | 日韩毛片在线播放 | 一区二区三区在线视频观看58 | 国产精品久免费的黄网站 | 一级性视频 | 婷婷综合影院 | 亚洲日本韩国一区二区 | 日韩电影在线观看一区二区 | 四虎在线免费观看视频 | 久久精品一区二区三区国产主播 | 亚洲精品视频在线观看免费 | 国产精品 999 | 欧美激情视频三区 | 国产黄免费看 | av资源免费观看 | 在线精品一区二区 | 天天躁日日躁狠狠躁av麻豆 | 日韩电影中文字幕在线观看 | 成人久久久久久久久久 | 日韩精品免费专区 | 欧美性色综合网 | 色婷婷久久一区二区 | 精品一区在线 | 五月天婷婷在线观看视频 | 9999激情| 六月婷婷久香在线视频 | 在线91观看| av五月婷婷| 亚洲综合色激情五月 | 99爱在线| 少妇性bbb搡bbb爽爽爽欧美 | 婷婷丁香五 | 日本精品一区二区在线观看 | 伊人婷婷网 | 国产精品岛国久久久久久久久红粉 | 久久精品人人做人人综合老师 | 成人羞羞视频在线观看免费 | 国内精品久久久久久久久久 | 色婷婷丁香 | 香蕉精品视频在线观看 | 国产专区在线 | 欧美成人猛片 | 亚洲电影网站 | 精品一区二区免费 | 国模吧一区 | 精品久久久影院 | 免费aa大片 | 99久久国产免费看 | 国产在线播放观看 | 国产涩图 | 青青视频一区 | 免费在线观看成人av | 国产精品剧情在线亚洲 | 深夜免费福利在线 | 成人在线视频你懂的 | 色丁香久久 | 成人免费大片黄在线播放 | 久久艹人人 | av大全在线 | 欧美日韩免费在线视频 | 爱情影院aqdy鲁丝片二区 | 在线导航av | 久久久久久欧美二区电影网 | www.婷婷色 | 丁香5月婷婷久久 | 免费看一级黄色大全 | 日韩免费电影一区二区三区 | 国产96av| 最近免费中文字幕 | 国产精品入口a级 | 欧美看片 | 最近在线中文字幕 | 在线观看精品国产 | 在线www色| 欧美视频日韩视频 | 一级一片免费观看 | 精品国产乱码久久久久久浪潮 | 久久免费视频一区 | 在线观看成人 | 中文字幕一区二区三区精华液 | 久久久免费观看完整版 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 激情av一区二区 | 久久久久久久国产精品 | 中文字幕字幕中文 | 欧美精品久久人人躁人人爽 | 在线观看视频亚洲 | 又大又硬又黄又爽视频在线观看 | 美女国内精品自产拍在线播放 | 国产视频午夜 | 91精品国产三级a在线观看 | 国产精品久久一区二区三区, | 国产韩国日本高清视频 | 国产欧美精品一区二区三区 | 日韩大片在线免费观看 | 人人爽人人爽人人片av | 免费无遮挡动漫网站 | 在线观看视频黄 | 日产乱码一二三区别在线 | 韩国av一区 | 日韩特级黄色片 | 成片视频免费观看 | 中文字幕在线成人 | 激情视频一区二区三区 | 中文字幕制服丝袜av久久 | 日韩xxxx视频| 人人爽久久涩噜噜噜网站 | 深夜成人av | 狠狠色丁香婷婷综合久久片 | 99精品在线观看视频 | 久久久久免费精品 | 特级西西444www大胆高清无视频 | 久久精品女人毛片国产 | 免费观看性生交 | 免费视频你懂得 | 国产精品美女久久 | 国产伦理剧 | 人人爽人人爽 | 黄色片免费看 | 久久99热久久99精品 | 国产精品va在线观看入 | 亚洲国内精品在线 | 91亚瑟视频 | 精品在线一区二区 | av在线8 | 怡红院久久| 97在线精品国自产拍中文 | 精品国产诱惑 | 亚色视频在线观看 | 欧美日韩国产精品一区二区 | 一区二区三区在线观看免费视频 | 久久一区二区三区日韩 | aaa黄色毛片 | 国产精彩视频一区 | 香蕉视频免费在线播放 | 精品日本视频 | 91精品国产欧美一区二区成人 | 国产精品网站一区二区三区 | 亚洲 精品在线视频 | 亚洲精品视频在线免费播放 | 在线观看免费高清视频大全追剧 | 亚洲欧洲日韩 | 久久夜色精品国产欧美一区麻豆 | 麻豆影视网 | 开心激情五月网 | 国产精品麻豆免费版 | 色窝资源| 91成人区| 最新色站 | 美女福利视频网 | 国产黄色电影 | 99欧美| 国产成人精品久久二区二区 | 999日韩| 免费看的黄网站软件 | 亚洲精品成人免费 | 日韩视频一区二区三区在线播放免费观看 | 中国一级片在线观看 | 精品国产成人 | 国产裸体视频网站 | 欧美一区二区在线刺激视频 | 亚洲国产日韩一区 | 18pao国产成视频永久免费 | av大片网址| 麻豆传媒一区二区 | 91色吧 | 99视频一区二区 | 久久精品国产亚洲 | 一区二区三区高清在线 | 精品久久中文 | www.久久99| 久久久久久国产精品999 | 在线草 | 国产一区二区三区免费视频 | 日本aaa在线观看 | 亚洲欧洲精品一区二区 | 久久久久免费精品国产 | 亚洲 欧洲 国产 日本 综合 | 国产日韩精品在线 | 激情视频91 | 在线观看黄色av | 久久久久久免费网 | 色婷婷成人网 | 成人网色 | 日本中文乱码卡一卡二新区 | 久久久久在线视频 | 国产精品剧情在线亚洲 | 三级小视频在线观看 | 91激情视频在线播放 | 日韩在线观看视频免费 | 欧美日韩免费一区二区 | 亚洲欧美乱综合图片区小说区 | 色多多污污| 久久大视频 | 午夜影视剧场 | 色婷婷久久久 | 中文字幕在线观看第三页 | 欧美日韩高清在线一区 | 国产99一区| 手机在线日韩视频 | 国产五月婷 | 一区三区在线欧 | 欧美日韩中文字幕在线视频 | 中文字幕av最新更新 | 丁香亚洲 | 国产不卡在线播放 | 成人一级黄色片 | 日本最新高清不卡中文字幕 | 免费国产一区二区视频 | 日日爽天天爽 | 亚洲综合精品在线 | 亚洲日韩精品欧美一区二区 | 色婷婷久久久综合中文字幕 | 欧美一级片在线播放 | 婷婷免费在线视频 | 国产精品亚洲视频 | 中文字幕日本特黄aa毛片 | 毛片网站在线 | 日韩一区二区免费在线观看 | 精品日韩在线一区 | 久操视频在线免费看 | 国产精品免费一区二区 | 欧美日韩在线视频一区二区 | 免费观看国产精品视频 | 麻豆视频免费入口 | 国内三级在线观看 | 狠狠躁夜夜躁人人爽视频 | 蜜臀av性久久久久蜜臀av | 天天色天天操综合 | 国产亚洲成人精品 | 色偷偷中文字幕 | 免费看一级黄色大全 | 色姑娘综合网 | 在线欧美日韩 | 丁香婷婷激情国产高清秒播 | 亚洲一区二区天堂 | 国产亚洲精品成人av久久ww | 99热精品免费观看 | 成人国产亚洲 | 国产精品国产三级国产不产一地 | 国产第一页福利影院 | 免费在线观看av的网站 | 9幺看片| 丁香花在线视频观看免费 | 久久久国产精品亚洲一区 | 亚洲精品在线免费看 | 日本精品视频一区二区 | 四虎影视国产精品免费久久 | 欧美精品免费在线观看 | 天天操天天射天天操 | 奇米影视8888 | 欧美视频在线观看免费网址 | 色国产在线 | 亚洲永久精品一区 | 日本在线h| 九七视频在线观看 | 波多野结衣在线观看一区 | 国产精品久久久久久69 | 日日日天天天 | 国产精品一区二区果冻传媒 | 免费高清男女打扑克视频 | 免费v片| 亚洲欧美观看 | 成人99免费视频 | 成人av手机在线 | 欧美综合干 | 国产亚洲精品久久久久久移动网络 | 精品一区二区免费在线观看 | 日日噜噜噜噜夜夜爽亚洲精品 | 正在播放亚洲精品 | 亚洲成a人片77777kkkk1在线观看 | 欧美性超爽 | 久久字幕精品一区 | 一区中文字幕在线观看 | 丁香花在线观看视频在线 | 99婷婷| 婷婷色中文| 日韩欧美在线观看一区二区 | www.黄色片网站 | 免费aa大片 | 一区二区三区免费在线 | 欧美精品三级在线观看 | 成人黄色大片网站 | 天天色天天骑天天射 | av在线免费播放 | 亚洲第一av在线 | 亚洲色影爱久久精品 | 日韩午夜在线 | 欧美黄色特级片 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 亚洲精品tv | 天海冀一区二区三区 | 天天干一干 | 日本亚洲国产 | 狠狠色丁香九九婷婷综合五月 | 99亚洲精品视频 | 毛片精品免费在线观看 | 91av视频在线观看 | 999久久久精品视频 日韩高清www | 欧美精品久久久久久 | 久久视屏网 | 天天操夜夜想 | 国产女人40精品一区毛片视频 | 国产高清日韩欧美 | av网址在线播放 | 成人国产精品免费 | 亚洲高清国产视频 | 国产精品黄色 | av三级在线看 | 成人一级视频在线观看 | 成年性视频 | 国产经典 欧美精品 | 免费色视频在线 | 日日躁你夜夜躁你av蜜 | 婷婷久久综合九色综合 | 亚洲电影第一页av | 久爱综合| 蜜臀av.com | 91人人澡人人爽 | 免费黄色网址大全 | 久久婷婷五月综合色丁香 | 久久久精品亚洲 | 91视频在线观看免费 | 91视频首页| 97精品国产97久久久久久春色 | 成人污视频在线观看 | 在线国产中文字幕 | 天天射天天色天天干 | 天天操天天能 | 天天爱综合 | 久久久精品日本 | 亚洲视频免费 | 欧美性视频网站 | 69精品视频在线观看 | 久久久久久久久久久网站 | 国产欧美日韩视频 | 97在线看 | 日韩成人免费在线电影 | 日本中文字幕网址 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 欧美日韩在线免费观看视频 | 在线看av的网址 | 91精品导航 | 中文字幕亚洲不卡 | 久久国产美女视频 | 在线视频一区二区 | 欧美日韩免费一区二区 | 天天干天天弄 | 久久黄色小说视频 | 视频 国产区 | 久久99精品国产麻豆宅宅 | av在线播放不卡 | 人人澡人人爽欧一区 | 亚洲.www | 日本三级在线观看中文字 | 激情综合狠狠 | 97天堂| 国产精品自产拍 | 日韩高清免费在线 | 91精品啪在线观看国产 | 最近中文字幕mv | 日本视频不卡 | 蜜桃传媒一区二区 | 精品一二三区视频 | 日韩欧美精品一区二区 | 日韩免费在线观看视频 | 97夜夜澡人人爽人人免费 | 亚洲播播| 亚洲干视频在线观看 | 免费在线观看一级片 | 黄色视屏av | 中文字幕电影高清在线观看 | 国产日韩欧美自拍 | 18久久久 | 五月婷丁香 | 国产视频二| 在线观看黄网站 | 国产精品日韩欧美一区二区 | 免费无遮挡动漫网站 | av三级在线免费观看 | 久久伊人八月婷婷综合激情 | 亚洲欧美婷婷六月色综合 | 99精品欧美一区二区 | 亚洲精品综合在线 | 亚洲成人av电影 | 一级黄色片在线播放 | 国产亚洲片| 亚洲精品乱码白浆高清久久久久久 | 欧美精品黑人性xxxx | 成人国产电影在线观看 | 蜜臀av一区二区 | 狠狠操天天射 | 亚洲最大av在线播放 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 成人久久久久久久久久 | 99在线精品视频在线观看 | 91久久精品一区 | 国产精品96久久久久久吹潮 | 久亚洲| 婷婷婷国产在线视频 | 精品国产一区二区三区男人吃奶 | 国产一区二区成人 | 不卡的av电影 | 四虎www com| 精品久久久久久久久久久久久久久久 | 免费网站看v片在线a | 免费韩国av | 91福利视频一区 | 国产在线精品观看 | 中文字幕 影院 | 18久久久久 | 96看片 | 成人永久免费 | 国产亚洲婷婷免费 | 狠狠躁夜夜躁人人爽视频 | 亚洲1级片 | 免费影视大全推荐 | 国内外成人免费在线视频 |
    <small id="biqxq"><menu id="biqxq"><optgroup id="biqxq"></optgroup></menu></small>
      <sup id="biqxq"></sup>
      <noscript id="biqxq"><optgroup id="biqxq"></optgroup></noscript>