第七章 資料管理

2021-07-24 00:16:02 字數 2094 閱讀 4119

記憶體管理

#include#include

char *memptr = (char *) malloc(1024);//

分配1k的記憶體

#include#include

char *memptr = (char *) malloc(1024);//

分配1k的記憶體

free(memptr);//

釋放記憶體

linux支援虛擬記憶體,核心會將暫時不用的記憶體塊的內容寫到硬碟上,用作虛擬記憶體的硬碟部分被稱為交換空間(swap space)。

linux將所有的記憶體以頁為單位進行劃分。每當程式試圖訪問記憶體時,就會發生虛擬記憶體到物理記憶體的轉換。

如果乙個記憶體頁面未被使用,則將其從物理記憶體轉移到交換空間(換頁)。

如果程式試圖訪問已經置換到交換空間的記憶體頁的資料,則將記憶體頁從交換空間再次置換到物理記憶體。

多工,多使用者下,程式經常共享檔案資料,建立某種控制檔案的方式非常重要。

兩種應用:(1)以原子操作的方式建立鎖檔案,保證建立的檔案是唯一的,不會被其他程式在同一時間建立。(2)允許程式鎖定檔案的一部分,從而獨享對這部分內容的訪問。

簡單來說就是建立乙個唯一的檔案,並保證同一時間其他程式不會建立相同的檔案。

鎖檔案只是建議鎖,不是強制鎖。即鎖檔案只是指示器的作用,需要程式互相協作使用它們。

//

lock1.c

#include#include

#include

#include

#include

intmain()

else

exit(0);

}

執行

wuchao@:~/linux_program/ch07$ ./lock1

open success

wuchao@:~/linux_program/ch07$ ./lock1

open failed with error:

17

第一次執行時,檔案不存在,所有呼叫open成功,第二次檔案存在,所有呼叫失敗。open返回-1。

#includeint fcntl(int fildes, int command, struct flock *flock_structure );

command引數有以下選項:

f_getlk

獲取檔案的鎖資訊

f_setlk

加鎖或解鎖

f_setlkw

同f_setcl,在無法獲取鎖時,一直等待,直到獲取到鎖或收到乙個訊號。

flock結構體如下:

short  l_type

取值如下:

f_rdlck:共享(或讀)鎖。多個程序可以擁有同一檔案的同一區域的共享鎖。只要任意乙個程序擁有一把共享鎖,就沒有程序可以獲得該區域的獨佔鎖。為了獲取共享鎖,檔案必須以讀或讀寫開啟。

f_unclk:解鎖

f_wrclk:獨佔(或寫)鎖。只有乙個程序可以在檔案的特定區域擁有一把獨佔鎖。只要任意乙個程序有了這把鎖,其他程序無法在該區域獲得任何型別的鎖。為了獲取獨佔鎖,檔案必須以寫或讀寫開啟。

short  l_whence

定義了l_start的相對偏移值,l_whence常設為seek_set,此時l_start從檔案的開始計算。

取值如下:

seek_set:檔案頭

seek_cur:當前位置

seek_end:檔案尾

short  l_start

該區域的第乙個位元組。

short  l_len

該區域的位元組數。

short  l_pid

持有鎖的程序識別符號。

鎖狀態下的讀寫操作

當對檔案區域加鎖後,必須使用底層read和write訪問檔案資料。因為fread和fwrite會對讀寫的資料進行快取。

程式a,b需要同時更新同乙個檔案中的位元組1和位元組2,程式a選擇先更新位元組2,程式b選擇先更新位元組1。

兩個程式同時啟動,程式a先鎖定位元組2,程式b先鎖定位元組1。程式a嘗試鎖定位元組1,但位元組1被b鎖定,a在那裡等待。接著b嘗試鎖定2,但被a鎖定,b也在等待。

此時,兩個程式都無法繼續下去。

第七章 資料管理技術的發展

1.資料模型是資料庫系統的核心和基礎。以資料模型的發展為主線,資料庫技術可分為第一代的網狀,層次結構資料庫系統,第二代的關聯式資料庫和第三代的物件導向資料庫 2.支援關係資料模型的資料庫是第二代資料庫 3.第三代資料庫的基本特徵 1 應支援資料管理,物件管理和知識管理 2 必須保持或繼承第二代資料庫...

第七章檔案管理

為了能對乙個檔案進行正確的訪問,必須為檔案設定用於描述和控制檔案的資料結構,稱之為 檔案控制塊 fcb 檔案與檔案控制塊一一對應。把檔案控制塊的有序集合稱為檔案目錄,即乙個檔案控制塊就是乙個目錄項。通常乙個檔案目錄也被看作是乙個檔案,稱為目錄檔案。檔案管理的操作 基本資訊記錄 fcb,目錄項 方便檢...

第七章 檔案管理

檔案管理 把所管理的程式和資料組織成一系列的檔案,並能進行合理的儲存 使用等操作。1.基本概念 資料項 描述物件某種屬性的字符集 是資料組織中可以命名的最小邏輯資料單位。記錄 一組相關資料項集合,描述物件某方面的屬性 關鍵字 乙個記錄中的乙個或幾個資料項的集合,用於唯一的標識乙個記錄。檔案 由建立者...