3/23老師放假
TCB 第一個欄位擺的是sp(stack pointer),指向目前task堆疊用到的位置。
之後上到組語部分,就會進行更進一步的介紹。
要用syscall->contask switch,不要直接修改。
1個contask最多等一個時間中斷。
prio算出值很無聊,改變頻率也不高,所以就先算好。
以上就是恐龍本中的tcb。
暫存器why only one??
sp Regs PC psw
有出現 這些都在stack中
從TCB中把p30那四行拿掉,在每次的scadal都抓一次就好。
Q: 只能在critical section中,表示有改變外面的全域變數。可不可以用secmafer取代??
2009-03-25
2009-03-18
3/18 OS上課筆記
了解這個章節恨重要
ready queue CPU使用率
當被兩個行程(process)鎖定時,XX要xxxxx。
最主要還是要看規格對reader和writer的解讀。
criitical section 用enable / disable interrupt 來保護。
在xxxx,全部執行在kernel mode。
AP1(void* pdata){
semlock();
counter ++;
semunlock();
}
AP2(){
sem
print(counter);
sem
}
關於sem的程式大概2.30行,用這些去保護一行有點浪費.....
在嵌入式當中
AP1(){
PI();
print(counter);
EI();
}
AP2(){
DI;
print(counter);
EI;
}
這兩三個cycle就做完了,用兩行保護一行比較划算。
因為這樣(disable interrupt),所以小型嵌入式系統長期下timer會少算,一段時間後就需要調校。
有一種不可以用!!!!!不然系統會一睡不醒!!!!
****有包含timer的東西不可以包在disinterrupt內,因為不知道時間過了沒.....
-> 晚上嫌鬧鐘滴答聲吵拆電池,結果早上就起不了床....
在x86中,剛好可以執行。
生:剛好???
五哥:剛剛好會講到XDDD
因為在86的idel task中,有一行程式碼會把中斷打開。
fu1(){
PI();
fn2();
EI(); 這邊之後的保護被fu2打開了!!!!
}
fu2(){
DI;
print();
EI;
}
有兩種可以把interrupt的狀態存起來
第一種:stack
第二種:任何都可以
第三種:在這種情況下和第二種一樣 p12
因為xxx,有的時候會因為指定task id所以無法運作,這是ucosII中的小瑕疵。
Idel task會織毛線(counter+1)
TCB (Task Control Blocks)
只要TCB存在,就會出現在link-list中。
double link-list就是刪除很方便XDDD
p22
Cur / Rdy
這兩個變數重複了,因為普通狀況下都一樣,只有在發生contask switch的時候會不一樣。
A換到B時,Cur指A,Rdy指B。
第五個變數表示陣列,之前講過。
裡面都存指標,用來指到TCB。
contask switch時,就是在算新task的優先權。
查表 -> 比較優先權 -> 抓task -> 完成cntask switch
查TCB在上學期恐龍本中,要存什麼東西?
那些東西在p23中,是不是都一樣?恐龍本中的少了哪些?
ready queue CPU使用率
當被兩個行程(process)鎖定時,XX要xxxxx。
最主要還是要看規格對reader和writer的解讀。
criitical section 用enable / disable interrupt 來保護。
在xxxx,全部執行在kernel mode。
AP1(void* pdata){
semlock();
counter ++;
semunlock();
}
AP2(){
sem
print(counter);
sem
}
關於sem的程式大概2.30行,用這些去保護一行有點浪費.....
在嵌入式當中
AP1(){
PI();
print(counter);
EI();
}
AP2(){
DI;
print(counter);
EI;
}
這兩三個cycle就做完了,用兩行保護一行比較划算。
因為這樣(disable interrupt),所以小型嵌入式系統長期下timer會少算,一段時間後就需要調校。
有一種不可以用!!!!!不然系統會一睡不醒!!!!
****有包含timer的東西不可以包在disinterrupt內,因為不知道時間過了沒.....
-> 晚上嫌鬧鐘滴答聲吵拆電池,結果早上就起不了床....
在x86中,剛好可以執行。
生:剛好???
五哥:剛剛好會講到XDDD
因為在86的idel task中,有一行程式碼會把中斷打開。
fu1(){
PI();
fn2();
EI(); 這邊之後的保護被fu2打開了!!!!
}
fu2(){
DI;
print();
EI;
}
有兩種可以把interrupt的狀態存起來
第一種:stack
第二種:任何都可以
第三種:在這種情況下和第二種一樣 p12
因為xxx,有的時候會因為指定task id所以無法運作,這是ucosII中的小瑕疵。
Idel task會織毛線(counter+1)
TCB (Task Control Blocks)
只要TCB存在,就會出現在link-list中。
double link-list就是刪除很方便XDDD
p22
Cur / Rdy
這兩個變數重複了,因為普通狀況下都一樣,只有在發生contask switch的時候會不一樣。
A換到B時,Cur指A,Rdy指B。
第五個變數表示陣列,之前講過。
裡面都存指標,用來指到TCB。
contask switch時,就是在算新task的優先權。
查表 -> 比較優先權 -> 抓task -> 完成cntask switch
查TCB在上學期恐龍本中,要存什麼東西?
那些東西在p23中,是不是都一樣?恐龍本中的少了哪些?
2009-03-16
3/16 OS上課筆記
今天的小考題目:semaphore oprtation 和 dis/enable interrupt 兩者都是衛了保護資料的程式。那投影片37頁的程式可不可以帶換成後者?
在xx狀況之下,zz會掉封包。
在xx狀況下,任何interrupt都進不去,所以I/O會有問題。
五哥:今天題目出的不錯,不過有點難,啊,不過分數也不要緊。
critical section藉由鎖定程式,來保護資料。
五哥:早知道就上個禮拜六(白色情人節)來補課。
生:why??
五哥:因為我見不得人好!!!!(崩潰~~ 強烈的去死光芒啊~~)
TASK1:這兩個fun只能在PC平台上使用。
p52: task5回'嗯',task4聽到後就繼續講。
p.55
Linux2.6中幾個行程就會出現幾個堆疊,都是全4k或全8k。
Linux2.4堆疊和2.6剎不多,就少了xx的stack。堆疊量的配置一定是8k,因為要預留4k給isr使用。所以比較浪費空間。
xxxxxxxxxx
μC/OSII最快,因為它最浪費記憶體。
在xx狀況之下,zz會掉封包。
在xx狀況下,任何interrupt都進不去,所以I/O會有問題。
五哥:今天題目出的不錯,不過有點難,啊,不過分數也不要緊。
critical section藉由鎖定程式,來保護資料。
五哥:早知道就上個禮拜六(白色情人節)來補課。
生:why??
五哥:因為我見不得人好!!!!(崩潰~~ 強烈的去死光芒啊~~)
TASK1:這兩個fun只能在PC平台上使用。
p52: task5回'嗯',task4聽到後就繼續講。
p.55
Linux2.6中幾個行程就會出現幾個堆疊,都是全4k或全8k。
Linux2.4堆疊和2.6剎不多,就少了xx的stack。堆疊量的配置一定是8k,因為要預留4k給isr使用。所以比較浪費空間。
xxxxxxxxxx
μC/OSII最快,因為它最浪費記憶體。
訂閱:
文章 (Atom)