亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: OstrichFly
打印 上一主題 下一主題

[原創(chuàng)] 寫一個塊設(shè)備驅(qū)動 [復(fù)制鏈接]

論壇徽章:
0
81 [報告]
發(fā)表于 2008-12-29 23:04 |只看該作者
期待樓主的下一篇!
好像期待火影和死神一樣!
真是非常非常感謝樓主分享經(jīng)驗!

論壇徽章:
0
82 [報告]
發(fā)表于 2008-12-30 09:40 |只看該作者
樓主辛苦了,寫的真不錯!
感謝分享!

論壇徽章:
0
83 [報告]
發(fā)表于 2008-12-31 09:23 |只看該作者
寫的很不錯!

論壇徽章:
0
84 [報告]
發(fā)表于 2008-12-31 14:11 |只看該作者
kmap(..)函數(shù)在高端建立永久內(nèi)核映射,但是如果在pkmap_count中沒有找到可用的空計數(shù)器,map_new_virtual()函數(shù)就會阻塞當(dāng)前進程,加入到等待隊列,等下次調(diào)度時繼續(xù)建立映射關(guān)系,但是當(dāng)重新被喚醒時,會判斷是否另一個進程已經(jīng)映射了該頁,如果已經(jīng)映射,在map_new_virtual()函數(shù)里有這句話
   if (page_address(page))
             return (unsigned long)page_address(page);
      就是如果該頁已經(jīng)被映射了就返回這頁的對應(yīng)的線性地址。如果沒有繼續(xù)映射關(guān)系的請求。
這樣你程序中如果在調(diào)用kmap(bvec->bv_page)建立永久內(nèi)核映射中出現(xiàn)了阻塞,并且在下次回來時該頁已經(jīng)被其他進程映射,那里這時返回的是其他進程對應(yīng)的映射頁,而非本進程,這樣繼續(xù)操作的話無非是引用或更改其他進程的頁,必然導(dǎo)致其他進程或本進程的panic.我想問你在這里是怎么解決的?
    這個好比本來你在追一個女的,但是你還沒追到。在你調(diào)整進攻戰(zhàn)略的時候。另一個男生把她搞定了,而且懷孕了。這時你繼續(xù)追,就算你追到手了,但是肚子里的孩子還是他的。你還是會很痛苦。

   對了,這里的調(diào)用順序是 kmap->kmap_high->map_new_virtual. 針對的內(nèi)核是2.6.28。

[ 本帖最后由 pigcrying 于 2008-12-31 14:34 編輯 ]

論壇徽章:
0
85 [報告]
發(fā)表于 2008-12-31 16:42 |只看該作者
這個頁面已經(jīng)分配給這個進程了,其它的進程還能分配到這個頁面嗎?

論壇徽章:
0
86 [報告]
發(fā)表于 2008-12-31 20:32 |只看該作者
原帖由 younglovej 于 2008-12-17 15:54 發(fā)表

更新了!

謝謝支持!

論壇徽章:
0
87 [報告]
發(fā)表于 2008-12-31 20:35 |只看該作者
原帖由 hb12112 于 2008-12-17 16:46 發(fā)表

如果alloc_pages用的是GFP_HIGHME標(biāo)志分配的話,是否可以通過page->virtual得到地址,那么他的頁表映射是在哪建立的?

原帖由 fishswimming 于 2008-12-17 20:58 發(fā)表

page結(jié)構(gòu)的virtual域僅為定義了WANT_PAGE_VIRTUAL宏的少數(shù)平臺設(shè)置:
#if defined(WANT_PAGE_VIRTUAL)
        void *virtual;                        /* Kernel virtual address (NULL if
                                           not kmapped, ie. highmem) */
#en ...

原帖由 hb12112 于 2008-12-18 09:59 發(fā)表
映射關(guān)系是在哪建立的呢?是不是所有的page都會在這個hash里面。還是說有了映射關(guān)系的頁表才會加入這個hash?謝謝!

原帖由 fishswimming 于 2008-12-18 12:19 發(fā)表

通過alloc_pages()獲得的高端物理內(nèi)存,如果你想直接訪問它,要首先將page映射到非線性地址空間中,方法有:
1. kmap(),該函數(shù)返回page對應(yīng)的虛擬地址,如果page屬于HIGH_MEM且未曾映射,那么kmap()會調(diào)用m ...

原帖由 hb12112 于 2008-12-18 13:44 發(fā)表
明白了,謝謝!


謝謝fishswimming回答這個問題,我完全贊同。

論壇徽章:
0
88 [報告]
發(fā)表于 2008-12-31 20:41 |只看該作者
原帖由 fishswimming 于 2008-12-17 20:44 發(fā)表

恩,明白了,thx
還請再詳細說說,為什么64位上龐大的非線性映射區(qū)域可以有效減少碎片的產(chǎn)生?

我指的在非線性映射區(qū)充足的時候,即使物理頁面全是碎片,也可以通過vmap或vmalloc分配到虛擬地址連續(xù)的內(nèi)存。
本質(zhì)上,物理內(nèi)存的碎片是無法通過64位體系避免的,但64位體系卻提供了一個淡化這個問題的方法。
而i386上的非線性映射區(qū)域就很緊張,除了模塊需要占用以外,其他的一些功能,比如relay的緩沖區(qū)會爭搶這有限的空間。
上次我準備把relay建得稍微大一些,就遇到了這個問題。

謝謝支持!

論壇徽章:
0
89 [報告]
發(fā)表于 2008-12-31 20:42 |只看該作者
原帖由 hb12112 于 2008-12-23 15:37 發(fā)表
頂!

謝謝支持!

論壇徽章:
0
90 [報告]
發(fā)表于 2008-12-31 20:43 |只看該作者
原帖由 lonelyair 于 2008-12-24 09:18 發(fā)表
等待中。。。

謝謝支持!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP