2015年8月27日木曜日

12ステップで作る組込みOS自作入門 (step8~9)

先日で会った人が、ジブリの鈴木Pに似ていました.ナウシカはいつどんな形で製作するのでしょうか?と聞きたかったけど、顔が似ているだけの方が知るわけありませんね.粘菌をアニメ化するのは難しそうですが、なるべく原作通りに作って欲しいです.
リメイクというと、大友克洋のAKIRAもそろそろリメイクに適したシーズンかと思いますがいかがなものか? > 講談社殿

------
「12ステップで作る組込みOS自作入門」の後半を読んでいます.step7は割り込みベクタを作ったりしているのでサラッと流し読み.次のstep8とstep9はスレッドに関する部分で本書の重要箇所であり、ひら的に未体験ゾーンなので熟読中です.

昔、プロセスとスレッドってどう違うのか?について小耳に挟んだ知識によると、プロセスはお互いのプロセス同士が別のメモリ空間で動いているのでお互いのメモリを参照するコトが出来ない.それに対してスレッドは1つのメモリ空間で複数のスレッドを動かすので、お互いのメモリを参照しちゃおうと思えば出来てしまう、とのコトでした.うろ覚えですが.
確かに、本書の実装によると、他スレッドのメモリを荒らしちゃおうと思えば荒らせちゃうみたい.おぞ~

step8 スレッドが動く  (非プリエンプティブ)
この章でのスレッドは、main loopで明示的に制御をOSに返す必要があるという、昔どこかで見た方式です.(非プリエンプティブ)     非プリエンプティブなOSというと、Macintoshがまだ68040で動いていた頃のMacOSがそうでした.
win3.1とかwin95がどうだったのかは知りません.あの頃のwinでプログラミングした経験が全く無いので.その当時の私が使っていた環境は、ソニーのNEWSとか、Sunのworkstationでした.云うまでもなく、UNIX上で動かすプログラムなら制御をOSに返さないでもOKOK.

step9 プリエンプティブなスレッド
強制的にスレッドが切り替えられる仕組みなので、明示的に制御をOSに返さなくて良し.これじゃないと辛いです.

コードを読むと、次のような感じであって、想像を絶するカラクリでは無さそう.
 ・メモリ上に複数のアプリが置かれる
 ・複数のアプリを動かしたり中断したりするための情報がある
 ・アプリの順番待ちリストがあって、OSがスパスパと切り替える
ただ、スタックの動きが複雑で良く判らんです.こういう場合は実際に動かしてみて、探ってみるのが一番というわけで、動かしてみようそうしよう.


かしこ


人気ブログランキングへ

1 件のコメント:

  1. win3.1は、当時のMacOSと同じ(非プリエンプティブ)
    winNTとwin95からあとが、Unixと同じ(プリエンプティブ)です。
    なので、Win3.1(Win16 API)からWin95(Win32 API)に
    プログラムを書き換えるときに、えらく苦労(過去のテクニックが、
    全く使えなくなったり)をした記憶があります・・・

    返信削除