オペレーティングシステム2

情報工学科 3年生対象 専門科目
システムプログラミング
第1回
イントロダクション
担当:青木義満
[email protected]
3年生の心構え
• 自分の進路について考え,悩み,決断する重
要な1年
• 大学院進学 or 就職?
• 自分の専門分野を決める(→研究室選択)
単位の足りない人
→ 卒論着手条件を満たすよう,単位を取り切る!
単位の心配の無い人
→ 専門科目を学びつつ,自分の興味のある専門分野
(職種)について積極的に調べる
「就職」を知る,「研究」を知る
• 就職
– 後期,秋くらいから,就職課主催の説明会などが例年企画
– 芝浦OBの会社説明
– 就職課担当者,学科就職担当への相談
• 研究
– 後期から,「卒研プレゼミナール」で研究室を体験
– 12月頃,研究室配属決定
– 事前に興味のある研究室へは訪ねてみるのも手
特に大学院進学希望者は3年間を決める重要な選択
OSとは?
• コンピュータのハードウェアを直接操作し、人
間にとって使い易い形にして提供するととも
に、ハードウェア資源を効率的に利用出来る
ようにするプログラム体系
概要はOS1で学習済み
講義の前提
• OS1の講義内容の基本的な部分を理解して
いること
• C言語によるプログラミングに慣れていること
• 関連科目
– OS1,プログラミング入門1,2,
データ構造とアルゴリズム1,2+基礎情報演習
本講義の概要
• OS1で学んだOSの基本知識をベース
• OSのカーネルプログラムの一部の深い理解
やOSの原理などを体験的に学習
• Linux・Unixシステムを対象にした,シェル・C
言語を用いたシステムプログラミング
Windows OS
OSがカプセル化,ブラックボックス
Unix・Linux
Open Source,自由度高い
※情報工学科卒でUnix・Linuxに触れたことがないというのは・・・
本講義の目的・学習目標
• OSの提供するシステムコール群を有効に用
いるシステムプログラミング を通して・・・
・プログラミングの幅(自由度)を広げることができる
・よりOSに近いレベルのプログラム開発を通して
OSの機能に対する理解度を深めることができる
OS1: 講義を通してOSの基本原理・機能を学習
本講義: 講義+PC実習を通して知識+技能を修得
授業の進め方
• 講義とPC実習形式
– 6階PC実習室1
• 演習課題を適宜
評価方法
• 授業内の演習課題(20%)
• 期末試験(80%)
特別な理由が無い限り,追試などは行わない
参考書
1.Linuxプログラミング(例題で学ぶUnixプログラミン
グ環境の全て),Neil Matthew & Richard Stones
著,ソフトバンク出版,¥4410(税込)
2.C言語によるUNIXシステムプログラミング入門,河
野清尊 著,オーム社 ¥2940(税込)
授業計画
•
•
•
•
•
•
•
•
UNIX・LINUX概要
UNIX・LINUXコマンド
シェルプログラミング
システムプログラミング
ファイル操作
データ管理
プロセスとシグナル
プロセス間通信とパイプ
期末テスト
ソフトウェア
Unix-OSの構造
ユーザ層
ユーティリティ層
システム層
カーネル層
ハードウェア
システムコール
システム層以上のソフトと
カーネル層との情報伝達手段
カーネル層:OSの核をなす部分,
システム資源(メモリ,入出力,ファイル,プロセス)の管理
システム層:プロセス,ディレクトリ,コマンド,ファイル
ユーティリティ層:ソフトウェア開発用コマンド,エディター他
ユーザ層:アプリケーションプログラム,シェルスクリプト
シェルとシステムコール
• シェル
– ユーザーとUNIXシステムの間のインタフェースとして機
能するプログラム
– コマンド入力 → OSに実行させる
(カーネルで行われる処理の細かな部分をユーザーから
隠す役割)
• システムコール
– システム層以上のソフトウェアがカーネル層の機能を呼
び出す時
– カーネルが管理しているシステムの資源をアクセスする
時に利用
シェルとは?
• ユーザーとUNIXシステムの間のインタフェー
スとして機能するプログラム
• カーネルで行われる処理の細かな部分を
ユーザーから隠す役割
csh
その他の
プログラム
カーネル
bash
X Window
表2.1
プログラミング言語としてのシェル
• シェルプログラム作成の2つの方法
– コマンドを入力してシェルによって対話的に実行
– コマンドをファイルに保存し,プログラムとして呼び出す
• 対話的プログラムの例
– grep –l POSIX * | more
– POSIXというパターンに一致する内容を持つファイルの
名前を出力
– いつもコマンドを打つのは面倒
– コマンドを保存したファイルを作成し,必要に応じて実行
• “シェルスクリプト“
シェルプログラミングの利点
• 豊富なUNIXコマンド群を有効活用
• 例えば….
– ディレクトリ内にある画像ファイル全てに対して,
プログラムによりある処理を施したい
• ディレクトリ内にある画像ファイルのみを抽出,繰り返
し演算
– 複数あるデータベースファイルから,ある特定の
文字列を含むファイルのみを抽出してプログラム
により処理したい
• 文字列検索による該当ファイル抽出,繰り返し演算
– 複数のプログラムを組み合わせてバッチ処理し
たい
<システムコールの機能>
•
•
•
•
•
•
ファイル,デバイスとの入出力,制御
ファイルの属性,状態の獲得,変更
プロセスの生成と消滅
プロセス間通信,同期
プロセスへの割込み(シグナル)
メモリの状態の獲得と変更
システムコールの例
User program
Data File
直接アクセス
・・・・・・・・・・・
・・・・・・・・・・・
C言語ライブラリ関数
・・・・・・・・・・・
fscanf()
・・・・・・・・・・・
・・・・・・・・・・・
ユーザ空間
・・・・・・・・・・・
・・・・・・・・・・・
・・・・・・・・・・・
・・・・・・・・・・・
・・・・・・・・・・・
・・・・・・・・・・・
システムコール
read
(カーネル層
プログラム)
カーネル空間
<何ができる?>
プログラミングの応用範囲の拡大
• Unixの豊富なコマンド群をプログラムから利用
• Input/Outputを直接操作
• プロセスの発生,並列動作,プログラムから別プロ
グラムを起動等
• プロセス間でデータの受け渡しが可能
• シグナルによる割り込み処理
– ユーザインタフェースからの入力
– ハードウェア,ソフトウェアエラー
– 他のプロセスからの信号
OSの一部の機能に触れる→OSの動作を知る
科目履修について
• 3年の専門選択科目
• 内容に興味のある人,向上心がある人向け
– そうでない人は無理して取らないで