:::

[圖資]作業系統 922期中考 -1

布丁布丁吃布丁

[圖資]作業系統 922期中考 -1

九十二學年度第二學期
作業系統 期中考 之一


一、解釋名詞

1. 布雷第異常現象(Belady’s anomaly)

一般來說,在同一種分頁替換演算法當中,將記憶體容量增加以增加分頁可用欄位的時候,應該會減少分頁錯誤的次數;可是有時因為可用欄位的增加而降低了CPU的使用率,OS因而加入了更多分頁,導致可用欄位相對不足,分頁錯誤便沒有減少。這種違反一般趨勢的現象,即稱為布雷第異常現象。

2. 純程式碼(pure code)

純程式碼又稱為共同程式碼,他是一種不會被改變、可以重複使用的程式碼。一般是用於程式庫(libraries)等常被參照(reference)的用途。

3. 工作集(working set)

工作集合(working set)是指在一定的時間中,某個行程(process)所參照(reference)到的分頁數量(pages),其時間同等於參照分頁的次數(a fixed number of page references)。假如在約5個參照分頁次數的時間中,該行程參照到了1 2 2 1 3這幾個分頁。那麼其工作集合為3個分頁,各別為1 2 3。

工作集合是用來預測該行程接下來要使用的需求欄位數量(demand frames),作業系統(OS)依照各個行程的工作集合來分配他們的欄位數量,以避免輾轉現象發生。

4. 何謂分頁錯誤(page fault)?

記憶體分配中,使用分頁式將行程拆成數個行程,然後一個個分頁接著執行,需要存取到還沒有載入記憶體的分頁而發生錯誤,而這種狀況即稱為分頁錯誤。


二、

1. 請略述處理分頁錯誤發生與處理的過程(最好畫圖表示,若以文字描述請將步驟標示清楚)

  1. 檢查TBL裡面需要的分頁的有效‧無效位元是否為1 (0代表尚未載入記憶體、1代表已經載入記憶體)→為0,發生分頁錯誤
  2. 發生分頁錯誤之後,暫停該行程的執行,進入監督模式,交由作業系統操作
  3. 作業系統到硬碟(second storage)去尋找程式(program,尚未在記憶體中執行的程式)所需的該段分頁
  4. 取出該分頁至實體記憶體的可用欄位。如果實體記憶體已經沒有可用欄位,則須先執行分頁替換的動作
  5. 所需分頁寫入實體記憶體之後,再修改分業表當中的有效‧無效位元,將它改成1(有效)
  6. 重新啟動行程,讓他再執行一次分頁要求,因為分頁已經載入,就不會發生分頁錯誤了

2. 試討論在需求分頁記憶體管理方法中,分頁大小的優劣。

分頁(page)越小的情況下,將可以越精確地填滿記憶體空間,而不會有浪費的空間。對於需求分頁的記憶體管理方法來說,分頁越小越好。但由於分頁縮小相對於程式碼也不多,執行時將會時常參照(reference)到其他分頁,因此分頁錯誤(page fault)的次數也會相對增加。分頁錯誤所需耗掉的輸入輸出(Input / Output,I/O)時間往往是最耗時的動作,比較起來,內部斷裂(internal fragmentation)相對的較省時。因此虛擬記憶體仍傾向使用大的分頁。


三、請說明在分頁法中為何要使用翻譯側看暫存區(translation look-aside buffer, TLB)這樣的硬體機制?

  • TLB(翻譯成「旁邊找尋轉移暫存區」會比較好)是為了解決兩個記憶體使用程式而發展出來的特殊高速搜尋的硬體快取裝置,又稱為組合記憶體(associative memory)。
  • TLB分成兩個欄位:分頁編號(page number)與頁框編號(frame number),個別紀錄程式的邏輯位置(logical address)與實體記憶體位置(physical address)。
  • 當程序需要參照某個分頁時,會先到TLB去找尋該分頁的頁框位置,如果找不到,才到分頁表(page table)裡去尋找。如下圖:

四、

1. 略述記憶體管理中分頁法(paging)和分段法(Segmentation)的差異?

分頁法是將程式分割成固定大小的分頁,但是各分頁並沒有邏輯性,如果要執行程式中一個常被用到的部份,他可能會被分割在數個不同的分頁當中。

而分段法則是以邏輯性的完整性為出發點,程式依照邏輯性來分割,因此各個部份大小會不相同。

分頁法因為分頁大小相同而可以解決外部斷裂的問題,分段法因為大小不同而不行。

 

2. 並請就內部斷裂(Internal fragmentation)與外部斷裂(external fragmentation)的產生情形進行說明與討論。

  • 外部斷裂(external fragmentation)是指記憶體總和剩餘空間雖然足以載入整個行程,但因為剩餘空間被其他行程切割而不連續,所以無法載入行程,浪費記憶體空間。浪費的記憶體多寡,與記憶體選擇配置的演算法相關,也和記憶體空間總量以及行程的平均大小有關。
  • 有時行程雖然小於記憶體某段連續的剩餘空間(坑洞),但在配置給該行程時,仍將整段空間都要走,以減少記憶體「小碎塊」的情況發生。這種行程額外要求了自己不需要的空間,稱之為內部斷裂(internal fragmentation)。
  • 外部斷裂是指記憶體空間不連續,而無法配置給行程;內部斷裂是指被額外配置給行程,但實際並未被使用的記憶體空間。兩者相同的地方在於,都有不會被使用,而形同浪費的記憶體空間。

五、試問下列兩個程式在需求分頁(分頁大小64個word)的記憶體管理策略下,有何不同或影響?

P1:


int A[64][64];

for (i=0;i<64;i++ ){

for(j=0;j<64;j++){

A[i][j]=0;

}

}

P2:

int A[64][64];

for (j=0;j<64;i++ ){

for(i=0;i<64;j++){

A[i][j]=0;

}

}

比較這兩者程式使用的資料順序:

P1:
A[0][0]

A[0][1]

A[0][2]

A[0][63]

A[1][0]
A[1][1]

A[63][62]

A[63][63]

P:
A[0][0]
A[1][0]

A[2][0]

A[63][0]

A[0][1]

A[1][1]

A[62][63]

A[63][63]

由此可知,P1使用到j(欄)的頻率高,而P2使用到i(列)的頻率高。在記憶體管理策略當中,如果是column-major(欄為主),則P1的情況下發生分頁錯誤的情況會比較少,因為分頁都在附近;反之,如果是row-major(列為主)的情況下,較適合P2


六、以下列分頁參考串列為例︰

1,3,2,4,2,1,4,6,2,1,4,3,7,6,3,2,1,2,3,6

試問對下列分頁替換法而言,將分別產生多少次分頁錯誤?假設分配頁框處為三個頁框

1. 先進先出(FIFO):共15次分頁錯誤

 

1

3

2

4

2

1

4

6

2

1

4

3

7

6

3

2

1

2

3

6

分頁表

1

1

1

4

4

4

4

4

2

2

2

2

7

7

7

7

1

1

1

1

 

3

3

3

3

1

1

1

1

1

4

4

4

6

6

6

6

6

3

3

 

 

2

2

2

2

2

6

6

6

6

3

3

3

