天天看點

記憶體位址Linux下記憶體配置設定與映射之一

發一下牢騷和主題無關:

    位址類型:

    32位的cpu,共4g間空,其中0-3g屬于使用者間空位址,3g-4g是核心間空位址。

    使用者虛拟位址:使用者間空程式的位址

    實體位址:cpu與記憶體之間的用使位址

    總線位址:外圍總線和記憶體之間的用使位址

    核心邏輯位址:記憶體的分部或全體射映,大多數情況下,它與實體位址僅差一個偏移量。如kmalloc配置設定的記憶體。

    核心虛拟位址:核心間空的位址射映到實體位址上,但射映不必是線性的。有所的邏輯位址都是核心虛拟位址,如vmalloc配置設定到的位址。

    1、記憶體配置設定與釋放

    kmalloc一般于用配置設定小于128kb的記憶體。

    vmalloc配置設定的記憶體間空是一片連續的虛拟記憶體,但射映到實體記憶體卻不必定連續。

    2、使用者态和核心态記憶體互動

    copy_from_user

    copy_to_user

    access_ok

    在拜訪使用者間空的記憶體時,必須先檢查使用者控件的指針是不是法合。用使access_ok函數。

    3、實體位址到虛拟位址的射映

    cpu對設外i/o口端實體位址的編址方法分i/o射映方法和記憶體射映方法。在x86平台上,為設外專門現實了與ram記憶體位址不同的一個獨單的位址間空i/o方法。而在arm、mips、powerpc上設外i/o口端擁有與記憶體同相的實體位址。

    ioremap函數用來将i/o記憶體源資的實體位址射映到心核位址間空(3g-4g)中。

    ioremap消取ipremap所做的射映。

    讀寫i/o的函數包含:

    _raw_writeb,_raw_writew,_raw_writel

    _raw_readb,_raw_readw,_raw_readl

    每日一道理

青春是用意志的血滴和拼搏的汗水釀成的瓊漿——曆久彌香;青春是用不凋的希望和不滅的向往編織的彩虹——絢麗輝煌;青春是用永恒的執著和頑強的韌勁築起的一道銅牆鐵壁——固若金湯。

    4、核心間空到使用者間空的射映

    想在使用者間空拜訪核心位址,可以采取mmap方法。

     射映一個裝置意味着使使用者間空的一段位址關聯到裝置記憶體上,這使得如果程式在配置設定的位址範圍内行進讀取或者入寫,實際上就是對裝置的拜訪。

文章結束給大家分享下程式員的一些笑話語錄:

與女友分手兩月有餘,精神萎靡,面帶菜色。家人介紹一女孩,昨日與其相親。女孩果然漂亮,一向吝啬的我決定破例請她吃晚飯。

選了一個蠻貴的西餐廳,點了比較貴的菜。女孩眉開眼笑,與我談得很投機。聊着聊着,她說:“我給你講個笑話吧。”“ok”

  “一隻螳螂要給一隻雌蝴蝶介紹對象,見面時發現對方是隻雄蜘蛛。見面後螳螂問蝴蝶‘如何?’,‘他長的太難看了’,‘别看人家長的醜,人家還有網站呢’。”

  “呵呵………”我笑。忽然她問:“你有網站嗎?”