userstack領域

35 views
Skip to first unread message

go.wug...@gmail.com

unread,
Aug 27, 2018, 9:33:43 AM8/27/18
to KOZOS友の会
本の8thステップp306でthread_runの中に下記の記述がありますが、教えてください。

extern char userstack; /*リンカ・スクリプトで定義されるスタック領域*/
static char *thread_stack = &userstack;

thread_stack += stacksize;
thp->stack = thread_stack;

ここでの&userstackはp294のld.scrでのuserstack(rw) : o = 0xfff400を指していると理解しましたが、下記の疑問が出て来ました:
複数のスレッドがthread_runを通して生成される場合、
どのスレッドのスタックも全部userstack 0xfff400から必要分のサイズを切り出すことになるが、
そうするとスレッド間でスタック領域は被ることにならないのか?(異なるスレッドでも領域確保のスタートが全部0xfff400である為)
そんなことにはないと思いますが、理解が出来なくて困っています。

呉光日

unread,
Aug 28, 2018, 1:58:23 AM8/28/18
to さかいひろあき, kozos_t...@googlegroups.com
坂井様

早速ありがとうございます!
疑問が解消してスッキリしました。



2018/08/28 11:36、さかいひろあき <ko...@kozos.jp>のメール:

> 坂井です。
>
>> thread_stack += stacksize
>
> この部分があるので、指定されたスタックサイズだけ加算しながら切り出すことになります。thread_stackはstaticで定義されているので、値が残ります。
> なので、スタックサイズが十分なサイズで指定されていれば、かぶることはありません。
>> --
>> このメールは Google グループのグループ「KOZOS友の会」の登録者に送られています。
>> このグループから退会し、グループからのメールの配信を停止するには
>> kozos_tomonok...@googlegroups.com にメールを送信してください。
>> その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。
Reply all
Reply to author
Forward
0 new messages