3

2

2

2

2

6

載入時間

0

1

2

0

1

2

3

4

0

1

2

3

0

1

2

3

0

1

2

3

 

0

1

2

3

0

1

2

3

4

0

1

2

0

1

2

3

4

0

1

 

 

0

1

2

3

4

0

1

2

3

0

1

2

3

0

1

2

3

0

步驟

  1. 先檢查分頁表當中,是否有與待載入的分頁相同編號的分頁
    →如果有,停止檢查
    →如果沒有,繼續檢查
  2. 檢查載入時間最長的分頁,將之替換為待載入分頁,載入時間設為0。
  3. 其他未檢查的分頁,載入時間各自加1

分頁錯誤,載入的分頁 (上一階段當中,載入時間最長的一個分頁)

  • 分頁表:替換成被載入的分頁
  • 載入時間:歸零

檢查到已經有載入的分頁

  • 分頁表:不變
  • 載入時間:不變

2. 最近最少使用(LRU):共15次分頁錯誤

 

1

3

2

4

2

1

4

6

2

1

4

3

7

6

3

2

1

2

3

6

分頁表

1

1

1

4

4

4

4

4

4

1

1

1

7

7

7

2

2

2

2

2

 

3

3

3

3

1

1

1

2

2

2

3

3

3

3

3

3

3

3

3

 

 

2

2

2

2

2

6

6

6

4

4

4

6

6

6

1

1

1

6

未被使
用時間

0

1

2

0

1

2

0

1

2

0

1

2

0

1

2

0

1

0

1

2

 

0

1

2

3

0

1

2

0

1

2

0

1

2

0

1

2

3

0

1

 

 

0

1

0

1

2

0

1

2

0

1

2

0

1

2

0

1

2

0

步驟

  • 先檢查分頁表當中,是否有與待載入的分頁相同編號的分頁
    →如果有,將之未被使用時間設為0,停止檢查
    →如果沒有,繼續檢查
  • 檢查未被使用時間最長的分頁,將之替換為待載入分頁,未被使用時間設為0。
  • 其他未檢查的分頁,未被使用時間各自加1

分頁錯誤,載入的分頁 (上一階段當中,未被使用時間最長的一個分頁)

  • 分頁表:替換成被載入的分頁
  • 未被使用時間:歸零

檢查到已經有載入的分頁

  • 分頁表:不變
  • 未被使用時間:不變

3. 第二次機會(Second=Chance Algorithm):共14次分頁錯誤

 

1

3

2

4

2

1

4

6

2

1

4

3

7

6

3

2

1

2

3

6

分頁表

1

1

1

4

4

4

4

4

4

1

1

1

7

7

7

2

2

2

2

2

 

3

3

3

3

1

1

6

6

6

4

4

4

6

6

6

1

1

1

6

 

 

2

2

2

2

2

2

2

2

2

3

3

3

3

3

3

3

3

3

載入時間

0

1

2

0

1

2

3

0

1

0

1

2

0

1

2

0

1

2

3

0

 

0

1

2

3

0

1

0

1

2

0

1

2

0

1

2

0

1

2

0

 

 

0

1

2

3

4

0

1

0

1

0

1

2

3

0

1

2

3

0

參考位元

0

0

0

0

0

0

1

0

0

0

0

0

0

0

0

0

0

1

1

0

 

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

 

 

0

0

1

1

1

0

1

0

0

0

0

0

1

0

0

0

1

0

步驟

  • 先檢查分頁表當中,是否有與待載入的分頁相同編號的分頁
    →如果有,則將該分頁的參考位元設為1,停止檢查
    →如果沒有,繼續檢查
  • 檢查載入時間最長的分頁
  • 如果載入時間相同,則用FIFO依照載入先後排序
  • 檢查的分頁的參考位元如果是1,將之設為0,載入時間設為0,繼續檢查下一個
  • 檢查的分頁的參考位元如果是0,將之分頁替換成待載入的分頁,參考位元設為0,載入時間設為0,停止檢查
  • 其他尚未被檢查到的分頁,其載入時間增加1

分頁錯誤,載入的分頁

  • 分頁表:替換成被載入的分頁
  • 載入時間:歸零
  • 參考位元:設為0

檢查到已經有載入的分頁

  • 分頁表:不變
  • 載入時間:不變
  • 參考位元:設為1

受檢查,給予第二次機會的分頁

  • 分頁表:不變
  • 載入時間:歸零
  • 參考位元:歸零
(more...)

[圖資]作業系統 922期中考 -2

布丁布丁吃布丁

[圖資]作業系統 922期中考 -2

九十二學年度第二學期
作業系統 期中考 之二


一、解釋名詞

1. Working set (工作集合)

工作集合(working set)是指在一定的時間中,某個行程(process)所參照(reference)到的分頁數量(pages),其時間同等於參照分頁的次數(a fixed number of page references)。假如在約5個參照分頁次數的時間中,該行程參照到了1 2 2 1 3這幾個分頁。那麼其工作集合為3個分頁,各別為1 2 3。

工作集合是用來預測該行程接下來要使用的需求欄位數量(demand frames),作業系統(OS)依照各個行程的工作集合來分配他們的欄位數量,以避免輾轉現象發生。

2. Thrashing (輾轉現象)

輾轉現象(thrashing)是指行程(process)分頁替換的頻率相當高,於是系統的時間相耗費在輸入輸出(I/O)的動作,CPU的使用率(utilization)低落,作業系統會認為需要增加多工的程度(the degree of multiprogramming),而又將行程加入系統中,每個行程所分配到的實體記憶體又更少,因而惡性循環。當各行程的總需求欄位空間(total demand frames)超過實體記憶體的欄位空間時,便會發生輾轉現象。

3. Dynamic linking (動態連結)

  1. 直到需要執行的時候,才會進行連結動作。當程式要用到系統程式庫(libraries)時,在需要參照(reference)的地方做記號(stub)
  2. 記號stub是用來找尋需要使用的程式庫(libraries),stup將會被取代為該程式庫的記憶體位置,並且執行該程式。作業系統需要確認該程式庫是否在實體記憶體當中。
  3. 有用到的程式資料庫在記憶體裡只會存在一份,而不必每次參照的時候都得複製,因此不會重複。鏈結(linking)的工作只需進行一次
  4. 動態連結特別適合程式庫(libraries)

二、試解釋內部斷裂(Internal fragmentation)與外部斷裂(external fragmentation)的差異。

  1. 斷裂(fragmentation)發生在行程(process)載入記憶體(memory)時,空間分配時發生的問題。
  2. 外部斷裂(external fragmentation)是指記憶體總和剩餘空間雖然足以載入整個行程,但因為剩餘空間被其他行程切割而不連續,所以無法載入行程,浪費記憶體空間。浪費的記憶體多寡,與記憶體選擇配置的演算法相關,也和記憶體空間總量以及行程的平均大小有關。
  3. 有時行程雖然小於記憶體某段連續的剩餘空間(坑洞),但在配置給該行程時,仍將整段空間都要走,以減少記憶體「小碎塊」的情況發生。這種行程額外要求了自己不需要的空間,稱之為內部斷裂(internal fragmentation)。
  4. 外部斷裂是指記憶體空間不連續,而無法配置給行程;內部斷裂是指被額外配置給行程,但實際並未被使用的記憶體空間。兩者相同的地方在於,都有不會被使用,而形同浪費的記憶體空間。

