FC2ブログ

プログラムの実行

 Windowsマシンでプログラムを実行すると、内部的には以下の流れでプログラムが起動する。
 各プログラムは実行中、プロセスという単位で管理されている。

(1)プログラムファイルのアイコンか、ショートカットをダブルクリックする

(2)実行プロセスオブジェクト(実行イメージともいう)を生成する
 プログラムを実行する際には、プログラムファイルの全体をメモリ上にコピーして、それに対して排他的なりソースを割り当てる。
 プログラムファイルのコピーが実行される処理の実体になるので、プログラムの設計上制約がなければ、同じプログラムファイルから複数の実行イメージを生成することも可能。
 プログラムの起動は、プロセスという単位で管理されていて、それぞれが実行イメージというものを持つ。

(2)生成された実行イメージに対してプロセスID(PID)が割り振られる
 プロセスIDは、同じプログラムファイルを元にした実行イメージ間であっても別の値を持ち、OS側から識別される。

(3)プライマリスレッドの作成
 各プロセスは、最低一つ以上のスレッドという実行単位を持つ。
 プロセスを開始した際、一番最初に実行されるスレッドをプライマリスレッドと呼ぶ。
 このスレッドは、同一プロセス内ではリソースを共有する。このスレッドを次々と実行することが、プロセス全体を実行することとイコールである。


 また、各実行イメージに割り当てられたリソースの使用状況や、プロセスの処理の進行度合いなどの情報はまとめてコンテキストと呼ばれ、各実行イメージごとに管理されている。
 Windowsマシンにおけるマルチタスクは、このコンテキストを人間の目には捉えきれない程の早さで切り替えることで、見た目の上で同時にプロセスを実行しているように見せるものである。
スポンサーサイト



FC2ブックマーク | この記事をokyuuへインポート | このエントリーを含むはてなブックマーク | ニフティクリップへ追加 | この記事をクリップ! | イザ!ブックマーク | POOKMARK Airlinesに登録する | del.icio.us |
動作未検証 | | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証

算術右シフト

 なぜ、算術右シフト演算をするとき、上位ケタ(MSB:Most sSignificant Bit)に符号の値をコピーしているのか。


 算術右シフト演算の対象となるのは、最上位ビットを符号とする2の補数表現の値を扱う場合であるということ。


 つまりC言語で言うところの
 論理シフト演算:Unsigned int型
 算術シフト演算:Signed int型


 のビット列演算のことを言っているというわけで。


 で、シフト演算というのは、「右」がつくときは左から右に、「左」がつくときは右から左にビット列を追加するキューのようなもので、例外として、算術右シフト演算で、2の補数表現で負数をシフト演算するときだけ1をキューに挿入し、それ以外は0を挿入するイメージ、と言うこと。


 例)7桁のビットと先頭に符号がつく2の補数表現で表された数値41と-41を右に2ビットシフト演算すると


 41:(00101001)2
   00001010
   ^^^^      ^^^^
   ↑符号bit付加  ↑右シフトにより消える

(enqueue) (dequeue)

-41:(11010110)2
   11110101
   ^^^^      ^^^^
   ↑符号bit付加  ↑右シフトにより消える

(enqueue) (dequeue)
FC2ブックマーク | この記事をokyuuへインポート | このエントリーを含むはてなブックマーク | ニフティクリップへ追加 | この記事をクリップ! | イザ!ブックマーク | POOKMARK Airlinesに登録する | del.icio.us |
動作未検証 | | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証 | 動作未検証

tag : 情報処理

カレンダー
08 | 2005/09 | 10
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
最近の記事
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
いろいろリンクボタン
埋め込みe-Words