在Windows系統中我們可以很輕易地檢視目前cpu的運作頻率, 在Linux上也是可以輕易做到的. 只要執行下面的指令:
$ cat /proc/cpuinfo
不僅可以在cpu MHz看到目前的運作頻率, 還可以看到許多其他cpu的資訊.
如果不想看到那麼多雜七雜八的資訊, 可以搭配grep將所要檢查的資訊過慮出來, 例如:
$ grep -E 'GHz|MHz' /proc/cpuinfo
這樣就只會顯示cpu的最高工作頻率以及目前的工作頻率而已.
星期日, 8月 23, 2009
星期四, 8月 20, 2009
星期三, 8月 19, 2009
系統自動掛載ntfs partition
拜ntfs-3g所賜, 我們已經可以在Linux上掛載ntfs的檔案系統, 進行資料的讀寫動作. 雖然Linux系統UI已經做得很好, 只要用滑鼠點一下ntfs partition就會自動幫我們掛載到系統上, 可是總覺得如果可以如其他的ext3 partition一樣, 在開機後就自動掛載那不是更完美嗎? 既然有這個想法, 就要想辦法解決一下. 其實很簡單, 還是一樣利用/etc/fstab就可以輕鬆達到.
首先, 找出ntfs partition的UUID, 方法可以參考取得partition的UUID
再來就是編輯/etc/fstab這個檔案, 在檔案中加上
UUID=ntfs_partition_uuid mount_point ntfs-3g defaults 0 2
這樣就可以了.
例如: 我們的ntfs partition的uuid如果是4C54A5A254A58EF0, 並且要將該partition掛載到/media/VAIO目錄中
$ sudo mkdir /media/VAIO
$ sudo echo "UUID=4C54A5A254A58EF0 /media/VAIO ntfs-3g defaults 0 2" >> /etc/fstab
$ sudo mount -a
首先, 找出ntfs partition的UUID, 方法可以參考取得partition的UUID
再來就是編輯/etc/fstab這個檔案, 在檔案中加上
UUID=ntfs_partition_uuid mount_point ntfs-3g defaults 0 2
這樣就可以了.
例如: 我們的ntfs partition的uuid如果是4C54A5A254A58EF0, 並且要將該partition掛載到/media/VAIO目錄中
$ sudo mkdir /media/VAIO
$ sudo echo "UUID=4C54A5A254A58EF0 /media/VAIO ntfs-3g defaults 0 2" >> /etc/fstab
$ sudo mount -a
取得partition的uuid
現在Linux掛載partition常常使用UUID的方式來指定所要掛載的partition, 要取得partition的UUID有以下幾個方法:
1. 最簡單的方式是直接執行blkid, 會列出目前連接到系統上所有磁碟的partition UUID, 檔案系統以及label, 例如:
$ blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="4C54A5A254A58EF0" LABEL="VAIO" TYPE="ntfs"
/dev/sda5: UUID="4CFCC181FCC165B4" TYPE="ntfs"
/dev/sda6: UUID="a5050769-1c80-4e7c-8b7c-da810624d910" TYPE="ext3"
/dev/sda7: UUID="8c28803c-3390-46d7-bb90-fd9a83c0bff3" TYPE="swap"
/dev/sda8: UUID="95206ddf-7ffd-4ddb-8ced-631b5df70b26" TYPE="ext3"
2. 另外也可以執行sudo vol_id也可以得到指定partition的相關資訊, 例如:
$ sudo vol_id /dev/sda1
ID_FS_USAGE=filesystem
ID_FS_TYPE=ntfs
ID_FS_VERSION=3.1
ID_FS_UUID=4CFCC181FCC165B4
ID_FS_UUID_ENC=4CFCC181FCC165B4
ID_FS_LABEL=
ID_FS_LABEL_ENC=
1. 最簡單的方式是直接執行blkid, 會列出目前連接到系統上所有磁碟的partition UUID, 檔案系統以及label, 例如:
$ blkid
/dev/loop0: TYPE="squashfs"
/dev/sda1: UUID="4C54A5A254A58EF0" LABEL="VAIO" TYPE="ntfs"
/dev/sda5: UUID="4CFCC181FCC165B4" TYPE="ntfs"
/dev/sda6: UUID="a5050769-1c80-4e7c-8b7c-da810624d910" TYPE="ext3"
/dev/sda7: UUID="8c28803c-3390-46d7-bb90-fd9a83c0bff3" TYPE="swap"
/dev/sda8: UUID="95206ddf-7ffd-4ddb-8ced-631b5df70b26" TYPE="ext3"
2. 另外也可以執行sudo vol_id
$ sudo vol_id /dev/sda1
ID_FS_USAGE=filesystem
ID_FS_TYPE=ntfs
ID_FS_VERSION=3.1
ID_FS_UUID=4CFCC181FCC165B4
ID_FS_UUID_ENC=4CFCC181FCC165B4
ID_FS_LABEL=
ID_FS_LABEL_ENC=
星期日, 8月 09, 2009
struct成員的記憶體位址alignmentt
一般來說, compiler編譯c程式時, 遇到struct時會對成員資料的位址進行alignment的動作, 以增加記憶體讀取的效率. 所以struct往往會佔有比所有資料成員大小和還要多的記憶體空間. 例如下列的struct data的記憶體大小為12.
如果因為特殊需要, 需要節省記憶體, 則可以在程式碼中需要進行pack memory的struct前後, 採用#pragma pack來告訴compiler是否要進行pack memory的動作, 例如下列的struct packed_data的記憶體大小則為9, 不是12.
struct data {
char num;
int size;
void *ptr;
};
如果因為特殊需要, 需要節省記憶體, 則可以在程式碼中需要進行pack memory的struct前後, 採用#pragma pack來告訴compiler是否要進行pack memory的動作, 例如下列的struct packed_data的記憶體大小則為9, 不是12.
#pragma pack(1)
struct packed_data {
char num;
int size;
void *ptr;
};
#pragma pack()
訂閱:
文章 (Atom)