You are not logged in. This forum allows only logged in users to post. If you want to post in the forum, please log in.
下載
軟體開發
帳戶
下載
軟體開發
登入
我忘記帳戶名和密碼了
新增帳戶
語言
手冊
語言
手冊
×
登入
登入名稱
密碼
×
我忘記帳戶名和密碼了
繁體中文翻譯狀態
類別:
軟體
人
PersonalForge
Magazine
Wiki
搜尋
OSDN
>
軟體搜索
>
TOPPERS/JSP for iPhone
>
討論區
>
開發者論壇
>
タスクのスタックの生成方法
TOPPERS/JSP for iPhone
描述
專案概要
開發人員儀表板
專案的網頁
Developers
Image Gallery
List of RSS Feeds
活動
使用統計
歷史
檔案下載
發布列表
Stats
原始碼
儲存庫列表
Subversion
查看儲存庫
待辦事項
待辦事項列表
里程碑列表
類型列表
元件列表
List of frequently used tickets/RSS
新增待辦事項
文檔
FrontPage
Title index
Recent changes
溝通
討論區
討論區列表
開發者論壇 (19)
幫助論壇 (1)
公開討論 (3)
通信論壇
通信論壇列表
新聞
討論區:
開發者論壇
(Thread #24448)
Return to Thread list
RSS
タスクのスタックの生成方法 (2009-11-02 22:37 by
(del#40607)
#46789)
Create ticket
今の手法は、Toppers Threadのスタックから全タスクのスタックをOS起動時に強制取得します。
本来ならスタックはcfg.exeで自動生成される、example¥sample1¥kernel_cfg.c にglobal変数で確保されるのですが、こちらはすべて無視されています。
さらにこれらは、_kernel_tinib_table に登録されていますので、コンパイラが自動削除することはなく、単なる無駄領域として残ってしまいます。
なぜ、Threadのスタックからタスクのスタックを取得するかは、setjmp/longjmp の仕組みを使っているからです。
本当は kernel_cfg.c で確保されるスタックを使いたいのはやまやまです。
一応、今の手法でも回避策があり、kernel_cfg.c で確保されるglobal領域を極力抑えることができます。
それは、スタックサイズを 1 にすることです。Toppers JSP for iPhoneでは、最低でもスタックサイズがMINSIGSTKSZ(=32kB) は各タスクとも確保します。タスクのスタックサイズをConfiguratorで 1 に設定しても、32kB は必ず確保されるので安心です。
RE: タスクのスタックの生成方法 (2009-11-03 09:29 by
(del#40607)
#46797)
Create ticket
ASP の maxosx 依存部を見てみると、こちらはまた違った手法を使用していました。
タスクのスタックはcfg.exeで自動生成されるglobal変数を使っていて、この点は大変理想的な実装です。
ただ、これをするために無理をしているところもあります。それはjmp_bufにPCとStackアドレスを直接埋め込んでいる点です。これをすると、完全にCPU依存になってしまいます。PPCとi386用の設定がASPにあるのはそのためです。
さて、これをiPhoneでするとどうなるでしょうか。それぞれCPU毎にjmp_bufの設定を書く必要があります。iPhoneはARMを使用していますのでARM用の設定方法を書きます。Simulatorはどうかくのでしょうか。おそらくi386用の設定でいいかもしれません。それでは、iPod Touchはどうでしょう。ARMにもいろいろ種類があるのでまた違うかもしれません。それでは今後発売されるiPhoneやiPod Touchはどうでしょう・・・。きりがありません。
したがって、強力にCPUに依存するASPの方法は採用するとこはやめます。
まとめると
・ASPの手法:jmp_bufに直接値を入れる: メモリの有効利用○ CPUの汎用性×
・JSPの手法:規格通りsetjmpでjmp_bufに代入: メモリの有効利用× CPUの汎用性○
で後者を選んで実装しています。
回覆:
#46789