三、請略述處理分頁錯誤的步驟(最好畫圖表示,若以文字描述請將步驟標示清楚)

六個步驟

  1. 檢查TBL裡面需要的分頁的有效‧無效位元是否為1 (0代表尚未載入記憶體、1代表已經載入記憶體)→為0,發生分頁錯誤
  2. 發生分頁錯誤之後,暫停該行程的執行,進入監督模式,交由作業系統操作
  3. 作業系統到硬碟(second storage)去尋找程式(program,尚未在記憶體中執行的程式)所需的該段分頁
  4. 取出該分頁至實體記憶體的可用欄位。如果實體記憶體已經沒有可用欄位,則須先執行分頁替換的動作
  5. 所需分頁寫入實體記憶體之後,再修改分業表當中的有效‧無效位元,將它改成1(有效)
  6. 重新啟動行程,讓他再執行一次分頁要求,因為分頁已經載入,就不會發生分頁錯誤了

四、 以下列分頁參考串列為例︰

1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6

試問對下列分頁替換法而言,將分別產生多少次分頁錯誤?假設分配頁框數為4個頁框

1. LRU:共10次分頁錯誤

 

1

2

3

4

2

1

5

6

2

1

2

3

7

6

3

2

1

2

3

6

分頁表

1

1

1

1

1

1

1

1

1

1

1

1

1

6

6

6

6

6

6

6

 

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

 

 

3

3

3

3

5

5

5

5

5

3

3

3

3

3

3

3

3

3

 

 

 

4

4

4

4

6

6

6

6

6

7

7

7

7

1

1

1

1

未被使用時間

0

1

2

3

4

0

1

2

3

0

1

2

3

0

1

2

3

4

5

0

 

0

1

2

0

1

2

3

0

1

0

1

2

3

4

0

1

0

1

2

 

 

0

1

2

3

0

1

2

3

4

0

1

2

0

1

2

3

0

1

 

 

 

0

1

2

3

0

1

2

3

4

0

1

2

3

0

1

2

3

步驟

  1. 先檢查分頁表當中,是否有與待載入的分頁相同編號的分頁
    →如果有,將之未被使用時間設為0,停止檢查
    →如果沒有,繼續檢查
  2. 檢查未被使用時間最長的分頁,將之替換為待載入分頁,未被使用時間設為0
  3. 其他未檢查的分頁,未被使用時間各自加1

分頁錯誤,載入的分頁 (上一階段當中,未被使用時間最長的一個分頁)

  • 分頁表:替換成被載入的分頁
  • 未被使用時間:歸零

檢查到已經有載入的分頁

  • 分頁表:不變
  • 未被使用時間:不變

2. FIFO:共14次分頁錯誤

 

1

2

3

4

2

1

5

6

2

1

2

3

7

6

3

2

1

2

3

6

分頁表

1

1

1

1

1

1

5

5

5

5

5

3

3

3

3

3

1

1

1

1

 

2

2

2

2

2

2

6

6

6

6

6

7

7

7

7

7

7

3

3

 

 

3

3

3

3

3

3

2

2

2

2

2

6

6

6

6

6

6

6

 

 

 

4

4

4

4

4

4

1

1

1

1

1

1

2

2

2

2

2

載入時間

0

1

2

3

4

5

0

1

2

3

4

0

1

2

3

4

0

1

2

3

 

0

1

2

3

4

5

0

1

2

3

4

0

1

2

3

4

5

0

1

 

 

0

1

2

3

4

5

0

1

2

3

4

0

1

2

3

4

5

6

 

 

 

0

1

2

3

3

4

0

1

2

3

4

5

0

1

2

3

4

步驟

  1. 先檢查分頁表當中,是否有與待載入的分頁相同編號的分頁
    →如果有,停止檢查
    →如果沒有,繼續檢查
  2. 檢查載入時間最長的分頁,將之替換為待載入分頁,載入時間設為0
  3. 其他未檢查的分頁,載入時間各自加1

分頁錯誤,載入的分頁 (上一階段當中,載入時間最長的一個分頁)

  • 分頁表:替換成被載入的分頁
  • 載入時間:歸零

檢查到已經有載入的分頁

  • 分頁表:不變
  • 載入時間:不變

Second=Chance Algorithm:共10次分頁錯誤

 

1

2

3

4

2

1

5

6

2

1

2

3

7

6

3

2

1

2

3

6

分頁表

1

1

1

1

1

1

1

1

1

1

1

1

1

6

6

6

6

6

6

6

 

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

2

 

 

3

3

3

3

5

5

5

5

5

3

3

3

3

3

3

3

3

3

 

 

 

4

4

4

4

6

6

6

6

6

7

7

7

7

1

1

1

1

載入時間

0

1

2

3

4

5

0

1

2

3

4

0

1

0

1

2

3

4

5

6

 

0

1

2

3

4

0

1

2

3

4

0

1

2

3

4

0

1

2

3

 

 

0

1

2

3

0

1

2

3

4

0

1

2

3

4

0

1

2

3

 

 

 

0

1

2

3

0

1

2

3

4

0

1

2

3

0

1

2

3

參考位元

0

0

0

0

0

1

0

0

0

1

1

0

0

0

0

0

0

0

0

1

 

0

0

0

1

1

0

0

1

1

1

0

0

0

0

1

0

1

1

1

 

 

0

0

0

0

0

0

0

0

0

0

0

0

1

1

0

0

1

1

 

 

 

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

步驟

  1. 先檢查分頁表當中,是否有與待載入的分頁相同編號的分頁
    →如果有,則將該分頁的參考位元設為1,停止檢查
    →如果沒有,繼續檢查
  2. 檢查載入時間最長的分頁
  3. 如果載入時間相同,則用FIFO依照載入先後排序
  4. 檢查的分頁的參考位元如果是1,將之設為0,載入時間設為0,繼續檢查下一個
  5. 檢查的分頁的參考位元如果是0,將之分頁替換成待載入的分頁,參考位元設為0,載入時間設為0,停止檢查
  6. 其他尚未被檢查到的分頁,其載入時間增加1

分頁錯誤,載入的分頁

  • 分頁表:替換成被載入的分頁
  • 載入時間:歸零
  • 參考位元:設為0

檢查到已經有載入的分頁

  • 分頁表:不變
  • 載入時間:不變
  • 參考位元:設為1

受檢查,給予第二次機會的分頁

  • 分頁表:不變
  • 載入時間:歸零
  • 參考位元:歸零

