原创 Linux模塊編程使用內核未導出的函數

轉自:https://blog.csdn.net/jasonLee_lijiaqi/article/details/83089569 作者:jasonLee_lijiaqi 一般我們在編寫內核模塊時,可以直接使用內核中使用EXPORT_S

原创 Ubuntu18.04編譯內核後開機報錯:Couldn't find suitable memory target

解決方案: 在編譯內核安裝模塊時使用如下命令: sudo make INSTALL_MOD_STRIP=1 modules_install 其他一切照舊,編譯安裝完後,重啓切換到新編譯的內核後就不會遇到上述問題了~ 解決方案及可能原因來

原创 NOVA文件系統——空間管理之初始化free-list

NOVA爲了讓NVMM空間分配與回收更快,它將NVMM分爲持久性內存池(pools),每個CPU一個內存池(pool),並將空閒的NVMM頁面lists放置在DRAM中。 如果當前的CPU pool中沒有足夠的頁面可用,那麼NOV

原创 NOVA文件系統——inode初始化與管理

1、NOVA inode簡介 在NOVA論文中對Inode Table進行了一下描述: NOVA將每個inode table初始化爲2MB的inode塊數組。 每個NOVA inode都以128字節邊界對齊,因此給定的inode

原创 持久性內存編程——類型

在之前的所有關於持久化內存編程的文章中,代碼片段和示例都有持久指針(pmemoid),沒有任何類型信息——它們是簡單的C結構。在pmem庫開發的早期,開發者發現使用類似的東西非常容易出錯,而且通常很困難。他們在用類型安全容器封裝pmemo

原创 Ubuntu使用內存DRAM模擬持久化內存Persistent Memory

現在真實的持久化內存對於我們普通人來說還不可用,在進行實驗和測試的時候可能需要我們模擬持久化內存來進行使用。 現在在一臺主機(沒有服務器o(╥﹏╥)o)上測試劃分一塊內存區域來進行持久化內存的模擬。 環境:Ubuntu 18.04,一臺普

原创 持久性內存編程——事務

在之前一直用的持久化內存,現在感覺有一種說不出的怪怪的感覺,之後都改爲持久性內存。 前面介紹了訪問持久性內存的方式,其中拋出了一些在持久性內存上編程的要點,接下來就翻譯pmem.io上的第二個編程指導——事務。 原文來自:http://p

原创 linux perf工具測試程序cpu cache刷回實驗

一、perf安裝 進入自己編譯的內核,一般目錄是: /usr/src/linux-x.x.x/tools/perf  編譯安裝之後,即可使用 make make install perf的使用可以查看本文參考文獻1,下面介紹一下per

原创 進程與MMU、TLB之間的疑問

background 在Linux中,進程操作的都是虛擬地址,而MMU是進行虛擬地址與物理地址的轉化,TLB用於加快虛擬地址(線性地址)的轉換~ 每個進程都有自己對應的頁表,不同進程相同的虛擬地址映射的大概率不是相同的物理地址,同時不同進

原创 X86_64 CR3控制寄存器詳解

CR3寄存器目前博客主要能查找到的內容都比較簡單,例如 《控制寄存器 cr0,cr2,cr3》等博客,只對CR3寄存器進行了簡單的介紹: 狀態和控制寄存器組除了EFLAGS、EIP ,還有四個32位的控制寄存器,它們是CR0,CR1,CR

原创 Linux C語言根據文件描述符fd獲得文件絕對路徑(文件名)

一、代碼示例 示例代碼首先根據文件名獲取文件描述符,然後根據文件描述符獲得文件絕對路徑(文件名),如果已知文件描述符fd,可直接通過下面兩條代碼獲得文件絕對路徑(文件名): snprintf(buf,sizeof(buf), "/pro

原创 root權限下修改文件權限遇到 chmod: changing permissions of '***': Operation not permitted

轉自:https://www.cnblogs.com/cpl9412290130/p/11592803.html 一、問題描述 衆所周知,在linux系統中,權限最大的是root,但凡修改涉及到系統本身的重大權限的操作,都需要root的權

原创 緩衝文件系統——fopen、fread、fwrite、fclose詳解

一 介紹 1、《緩衝文件系統和非緩衝文件系統》 https://nocbtm.github.io/2018/11/05/%E7%BC%93%E5%86%B2%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E5%9

原创 C/C++中char,char*,char *指針數組所佔字節數

轉自:https://blog.csdn.net/qq_39126966/article/details/82285868 char.c: #include<stdio.h> int main() { char c = 'a'; c

原创 fread帶緩衝測試與驗證

一、FILE結構 fread操作的是FILE結構,FILE結構中包含了一個緩存buf的定義: typedef struct _IO_FILE FILE;   struct _IO_FILE struct _IO_FILE {   i