2014年11月15日 星期六

作業系統(恐龍書) 1~6章 重點整理

Mutex:
是一把鑰匙,一個人拿了就可進入一個房間,出來的時候把鑰匙交給隊列的第一個。一般的用法是用於串行化對critical section代碼的訪問,保證這段代碼不會被並行的運行。(A mutex is really a semaphore with value 1.)

Semaphore:
是一件可以容納N人的房間,如果人不滿就可以進去,如果人滿了,就要等待有人出來。對於N=1的情況,稱為binary semaphore。一般的用法是,用於限制對於某一資源的同時訪問。

race condition:
多個processes同一時間點存取shared resource,未協調好而導致data inconsientency
ex:將專屬的設備當成共用設備使用,而造成設備出現異常


critical-section三要素:

1.mutual exclusion(互斥): 
只允許1個process在critical-section裡執行當process在critical-section存取resource時,其他process無法進入critical-section存取相同資源 

2.progress(進行): 
選擇下一個process進入critical-section的時間不可被無限delay
1.其他process(在remainder section)不能干預其他process進入critical section的決策過程
2.當多個process要進入時,決定那一個process可先進入critical-section的時間是有限的,(防止deadlock)

另一種講法(照恐龍書上面的翻譯):
如果沒有process在c.s裡面,且有process希望進入c.s,則只有那些不在remainder section的process可以參與哪個process可以獲得進入c.s的決定,而且這個決定不能無限推遲。

3.bounded waiting(有限等待):
一個process提出進c.s的請求後,只需等待c.s被使用有上限的次數後,該process就可以進c.s
ex:若有n個processes想進入Critical Section,則每個process最多只要等待n-1的時間後就可進入
------------------------------------------------------

busy waiting(忙碌等待):
當process在critical-section時,其他想進入critical-section的process會在entry section一直執行loop來等待,也被稱為spinlock,意指cpu會不斷測試該條件是否成立,會浪費 cpu cycle time

deadlock 
系統中存在了一組process,在這些process之間形成了waiting cycle,使得所有在waiting cycle中的process皆須等待

Starvation
低優先權的process長期或無限期,無法獲得系統的資源.

2014年11月6日 星期四

程式設計筆記

void print() const;
const 意思是不能更改他的私有變數

當如果變數 x 設定成const 變數時
我們只能這樣打
Test::Test (int value) : x(value)
{
}

設定中斷點 -> 及時運算
可以打 ? A 他就會告訴你裡面的值是多少


/*宣告一個 int 變數等於10 , 讓指標p指向x的記憶體位置,再把20放進去 */
int x =10;
int *p = &x;
*p=20;

cout <<"x: " << x << endl;

Java 一些應用 [ csv reader / array of class / for( : ) ]

分享一些工作上用到的寫法 ( java )  csv reader  array of class for (:)  因為工作上需要讀取csv檔案的需求 , java 本身有提供一些 method  首先要 import opencsv-3.8.jar ...