五、略述記憶體管理中需求分頁(Demand Paging)的做法

  • 需求分頁的基本道理是:「直到需要執行的時候,才將分頁載入記憶體」。
  • 在分頁的作法中,程式(program,當程式在執行狀態的時候,稱為行程或程序(process))會被分割成大小相等的分頁,這時程式是被擺置在次儲存裝置(second storage),如硬碟當中。當程序(process)執行時遇到須要使用的部份分頁,才去載入分頁。
  • 需求分頁使用了分頁表來記錄該分頁是否已經載入記憶體。分頁表基本上有三個欄位:分頁編號、分頁實體記憶體位置、分頁已載入的有效-無效位元(valid-invalid bit),其中有效-無效位元是用來紀錄分頁是否已經載入記憶體。如果未載入為0,表示該分頁上在磁碟當中;已經載入為1,表示已經存在於記憶體當中。
  • 程序的需求分頁動作會先檢查分頁表的有效-無效位元,如果為1,則正常執行;如果為0,則發生分頁錯誤。分頁錯誤時的處理,可以參考第三題。

六、下列程式設計技巧和結構中,哪些對需求分頁的環境有利,哪些則相對的顯得不利?並請簡單敘述你的理由。

  • 堆疊(stack)
  • 循序搜尋法(sequence search)
  • 純程式碼(pure code)
  • 向量運算(vector operations)
  • 間接定址(indirection)

首先,需求分頁的特色在於將程序執行時所需要的記憶體空間降至最低,因為只載入需要的分頁。但是當記憶體空間不足時,則需要執行花費時間的分頁替換動作(page replacement)。減少分頁替換的情況發生,也就是程序執行時,重覆使用同一個分頁;其次是按照順序地執行分頁,這些都是有利於需求分頁環境的結構。相對的,不按照順序、跳來跳去的程式結構,將會時常需要載入位置差異大的分頁,而不利於需求分頁的環境。

  • 堆疊(stack):堆疊是一種先進後出的資料結構。例如有A B C D這四個資料依順序進入堆疊,則接下來出來的則是D C B A。從執行順序來看,會變成A B C D D C B A。其中存取A的兩個時間差距遠,表示時常要載入位置差異大的分頁,因此不利於需求分頁的環境。
  • 循序搜尋法 (sequence search):這是一種用於搜尋的演算法。例如要在A B C D當中檢查D的位置,則程式會從A B C D一個一個依序地檢查。其使用的分頁是有順序性的,因此利於需求分頁環境。
  • 純程式碼 (pure code):程式碼不可被其他程式修改,而用來重複執行的程式碼稱之,又稱為共同程式碼。因為該段程式碼(等於分頁)重複使用,因此有利於需求分頁環境。
  • 向量運算 (vector operations):向量是指具有方向的量單位,如往北走20公里,此為向量的表示。在電腦運算中,單向、平面或立體圖形的向量通常用一維、二維或三維矩陣表示,而向量的運算便是矩陣之間的運算。程式中常使用陣列的方式來表示矩陣,而程式語言對陣列的Column-major(欄優先)還是Row-major(列優先)分配分頁的方式,與程式中先執行列還是執行欄的差別,便會影響到分頁錯誤的發生頻率。當分配分頁方式與執行順序相同時,會利於需求分頁的環境;反之,則是不利於需求分頁。
(more...)

[日記]隨筆幾篇故事

布丁布丁吃布丁

[日記]隨筆幾篇故事

昨晚在社版寫的


首先,是篇關於合作與錯誤的故事:

在很久以前,偏荒鄉下的某個地方,有兩個人一同平靜地住在一間大屋子裡面。這附近除了他們之外,並沒有任何人居住,他們過著與世隔絕的生活,連本來的名字都忘記了,他們稱呼對方,都是叫對方的特徵:「瘸子」、「瞎子」。是的,他們一位失去的腿,另一位失去了雙眼,都不是一個完整的人。但是,他們懂得透過合作來維持生活,瘸子有雙眼,能告訴瞎子方向;瞎子則能夠背著瘸子,走到任何地方。

再來談談他們的相識過程。那時候,只有一個人住在大屋子裡面的瘸子,因為行動不便而跌倒在地、無法翻身,正當他苦惱該怎麼辦的時候,突然有個人出現在他面前,並問他::「我問你,你是我的雙眼嗎?」然後他便背起了瘸子,那個人,正是瞎子。

瘸子一開始覺得這樣子不太好,即使他沒有雙腿,他也希望能用自己的力量行動。而瞎子卻認為「我可以成為你的雙腿」,不顧瘸子意願地背著他。相處了一段時間之後,瘸子漸漸能夠接受瞎子。相對的,燒得一手好菜的瘸子也能滿足瞎子超大食量的需求。兩人便成為缺一不可的好伙伴。

然而,平穩的日子總是會結束。有天,當瘸子跟瞎子都還在睡覺的時候,屋子忽然發生火災了。瘸子睜開雙眼,發現窗外已經是一片火紅,情況十分危急。他趕緊叫醒身旁的瞎子,告訴瞎子現在的狀況。

「那真是太糟糕了!我們現在該怎麼辦?」瞎子慌張地說。

瘸子說:「冷靜!我們唯有互助合作,才能逃出這裡。」

「嗯!」瞎子同意地點頭。

「所以你背著我,我告訴你方向,來吧!」

 然後瘸子背起了瞎子,瞎子告訴瘸子方向,瘸子背著瞎子緩慢地爬行,結果撞到了牆壁而昏迷,然後他們兩個人就埋沒在火海,再也沒有出來過了。



-- 這結局是我一開始就決定好的


既然很優閒,那我再來說另一篇故事好了。這次是高科技網路,情報隱私這方面的故事。

時間發生在未來。

主角是一位妹妹,先聲明,她不叫做水坂憐。她坐在一張椅子上,頭上帶著一個類似頭盔的東西。據她的說法,她因為期中考快要到了,所以她正在用功。但是那個頭盔裡面放映的東西,似乎跟她要考試的內容沒有相關。她到底在看些什麼呢?她本人也不願意回答。

一段時間過去,她將頭盔脫下,可以看得到她一臉疲憊的樣子。然後,她將右手伸向了旁邊的小桌子,摸來摸去,卻一直沒拿到她要的東西。她馬上知道發生了什麼事了。

她深深地吸了一口氣,大喊:

「姊,蜜餞!」 


-- decryption key


好吧,那來個傳統的鬼故事好了。

這個晚上,某個正在準備期中考的學生走在街頭。他拿著一個熱呼呼的盒子,裡面裝著叉燒包,那是他的宵夜、讀書魔力補充的來源。

他回到宿舍,打算來大快朵頤一番,好繼續用功的時候。

怎麼少了一個叉燒包......?

是的,原本十個一盒的叉燒包,居然只剩下九個了。

「喵的...這個情節好像在哪裡看過啊?」

他蓋上了盒蓋,再打開,果然

叉燒包又少了一個!

冒著熱氣的八個叉燒包,散發出一種詭異的氣氛。

他吞了口口水,死不信邪。蓋上盒蓋,再打開,

只剩下七個了!

一方面是因為好奇,一方面又覺得有趣。他這樣蓋了又開,開了又蓋,叉燒包一個一個的減少。

到最後,盒子裡面的叉燒包終於都不見了。

他想想應該也玩夠了,於是講手上的盒蓋一翻,

十個叉燒包好好地黏在那上面。

叉燒包:「吃了我也可以喔。」



-- 「天然紀念物叉燒包」

(more...)

[圖資]目錄學 922期中考考題

布丁布丁吃布丁

[圖資]目錄學 922期中考考題

