2013年4月11日 星期四

緒程(task, thread) 間資料的同步與鎖定

種類

適用情況 狀態  
Binary Semaphore 只能被唯一一個緒程獨佔存取的資源 佔用與非佔用 旗號可以被任意緒程獲取並釋放
Semaphore 允許多個緒程同時存取的資源

獲取:
‧將旗號值減1
‧如果旗號值小於0,則進入等待狀態,否則繼續進行。
釋放:
‧將旗號值加1
‧如果旗號值小於1,喚醒一個等待中的緒程。

旗號可以被任意緒程獲取並釋放
Mutex 只能被唯一一個緒程獨佔存取的資源   由同一個緒程獲取和釋放
Critical Section  

進入關鍵區段
離開關鍵區段

作用範圍僅限於該行程,其他行程無法獲取鎖定。
Read-Write Lock 適用於讀取頻繁,僅偶爾寫入的情況。

兩種獲取方式:
共用(Shared) 或 獨佔(Exclusive)


若鎖定處於共用狀態,緒程試圖獲取獨佔,必須等所有緒程釋放鎖定
 

2013年4月2日 星期二

在 Ubuntu 上快速安裝設定 pure-ftpd

# 切換成 root
sudo -i

# 安裝 pure-ftpd
apt-get install pure-ftpd

# 建立 ftpuser 家目錄
mkdir /home/ftpuser

# 新增 ftpuser 使用者以及 ftpgroup 群組
groupadd ftpgroup
useradd ftpuser -g ftpgroup -s /bin/false -d /home/ftpuser
chown -R ftpuser:ftpgroup /home/ftpuser

# 使用 pure-pw 指令來建立虛擬帳號
# 新增完畢後,您應可以在
# /etc/pure-ftpd/ 目錄下找到一個叫 pureftpd.passwd 的檔案,而這個檔案就類似於
# /etc/passwd 啦,只不過它是屬於虛擬帳號的 password file。
pure-pw useradd ftpuser -u ftpuser -g ftpgroup -d /home/ftpuser
Password:
Enter it again:

# 依據 pureftpd.passwd 來建立認證資料庫 /etc/pure-ftpd/pureftpd.pdb。
# 將來要是 pureftpd.passwd 有異動,須執行 "pure-pw mkdb",以更新資料庫內容。
pure-pw mkdb

# 其實您在建立虛擬帳號的同時,就可以使用 -m 參數來把 pureftpd.pdb 給順便建立起來:
# 上面兩個指令可以合併成下面一個指令
pure-pw useradd ftpuser -u ftpuser -g ftpgroup -d /home/ftpuser -m


# 重啟ftp服務器
/etc/init.d/pure-ftpd restart