ホーム » 2012 » 10月 » 15

日別アーカイブ: 2012年10月15日

2012年10月
« 9月   11月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

構造体を使ったプログラム演習

前回までの構造体の説明が終わったので、今日は演習。 基本的に構造体にデータを読み込んで、何らかの処理を加えて出力するプログラムを 作成するというのが課題。

ただし、構造体のポインタ渡しは、プログラム上よく利用される概念であり、 構造体への入力関数・出力関数などを別途使う課題であることが望ましい。 すでにこれらの概念に慣れている学生は、オブジェクト指向のスタイルなどを 紹介したので、オブジェクト指向を利用して課題に取り組んでもよい。

ライブラリとOSの基礎

前回の説明で未消化であった部分のライブラリの説明を行った後、 OSの機能について説明する。

ライブラリ

動く機械語プログラムが出来上がるまでの流れとして、 高級言語が、コンパイラによって中間コード(機械語+未完成の組込関数呼出し)が作られる。 中間コードは、組込み関数などのライブラリと、リンカー(リンケージエディタ)によって、 組合せられ、最終的な機械語が生成される。

ただし、マルチタスクなOSでは、主記憶上でプログラムが動くと、 だれもが使うようなprintf,scanf,sin,cos,…,GUIな処理といったライブラリ処理は、 メモリ上に複数存在するとメモリを効率よく利用できない。 古いOSでは、ライブラリの機械語は、静的リンクによりそのまま機械語の中に 埋め込まれていた。 しかし、最近のOSでは、動的リンク機能により、共通のライブラリを 利用するようになってきた。 動的リンクを使えば、ライブラリ内の処理に間違いが見つかった場合に、 動的リンクライブラリを修正するだけで良いため、OSの不具合修正でも便利となる。

OSの基本

OSは、一般的に基本プログラムなどと呼ばれ、ハードウェアの違うコンピュータでも、 共通となるOSを利用すれば、OS上で動くソフトウェアの共通化ができる。

OSは、制御システム(プロセス制御,メモリ制御,入出力制御,ファイルシステム制御)と呼ばれる、 処理の根幹(kernelなどと呼ばれる)の部分が、最も重要な機能である。 これに、開発環境(コンパイラ、リンケージエディタ、デバッガ)と、 ユーティリティプログラム(コマンドラインインタプリタ/CUI と、グラフィック操作/GUI ) から構成される。

OSを利用すれば、制御システムによりコンピュータ操作の基本的部分で、 プログラムの起動・メモリ管理・周辺装置の利用などの共通化が可能となる。 これらの周辺装置などの物理的なハードウェアや、メモリの使用、CPU処理時間などは、 一般的に資源と呼ばれる。 最近のOSでは、資源の使い方の共通化だけでなく、 資源を適切に扱うための保護機能も重要となってきている。

プログラムが動くとは

プログラムが動くときには、その処理単位としてプロセスがあり、 プロセスでは利用するメモリ領域が決められ他から触れないようになっている。 ユーザに対して一連のサービスを、複数のプロセスで提供している場合、 この処理単位はジョブと呼ばれる。 また、最近のOSでは、並列処理を行う際に、複数の並列処理プログラムが 1つのメモリを共有したほうが便利である。この複数のメモリを共有した処理の個々は、 スレッドと呼ばれる。

また、プログラムで複数の処理をする場合には、バッチ処理(一連の処理をどの順番で処理するか記載し、1プロセス終了後に次のプロセスを起動させる方式)と、 タイムシェアリングシステム(時分割多重処理とも呼ばれ、短い処理単位時間毎に、 複数の処理を切り替え、複数の処理が見かけ上同時に動いているようにみせる方式)がある。