九十二學年度第二學期
圖書資訊學系 目錄學 期中考題


問答題:

一、「群書四部錄」、「古今書錄」、「舊唐書經籍志」之關係,及「別錄」「七略」「漢書藝文志」三者之關係。試闡述其涵義。

在唐玄宗時詔令元行沖等編輯當時的書目,因而有《群書四部錄》。後經歷安史之亂,毋煚認為其成書倉卒,體例、事例皆有其不當之處,不滿意《群書經籍志》,而將《群書四部錄》再進一步增刪整理為《古今書錄》,而後來的《舊唐書經籍志》本於《古今書錄》,而刪其小序及書下小注。

這樣承先啟後的關係,和《別錄》、《七略》、《漢書藝文志》之間的編撰、承繼關係相像。《別錄》是由劉向所創,將當時整理之書目撮其指要,明辨其得失,考鏡各家之學術源流,並將每書之指要、作者介紹、書之考訂得失附錄於每書之後,是為敘錄。另外又將各漢書之敘錄提出,集結為一冊,是為《別錄》。而其子劉歆根據根據別錄做了一些增刪,將其整理的書目分為七個大略,而每一大略下又有小類,各為《七略》,實則為六略。分別為諸子略、方技略、數術略、六藝略、兵書略、詩賦略,另一為輯略,輯略所收之為各略之小序總錄,是真正的分類項目。《七略》是《別錄》之簡要後的結果。到了東漢,班固奉命編撰《漢書藝文志》,則是在《七略》之基礎上,又行精簡之結果。《漢書藝文志》是第一部歸類在史書之下的官編目錄,因其特性,在史書之下,所以勢必要將先前之七略簡化,再行收錄,目的只是為了要顯現學術流變之大勢。

  1. 西漢 劉向《別錄》:
    1. 撮其指要、明辨得失、考鏡源流
    2. 敘錄:每書指要、作者介紹、考訂得失,附錄於書後
    3. 提要:敘錄提出,結集成冊
  2. 西漢 劉歆《七略》:
    1. 分七大略、下有小類,各為《七略》,實則六略
    2. 諸子、方技、數術、六藝、兵書、詩賦,輯略
    3. 輯略:收各略之小序總錄,為真正的分類項目
  3. 東漢 班固《漢書藝文志》:
    1. 第一部史書官編目錄
    2. 顯現學術流變之大勢
上數段落語意並不通順,徵求通順的解釋

二、試述我國「史志」的特色。史志中又有「以書類人」之體制,試舉例說明之。

我國史志始源於東漢班固所著之漢書此類的《藝文志》,其體例為當時首創。以《漢書藝文志》的體例來說,前有總序,說明為漢代之書籍,以及書目,其編撰先後順序,沒有一定格式,因其書目而定。而在其每小類之下又有小序說明為什麼此類的書會歸納為第一類,此類之學術流派為何等,註明在此類有多少篇。另外又在每大略之下另立大序,說整個學術流變之大勢,最後再將各略、各類做總計,註明其下。《漢書藝文志》開創了史志之先河,在於顯現學術流變之大勢,而一般以收錄整理分類的目錄不太一樣。

  1. 史志之源:東漢 班固《漢書藝文志》,是我國現存最早的圖書目錄
  2. 體例:
    1. 前有總序:說明書籍書目、編撰順序,格式不一
    2. 小類下立小序:辨其學術流派,註其篇數
    3. 大略下立大序:敘述學術流變之大勢,篇數統計
  3. 開創注釋體書目之先河

《隋志》創立「以書類人」之著錄方法(疑似講義錯誤,原為「以人類書」)。我國傳統書目之著錄方法均採「以人類書」。《隋書經籍志》經、史、子三部及集部之「楚辭」、「總集」二類採「以人類書」方式著錄。「別集類」則採「以書類人」方式著錄。

  • 「以人類書」者:
    1. 先著錄書名、篇卷,次著錄作者;
    2. 如:《靈憲一卷》,張衡撰
    3. 《漢書藝文志》用此法
  • 「以書類人」者:
    1. 先著錄作者,次著錄書名、篇卷。
    2. 如《梁武帝詩賦集》二十卷
    3. 此法最早見於《隋書經籍志》之「別集類」,《新唐書藝文志》四部之書皆用此法

三、試從下列文獻中闡述「七志」之特色與體制:

  1. 阮孝緒七錄序云:「以向歆雖云七略,實有六條,故別立圖譜一志,以全七限,其外又條七略及二漢藝文志、中經簿所闕之書,並方外之經,佛經道經,各為一錄,雖繼七志之後,而不在其數」。

阮孝緒在他所著的《七錄》序言提到了,劉向劉歆父子的《別錄》、《七略》來說,雖然說是《七略》,但是實際上只有分述六類,其中輯略並非分類。所以《七志》另建圖譜一志,將分類以七類完整。所謂的圖書,圖和書是共存的,因為圖書也是書的一類,但先前都沒有被分為一類,所以《七志》又考訂研究了《七略》,和二漢《藝文志》、《中經新簿》闕漏的書補上,並且把《佛經》和《道經》另立為一錄,顯見《七志》也注意到當時的佛、道教盛行,而將其相關典籍也更新立錄。

  1. 隨書經籍志總序:「其道佛附見,和九條,然亦不述作者之意,但於書名之下,每立一傳,而又做九篇條例,編乎首卷之中,文義淺薄,未為典則」。

在《隋書經籍志》的總序中提到,《七志》加上《道經》和《佛經》,和起來有九類,但是已經不詳述作者的介紹、著書之背景、學術流家,而是又另外在書名之下,立一個小傳,只介紹作者生平概要,另外做九篇條例,放在首卷,說明其類,但是其說明意涵都較為淺薄,和先前之《七略》、《別錄》相較,顯得精略了許多。

四、試述《四庫全書總目》之編撰體例。並回答下列子題:

1. 四庫提要與劉向別錄之關係

《四庫提要》有採納劉向《別錄》之作法,將其收錄之書目作提要,而另列於一書以供查檢

2. 總序、小序與提要三者之特色

  1. 總序是總和該部書的大類流變,及學術大勢,著錄考鏡之源流,
  2. 小序
    1. 其每小類之後的說明
    2. 說明此類書籍之學術流派,及歸為一類之依據,辨其得失,
  3. 提要
    1. 附在每書之後
    2. 把該書之內容,主要特點,另外整理出來
    3. 使後人可因其提要查檢書目,而不因書名而誤,節省查閱時間。

3. 著錄與存目之意義

  1. 著錄所指的是該書是否在舊有紀錄中是否有被收錄而存目。即指該書是否仍存在,抑或散佚
  2. 可註明於書目之下,以說明該書之存廢。

4. 檢索四庫全書及其提要有何工具系統?

檢索《四庫全書》及其提要,可用四庫全書及其提要之索引本來進行檢索,針對書名作者索引。現今已有四庫全書之電子全文資料庫,只要輸入欲查找之條件名稱,即可找出資料。


答案參考資料

  1. 中國目錄學 / 胡楚生著
  2. 92學年度,簡學姐

上述答案仍有許多不完整的地方,請幫忙補完

(more...)

[圖資]目錄學 932期中考考題

