資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。
  • ソース を表示
  • マルチタスク復習 は削除されています。
4: 2007-01-26 (金) 23:09:59 ソース バックアップ No.4 を復元して編集 5: 2007-01-27 (土) 13:05:00 ソース バックアップ No.5 を復元して編集
Line 185: Line 185:
-「とにかくこの方法でsht_backの値をtask_b_mainに渡せる」と理解しておこう。(これ以上は無理) -「とにかくこの方法でsht_backの値をtask_b_mainに渡せる」と理解しておこう。(これ以上は無理)
 +--ただ、一つ解ったことがある。
 +--通常、別のタスク(task_bとか)には、それ用のtssと同時にそれ用のスタックが必要。(そらそーだ。分けないとごっちゃごちゃになっちゃう)
 +--別のタスクになにも変数を渡す必要がない場合。(たとえば void task_b_main() なんて場合)
 +-- task_b_esp = memman_alloc_4k(memman,64*1024)+64*1024;
 +--こんなことして、task_b用のスタックを確保している。おそらく、大半のタスクでもこれは必要な行為だろう。(スタックを一切使用しない動作だけのタスクとかそういう特殊なのは別ね)
 +--それに対して、今回はようするに、task_bに対して値を渡したいというだけ。
 +--で、task_bは引数を持つ関数になっている。(void task_b_main(struct SHEET *sht_back);  )
 +--普通に関数を呼ぶだけならなんの問題もない。そのまま呼べばよい。
 +--しかし、今回の相手は「別に動くタスク」だ。なので、呼び出しで引数を渡せない
 +--しかし、今回どうしても理解できなかった部分の登場となる。いまだにわからない。
 +--・・・しかし、このわからない部分は、
 +-- task_b_esp = memman_alloc_4k(memman,64*1024)+64*1024 -8;
 +--である。普通に用意するスタックから 8 を引いているだけだ。
 +--これがヒントになるかもしれない。いずれ解るかも。
 +
 +
 +
 +
Line 191: Line 209:
-タスクスイッチ専用の特殊なタイマーを1個確保したと考えればよい。 -タスクスイッチ専用の特殊なタイマーを1個確保したと考えればよい。
 +
 +
 +
 +
 +
 +
 +
 +
 +COLOR(Blue){''疑問点解決?:''タスクはかならずしもメモリを別セグメントにして動かすとは限らない(上記参照)。また、状況によってはtssを共有することすら可能。(タスクA,B,Cとあった場合、絶対tssが3個必要というわけではない。屁理屈チックだが、タスクAとタスクCが絶対同時に動かないような調整をすればtssは2個でも十分マルチタスクは可能)よってこの場合は、タスクではなく''tssはどう頑張っても8,190個以上は作れない''ということでOKのようだ。(・・・なんかあったりまえな答えになってしまったな・・・(^^;))}


トップ   編集 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 0, today: 0, yesterday: 0