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