布丁布丁吃布丁

[圖資]目錄學 932期中考考題

九十三學年度第二學期
圖書資訊學系 目錄學 期中考題


問答題:

一、試述《中經》、《新簿》、《晉元帝書目》、《隋書經籍志》四種書目類例的傳承關係,並闡述四部法形成之源流。

自兩漢以降,迄於魏晉,典籍漸多。魏秘書郎鄭默,始制《中經》,晉秘書監,更著《新簿》,皆以四部別之。甲部以紀六藝(經),乙部以紀諸子(子),丙部以紀史事(史),丁部以紀詩賦(集)。不過那時候還沒有類別的稱呼,而皆用甲乙丙丁紀其順序而已。及晉著作郎李充,撰為《晉元帝書目》。然其與荀勗新簿異者,一則李充易新簿乙丙圖書之次,而以乙部紀史、丙部紀子,是其時雖無經史子集之名,而甲乙丙丁以既經史子集圖書之次第則定矣;二則以李充之「沒略眾篇之名」推之,則荀書中,四部之下,尚有小類,亦有類目之名,可以知之。阮孝緒之七錄其內篇所分,隋志承之,而「經、史、子、集」這四個類別的名字終於訂定,所以四部分類法是從隋志開始才正式確立的。

  1. 魏 鄭默《中經》傳到 晉 荀《新簿》:
    1. 《中經》開四部法編排之端倪
    2. 皆以甲乙丙丁四部別之,經子史集之名尚未確立
  2. 晉 李充《晉元帝書目》:
    1. 易其乙丙,經史子集次第定矣
    2. 四庫之法,鄭默、荀開其端,李充定其次序
  3. 《隋書經籍志》:承繼七錄,而經史子集之類名出焉,方始正式確立也

二、試述《群書四部錄》、《古今書錄》、《舊唐書經籍志》之關係,並說明《新唐書藝文志》的特色。

唐玄宗開元三年,詔弘文館學士元行沖撰成《群書四部錄》奏上。每書多有解題,每類亦有小序,然經安史之亂,圖書散亡殆盡,目錄亦已不傳。

然《群書四部錄》成書過於倉促,體例事理,均有未安。毋煚乃即以《群書四部錄》為本,針對缺失,加以增刪,而成《古今書錄》四十卷。較之《群書四部錄》,份量雖僅及五分之一,然著錄圖書種數,則與之相當。蓋刪卻各書之序跋,而撮其要旨,以為簡明之體解也。《古今書錄》大約亡於北宋末年,然而所撰修之《舊唐書經籍志》,即本於《古今書錄》而來,故於《舊唐志》中,猶可窺見毋煚《古今書錄》之面貌也。

《舊唐書經籍志》二卷,劉撰,是《舊唐書經籍志》本於《古今書錄》,而刪其小序及書下小注,故遂簡略古今書錄四十卷為二卷也。

方之漢代,則《群書四部錄》、《古今書錄》、《舊唐書經籍志》之關係,即《別錄》、《七略》、《漢書藝文志》三者之關係也。

  1. 唐 元行沖《群書四部錄》:每書多有題解、每類亦有小序。散於安史之亂。
  2. 毋煚《古今書錄》:承群書四部錄。刪卻各書序跋、撮其要旨、以為簡明題解也。亡於北宋末年。
  3. 劉熙《舊唐書經籍志》:本於古今書錄。刪其小序及輸下小注。
  4. 其關係即漢 劉向《別錄》、其子劉歆《七略》、班固《漢書藝文志》三者之關係也。

《新唐書藝文志》四卷,歐陽修撰,此志乃係根據《舊唐書經籍志》,另加著錄唐代學者自撰之書,故是書所著錄者,可謂鉅矣。《新唐志》之分類如下:甲部經錄、乙部史錄、丙部子錄、丁部集類。《新唐志》每類後無小序、每部後無大序,與《舊唐志》同。《新唐志》經部分為十一類,較《舊唐志》少一詁訓類,如爾雅等書,均列於小學類之首。《新唐志》易《舊唐志》之事纇為類書,於經脈上冠「明堂」二字。《新唐志》於每一類目之中,分「著錄」與「不著錄」兩項,「著錄」指《古今書錄》原有之書,「不著錄」指《新唐志》所增之唐人著作,此一分別,頗為清晰,亦甚可取。

  1. 唐 歐陽修《新唐書藝文志》
  2. 根據《舊唐書經籍志》,加著唐代學者自撰之書
  3. 以經史子集四部別之
  4. 與《舊唐志》之異同
    1. 無小序、無大序,同《舊唐志》
    2. 經部分為十一類,較《舊唐志》少一詁訓類
      →爾雅等書,列於小學類之首
    3. 易《舊唐志》事類類書,冠明堂經脈之上
  5. 「著錄」與「不著錄」:
    1. 著錄指《古今書錄》原有之書
    2. 不著錄指所增之唐人著作

三、試述我國「史志」、「官簿」、「私錄」的特色,請舉各一例說明之。

  • 「史志」:
    1. 反應著述成果、學術源流之大體
    2. 不必詳述各書內容,著者生平亦可參見列傳
    3. 例:《漢書藝文志》開正史藝文志之先河
  • 「官簿」:
    1. 目錄之書,有奉帝王詔令而修撰
    2. 例:《四庫提要總目》
      1. 經史子集四部
      2. 每一書下有詳明之提要(解題),每類之前有小序,每部之前有總序
        (書→提要、類→小序、部→總序)
      3. 在現存目錄書中,實為體制最完整而份量最龐大之代表也。
  • 「私錄」:
    1. 為閱讀與治學所需,學者均好私人藏書
    2. 宋齊之後私錄興起,七分法體系已起變革
    3. 例:《七志》
      1. 不限當時收藏、重視當代著錄
      2. 開創書目提要新體例:
        1. 各書傳有敘錄、偏重著者生平介紹
        2. 變敘之名,從傳之實」:改變敘錄體之名稱,而確實地作為傳記之用
      3. 均有條例(小序),相當於《七略》的「輯略」
      4. 實為九分法:
        1. 上承《七略》六分遺規
        2. 增「圖譜志」而成七分法
        3. 又附道佛二部,實為九分

四、解釋以下《七錄》序文之意義:

王以「六藝」之稱,不足以標榜經目,改為「經典」,今則從之,故序經典錄,為內篇之一。
劉王並以眾史合於春秋,劉氏之世,史書甚寡,附見春秋,誠得其例,今眾家記傳,倍於經典,猶從此志,實為繁蕪,且七略詩賦,不從六藝詩部,蓋尤其書既多,所以別為一略,今依擬斯例,分出眾史,序記傳錄,為內篇第二。

王儉認為「六藝略」沒有辦法將圖書經目加以標示清楚,所以將「六藝略」改為「經典」,而此以後為編制之法,故編為小序經典錄,為內篇之一。

劉氏父子王檢將眾多史書合編於「春秋」。在劉氏父子之世代,史書所存不多,所以將其附錄於「春秋」,尚可得知其書目。而今世史書為多家所記傳,數量多於經典,卻仍這樣做,實在是多餘的作法。而且七略的詩賦並不列於六藝詩部之下,是因為其書數量之多,所以分開來列為一略。現在依照這個例子,分出家史,序紀傳錄,作為為內篇中的第二篇。


答案參考資料

  1. 中國目錄史 / 胡楚生著
  2. 91屆張學姐

上述答案仍有許多不完整的地方,請幫忙補完

(more...)

[圖資]942網概期中考重點

布丁布丁吃布丁

[圖資]942網概期中考重點

CHAPTER 6

DATA INTEGRITY 資料完整性

6.2 簡易偵錯技術 Parity Checks(同位元偵錯)

  1. even parity 偶同位元
  2. odd parity 奇同位元

分析同位元的偵錯能力

  • burst error 集叢錯誤:多個位元錯誤
  • 偵測出burst error的機率為50%,不足以使用在網路環境
  • Parity Checking是偵錯技術的基礎

總和檢查法

  1. 將資料以32-bits切成部分
  2. 當成10位數
  3. 求其餘數

6.3 CRC偵錯

Cyclic redundancy check(CRC) 循環冗餘檢查法

CRC在送方的處理方法

  1. 在原字串加入除式最高次方個0
    B(X)
  2. B(X) 被除式 / G(X) 除式 → R(X) 餘式
  3. T(X) = B(X) - R(X)
  4. 送出T(X)

CRC在收方的處理方法

  1. 收方收到的是T'(X),有可能不是原本的T(X)
  2. T'(X) / G(X)
    • 整除→正確
    • 不整除→錯誤

多項式的除法:XoR (exclusive OR, 互斥閘)

   11010
/) 11001
---------
   00011
  • 兩數相同→0
  • 兩數相異→1
  • XoR特色:
    T(X) / G(X) = A(X)
    A(X) / G(X) = T(X)

CRC偵錯能力的分析

  • 只要G(X)有兩項以上,即為X+1,便能偵測到所有的錯誤
  • 錯誤發生機率:1 / 2 ^ (r-1),r為G(X)的最高次方
    → G(X)越長,越不容易無法偵錯

6.4 Hamming Codes (漢明碼) 錯誤偵測

位元位置 1 2 3 4 5 6 7 8 9 10 11 12
要傳送的資料 m1 m2 m3 m4 m5 m6 m7 m8        
Hamming code p1 p2 m1 p3 m2 m3 m4 p4 m5 m6 m7 m8
  ↑第一個位元 第12個位元↑
p1偶同位元(6個) 1   3   5   7   9   11  
p2偶同位元(6個)   2 3     6 7     10 11  
p3偶同位元(5個)       4 5 6 7         12
p4偶同位元(5個)               8 9 10 11 12

幫助p記憶的方法:

  • 開頭的位置,都是自己的號碼
  • p1: 1到11的奇數
    p2: 兩兩相合,中間皆間隔兩個位置
    p3: 連續四個,外加12
    p4: 連續四個,外加12,p3 跟p4是一對的

漢明碼中多位元錯誤的更正

  • d:漢明最小距離
  • 錯誤的位元數目小於d/2,即可被偵錯
    → d越大,越容易偵錯
  • 重置影響最小漢明距離,也就是同位元的插入位置

CHAPTER 7

DATA SECURITY 資料隱密性

7.2 加密演算法 Encryption Algorithms

  • encryption: 加密,即重新編碼資料,只有能夠解密的人才能得知資料的內容
  • decryption: 解密
  • plaintext: 原文,未加密的文字
  • ciphertext: 加密文,加密過的文字
  • encryption key: 加密鍵,代碼為k,加密與解密所使用的關鍵資料

各種資料加密的方法

Caesar Cipher 凱薩密碼

  • 用亂碼字母取代特定字元,使人無法直接解讀
  • 缺點:保留了字母的頻率與組合,多看幾次就可以找出其規律

Polyalphabetic Cipher 多字元加密

用多個因素來取代字元:

  1. 字母
  2. 所在位置

Transposition Cipher

  • 橫排直送
  • 破解
    1. 欄位
    2. 送出順序

Bit-Level Ciphering

加密與解密:步驟相同,原理請看XoR的特性
  1. 設定encryption key:即為一串位元
  2. 將資料依照key的長度切割成數個部份字串(substrings)
  3. 每個部份字串都與key做XoR
  4. 組合得到的結果,再進行傳送

→ encryption key長度越長,則越不容易重複,越不容易被破解

資料加密的標準

DES, Data Encryption Standard 資料加密標準

  • 1970年IBM開發,1977年NIST國家安全局採用,1981年ANSI採用
  • 方法: (詳細過程不重要,大概看一下就好)
    1. block cipher: 區塊分割
    2. 64-bit為單位分割
    3. 56-bit key來做bit-level ciphering
  • DES Cracker,可破解DES
  • 實際上IBM開發時是使用128-bit key
  • Triple DES:DES做三次

7.3 加密鍵的傳送與保護

Shamir's Method 夏米爾的方法

  • 將key拆成數個部份各別儲存
  • 要將key的所有部份找齊才能進行加密/解密,十分麻煩

Diffie-Hellman Key Exchange 蒂菲-地獄人(XD)加密鍵交換法

  • 作法
    1. A選擇一個Key,稱為x;B選擇一個Key,稱為y
    2. 雙方協議兩個整數:g與n,並將之公開
    3. A傳送gx給B,B傳送gy給A
    4. A: K = (gy)x mod n,B: K = (gx)y mod n,便可獲得一樣的結果
  • man-in-the-middle attack 居中攻擊法:
    1. 偽裝為A傳送給B,收到gy
    2. 反之,收到gx
    3. 即可得到結果

7.4 Public Key Encryption 公開加密鍵

原理:k != k'

RSA Algorithm

數論:因數分解,模數

加密過程

  1. 字母→數字(如ASCII)
  2. p, q為兩個很大的質數,n = p×q
  3. k公開加密鍵:無法整除(p - 1) × (q - 1)
    → ((p - 1) × (q - 1)) ÷ k ,餘數不等於0
  4. 將原文切割成段落
  5. 以段落為單位,將所有位元串合併,再轉成數值
  6. 將數值的k次方,再模數n,即得加密文

解密過程

  1. 找一個k' (私解密鍵)
    k × (k'-1) mod (p-1)(q-1) = 0
  2. 將加密文(轉為數值)的k'次方,再模數n,即得原文(數字)

加密時需要用到:k (公加密鍵)
解密時需要用到:k (公加密鍵)、k' (私解密鍵)

Digital Signatures 數位簽名

用來驗證網路身份的方法

    公開鍵   私有鍵  
送方 ( k , k' )
收方 ( j , j' )

雙重驗證:送方跟收方都要確認身分

  1. 送方將原文P加密為M
    M = Ej(Dk'(P))
  2. 送方傳送M給收方
  3. 收方解密M為P
    Ek(Dj'(M)) = P

Authentication and Message Digests 確定文件完整性

使用hash 雜湊法H()
y 雜湊值 = H(M) M為文件本身

  • 計算文件的雜湊值H(M)
  • 送出 M + Dk'(H(M))
    H:文件
    k':送方私有鍵
    H(M):雜湊值 y
  • 則收方 Ek(Dk'(H(M))) = H(M)
    如果收方解出來H(M) != H(M'),則知道有誤

單向雜湊函數

  1. 產生固定長度值
    H(M) = V
  2. H(M)要容易計算
  3. 從V不能反計算回M
    即H(M') != V
  4. H(M1) != H(M2)

MD5 現成的hash

  1. 128-bit
  2. 512-bit 分段
  3. 每一步驟經四道加密
  4. 前一段輸出的內容,可當後一段的輸入加密鍵

PGP, Pretty Good Privacy 電子郵件用的加密法

7.5 傳輸層隱密性以及網站的確認

如何確保網站正確安全?

  1. SSL:網址會從http改成https
  2. TLS
  3. X.509 軟體認證機構

7.6 Firewalls 防火牆

只要電腦連上網路,便可能遭受攻擊。防火牆便能防禦這種問題。

Packet Filtering 封包過濾

最簡單的方法:檢查封包頭

兩種限制

  1. 限制IP:管制機器(伺服器、網站)
  2. 限制PORT:管制服務(程式)

限制策略(注意其比較)

  1. Allow:允許
    default Allow, other Block→要注意新的攻擊
  2. Block:阻擋
    default Block, other Allow→要注意需求

IP address spoofing IP位置欺騙

改變IP封包頭的資訊

應用層門閘 Application-level Gateway

檢查所有封包的要求,具彈性,但工作量也大

  1. packet filtering: 只能限制不能使用FTP的port 21
  2. application-level gateway:限制FTP只能上傳,不能下載

狀態檢查 Stateful Inspection

根據封包之前的狀態,檢查現在的封包是否能夠通過。

  1. 如果之前沒有要求的封包,那麼就不該有回應的封包。
  2. 要求封包的來源位置,與回應封包的目的位置不同,那就是錯誤的。

7.7 Viruses 病毒

檔案感染 Infecting Files

  1. 修改執行檔的開頭與結尾
  2. 在執行程式的時候,會先執行到branch (分枝)
  3. 由branch指引到結尾的病毒碼
  4. 病毒碼結束後會再執行到另一個branch
  5. 由branch指引到真正的程式本身

記憶體常駐病毒 Memory-resident Viruses

常駐在記憶體當中,能感染每一個執行的程式。方法是修改中斷向量表:



┌─




└→

 
中斷向量表
 
服務常式
 
記憶體常駐病毒
分枝
 



←┐



─┘

發生中斷→查詢中斷向量表→病毒→服務常式

病毒與防毒程式的演化

偵測病毒的方法:比對特徵

  1. 病毒碼不長
  2. 會在執行檔的開頭與結尾

病毒隱藏特徵:加密 (附帶解密程式)

偵測解密病毒:檢查解密的演算法

  • x-raying 檢查:先嘗試各種演算法看能不能還原出病毒碼

突變病毒 Polymorphic virus:每次加密的方法都不一樣

模擬環境 generic decryption, GD

  • 用電腦模擬作業執行環境→欺騙病毒現形

病毒的來源與散佈

  • 一開始是個人創作
  • 現在靠網路散佈得更快
  • 病毒可以竊取資料,因此變得有商業利益

7.8 威脅與攻擊

  • 蠕蟲 Worm:透過作業系統漏洞進行攻擊
    UNIX中,因C語言的溢位漏洞,透過fingerd來取得管理者權限
  • 字典攻擊法:猜測帳號密碼,高達50%成功率
  • 電腦駭客 Computer Hackers
  • DoS, Denial of Service:拒絕服務攻擊→傳送大量要求以癱瘓系統服務
  • packet sniffer:攔截網路封包,取得封包內的隱密資料
  • spyware:自動且隱密地安裝在電腦上,並傳送使用者的資料到網路上

CHAPTER 8

FLOW CONTROL 流量管制

8.2 號誌 Signaling

  1. 收方與送方
  2. 收方傳送號誌,告訴送方可以傳送資料了
  3. 收方傳送號誌,告訴送方停止傳送資料
    (因有傳送時間,所以要在Buffer填滿出來的之前送出,此界限稱之為臨界值 threshold )

DTE-DCE 流量控制,硬體控制

用特別的兩條線路來傳送訊號

X-ON/X-OFF,軟體控制

將控制訊號夾雜在資料裡面

ASCII為此訊號作定義

  • DC3:X-OFF
  • DC1:X-ON

可使用X-ON/X-OFF做螢幕鎖定

(more...)

[日記]談Timemark Editor

布丁布丁吃布丁

[日記]談Timemark Editor

我做OPED的字幕,用來抓時間軸的方式,便是使用這種Timemark。

原本的程式是出自於Winamp上的一個外掛:Gucchi's Lyrics Plug-In Version1.12。裝上這個外掛,播放Winamp時便可以開啟一個Karaoke Viewer,將自己加上時間標籤之後的歌詞載入之後,便能從那個視窗當中看到有如卡拉ok般的字幕。這種字幕與影片分開的作法,還是沒辦法解決製作字幕的需求,不過他優秀的時間標籤編輯能力,被卡拉小站拿來當作是製作SSA的時間軸編輯工具,而我透過卡拉小站的教學,這個方法也就這樣傳承下來了。

我另一個將Timemark轉換成SSA檔案的程式,目前已經開發到第三版(版本完全沒意義啊XD)。如果將TM editor加入的話,一定可以成為更完善的字幕編輯程式。現在是缺少構思版面的靈感啊......

話說回來,這個程式得歸功於siroma,靈感就是從她那邊來的。這個程式從週五晚上開始撰寫,首先完成影片部分的控制(主要是開啟影片的功能),再來嘗試在textarea標籤裏面直接加入tm,不過這部份我失敗了,不管是IE專用的createTextRange()或是WYSIWYG的作法我都無法模倣。週六晚上與siroma討論之後,決定使用input的text標籤來模擬textarea的效果。雖然這種方法做為編輯器不盡完善,但是資料卻相當地好控制。另外也以innerHTML的方式靈活調整TM Editor的編輯行數欄位,而不至於像TTS那樣受到行數的限制。撰寫時也降低了「格式與內容分開」的原則,這次將各段功能拆開,而顯示的格式直接寫入功能當中,這樣將造成許多多餘的程式碼,但在維護上絕對是比較有利的,尤其是受限於「只寫一個HTML程式」的條件之下。

這個TM Editor只能在Internet Explorer裡面發揮功用。這是因為Firefox等Mozilla系的瀏覽器引擎對event.keyCode按鍵偵測的功能缺少支援,所以暫時無法提供Firefox使用。聽說W3C也在擬定keyCode更高等級的標準化,期待那天的到來。

題外話,Timemark實際上應該是Time Tag(タイムタグ),不過當初在用的時候不知道哪裡少根筋,就變成這種奇怪的專有名詞了。這個錯誤就在整個完整版完成之後再來修改吧XD。


就在不久以前的對話:

P: TM editor寫完了,我們是不是還決定做哪些功能啊?

S: 你是說字幕檔的預覽功能嗎?

P: 對對,不過要怎麼做呢?

S: javascript的setTimeout()或許是個不錯的方法喔。

P: ......我開始覺得我期中考完全不會想唸書了orz

(more...)