1 / 51

システムプログラム論 第1回

システムプログラム論 第1回. 大村 廉. 授業について. 担当:大村 廉 メール : ren@tut.jp 居室 : C-509 内線 : 6750 日程 火曜日1限(8:50~10:20) 内容 オペレーティングシステムについて,基本概念や実現方法を理解する. 特に,プロセス・仮想記憶・ファイルシステムの機構を理解し, CPU ・メモリ・ストレージといった計算資源の管理の仕組みを理解する. UNIX 系 OS を基本として,システム API であるシステムコールについて理解する.. 授業資料・参考資料. 授業スライド

brygid
Download Presentation

システムプログラム論 第1回

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. システムプログラム論第1回 大村 廉

  2. 授業について • 担当:大村 廉 • メール:ren@tut.jp • 居室:C-509 • 内線:6750 • 日程 • 火曜日1限(8:50~10:20) • 内容 • オペレーティングシステムについて,基本概念や実現方法を理解する. 特に,プロセス・仮想記憶・ファイルシステムの機構を理解し,CPU・メモリ・ストレージといった計算資源の管理の仕組みを理解する. UNIX系OSを基本として,システムAPIであるシステムコールについて理解する.

  3. 授業資料・参考資料 • 授業スライド • ユビキタスシステム研究室ホームページhttp://www.usl.cs.tut.ac.jp「講義」のページからダウンロード • 参考資料 • オペレーティングシステムの基礎(ライブラリ新情報工学の基礎 (5))サイエンス社大久保 英嗣 著 • その他 • 適宜紹介

  4. 「システムプログラム」とは? • 明確な定義はない • システムソフトウェアを直接使うプログラム: • オペレーティングシステム(OS) • ミドルウェア(ライブラリ) • この講義では… • OSの仕組み • OSの機能を利用する方法(プログラムから) • OSの使い方ではない

  5. OSを学ぶ意義 • (殆ど)全てのソフトウェアの実行基盤 • プログラミングの際にはOSの機能を利用 • 純粋な計算のみを行うプログラムはまずない • 効率のよいプログラムのためにはOSが重要 • 種々のサービスとの連携 • 通信 etc. • 作業環境(インフラ)の理解

  6. 講義の内容 • OSの歴史と概略 • プロセスの管理とスケジューリング • プロセスの同期と通信 • メモリ管理 • 仮想記憶 • ファイルシステム • 割込みと入出力の制御 • OSの機能を使ったプログラミング(課題)

  7. オペレーティングシステムとは • ハードウェア資源(リソース)の利用 • CPU,メモリ,ディスク等 • 効率的・簡単・便利に利用するためのプログラム • アプリケーションプログラム/ユーザから見ると • OSが実質的な(高級な)ハードウェアに見える • ハードウェアに依存しない統一されたサービスや機能 アプリケーション プログラム アプリケーション プログラム 抽象度大 OS(特別なプログラム) ハードウェア 物理的

  8. メモリ 何セクタ目に書く? 実行 OSがないと… • メモリの配置指定 • メモリの大きさが違ったら? • 他のプログラムが来たら? メモリ ? コンパイル • ディスクへの記録 • 何処に書く? • 使われてる?

  9. OSへの要求は様々 • ハードウェアを簡単に扱いたい • 堅牢なシステムを構築したい • できるだけ多くの仕事を効率よくこなしたい • 高速に計算したい、多様な仕事をこなしたい • 応答性をよくしたい • エディタ,ワープロ等のキー入力等 • 実時間処理をしたい • 機械の制御プログラム・ 動画・ ゲーム • ネットワークで繋がれた複数の計算機・環境を使いたい • Web、分散システム、クラスタ、グリッド

  10. Window System • グラフィカルユーザインタフェース(GUI)を提供・管理 • 最近のOSでは標準で付属(OSの一部?) • GUI登場当初は、単なるアプリケーション • UNIX, Linux では明確に分離される • Windowsでは実行・処理に密に連携 • 本講義には,Window System は含まない • 特定のOSに依存しない共通内容 • UNIX・Linux系OSの構造・利用 • Sourceを含めて入手可能

  11. アプリケーション プログラム アプリケーション プログラム CPU, メモリ, etc. CPU, メモリ, etc. CPU, メモリ, etc. OSが提供する機能の例(1) • マルチプロセスやマルチユーザ • 1つしかないCPUをあたかも複数のCPU(仮想的なCPU)があるかのように見せる • 複数のプログラムが同時実行しているように見える • 複数のユーザが1台の計算機を同時利用できる OS ハードウェア

  12. アプリケーション プログラムA アプリケーション プログラムB アプリケーション プログラムB アプリケーション プログラムA CPU, メモリ, etc. CPU, メモリ, etc. CPU, メモリ, etc. OS OS CPU (HW) CPU (HW) CPU (HW) CPU (HW) 実際の動作 OS ハードウェア

  13. アプリケーション プログラム アプリケーション プログラム 仮想メモリ(4GB) 仮想メモリ(4GB) メモリ (512MB) OSが提供する機能の例(2) • 仮想記憶 • 全てのプログラムに同じ大きさのメモリがあるように見せる • 多くの場合は、実際のメモリ量より大きく見える • 物理メモリに収まらない分はディスク(2次記憶)に退避 • 論理アドレス空間とメモリ保護 • 各プログラムに独立したメモリを使わせる • 安全・安定したプログラム実行 OS ハードウェア

  14. アプリケーション プログラム アプリケーション プログラム ファイル ファイル ファイル ディレクトリ HDD: セクタ0, セクタ1, … OSが提供する機能の例(3) • ファイルシステム • ディスクを抽象度の高いファイルやディレクトリ(フォルダ)単位で効率よく便利に管理 • CD/DVD … 何曲目・チャプター OS ハードウェア

  15. 抽象化 (Abstraction) • 人間がより理解しやすいものにすること • 高級という (high-level) • プログラミングにおける抽象化の簡単な例: • 関数呼び出し • 機械レベル(低級)のjumpを隠す • 変数確保など広く使われる機能を用意 • 抽象化の積み重ね → 段階的な高級化 • C言語 → (オブジェクト指向) → C++

  16. 仮想化 (Virtualization) • 実際のものと事実上違いのないものに見せること • メモリ(仮想記憶),CPU(仮想CPU),計算機(仮想計算機) • 仮想化されたネットワーク(VLAN, VPN) • ネットワークの上に別のネットワークを構成 • 仮想化/抽象化されたもの → 論理的存在 • 利用する側からは論理的なものだけを見る • コンピュータサイエンスにおける重要概念

  17. OSと実行モード • プログラムを書くとメモリ中をアクセスできる • 隣のプログラムのメモリを触れる? • アプリケーション毎にメモリ空間を切り換えているならその機能を使えば? • アプリケーションが交代でCPUを使う • 次も自分が動くようにできる? • 入出力の時のデバイス(ハードウェア)操作 • 他の人のデータが読み取れる?

  18. OSと実行モード • CPUに特権モードと非特権(ユーザ)モードを用意 • 悪用されると危ない操作 → 特権命令 • メモリ保護操作、入出力、etc. • 特権モードの時のみ実行可能(ハードで保護) • OSは特権モードで稼働 • アプリケーションは非特権モードで稼働 • 特権モードに切り替わるときにはOSのプログラムしか動かない (ハードで保護) • アプリケーションに生の機械を見せない

  19. カーネルAPI • OSの機能をどのようにして使うか? • カーネルの機能を使うライブラリ関数を提供 • API (Application Programing Interface) • システムコール関数・Win32API • 2つの実行モード • カーネル(システム)モード … 特権モード • ユーザモード … 非特権モード • どうやって安全に特権モードに移るか,の仕組みは後日のお楽しみ

  20. カーネルAPI • システムコール関数はカーネルモードに移行 • open(), read(), write(), ... • システムコールでない関数には、 • ユーザモードのみで動く • strlen(), strtol(), ... • 内部的にシステムコールを使用 • fopen(), fread(), fwrite(), fgets(), ... • UNIXのマニュアルで2章がシステムコール、3章がライブラリ関数 • man コマンドの利用 (man 2 関数名、man 3 関数名)

  21. OSの歴史

  22. OSの歴史 • OSがまだ存在しない時代(1940年代) • 機械語プログラムをパネルスイッチから手で入力 • 別のプログラムを動かしたければ,また手で入力 • やがてカードリーダ,ラインプリンタ,磁気テープ装置等が登場 • これら入出力装置をプログラムから利用するためのライブラリ(デバイスドライバ) • プログラムの入力の手間は低減 • しかしプログラムの入れ替えは手動

  23. OSの歴史: 第1世代 (1950年代) • バッチ処理(batch processing) • 複数のプログラム(ジョブ)を自動的に連続処理 • ユーザはプログラムをカード等の形態でオペレータに渡す • オペレータは依頼された(多数の)ジョブを計算機へ投入 • 計算機のOSは,ジョブを自動的に読み込み実行実行を終えると自動的に次のジョブを処理 • 実行の手間が低減し,計算機は休みなく稼動 • 計算機は非常に高価だった • プログラム実行の順番待ちのため,結果が得られるまで時間がかかる(例えば数時間待ち)

  24. OSの歴史: 第2世代 (1960年代) • マルチプログラミング(multiprogramming) • 複数のプログラムをメモリに格納しておき,入出力待ち等が生じたときに別のプログラムに切り替える⇒待ち時間を有効利用 入出力 (CPUから見ると遅い) この間CPUは暇 CPU P1 P1 入出力 割込み CPU P2 P1 P1

  25. OSの歴史: 第2世代 (1960年代) • タイムシェアリングシステム(TSS: Time Sharing System) • 1台の計算機を複数のユーザが同時使用 • 複数の端末を1台の計算機に接続し,端末を通して対話的に計算機を利用 • 計算機を時分割して利用 • ある瞬間は1つのプログラムしか動いていないが,あたかも同時に複数のプログラムが動いているように見える • 待ち時間の減少(応答時間の向上) • オーバヘッドは増加

  26. OSの歴史: 第2世代 (1960年代) • 仮想記憶(virtual memory) • マルチプログラミングでは,多くのプログラムをメモリに置くとメモリが不足 • TSSでも同様の問題 • 実際のメモリ量より多くのメモリ空間を提供するメモリ管理技術

  27. OSの歴史 : 第3世代 (1964年~) 汎用機(メインフレーム) • テープやカードなどでプログラム・データを投入し一括実行 • 多数の端末を時分割処理 管理端末 プログラム データ FACOM230 (情報処理学会 コンピュータミュージアムより)

  28. OSの歴史 : 第3世代 (1964年~) • IBM OS/360 • System/360用の本格的なOS • System/360: メインフレーム(汎用大型計算機) • バッチ処理とオンライン処理を同時に実現 • TSS,(マルチプログラミング),仮想記憶,ファイルシステム • アプリケーションソフトウェアの互換性を実現 • 現在のメインフレームのOSもこれを受け継いでいる

  29. IBM System/360

  30. OSの歴史 : 第4世代(初期) • OSの汎用化 (複数のハードで走る・複数地点で開発) • 計算機の発達,マイクロプロセッサの登場 • ミニコンピュータ → ワークステーションの登場 • 計算機ネットワークや分散処理 • インターネットプロトコル(TCP/IP) • 4.2BSD UNIX

  31. UNIX • UNIX • AT&Tベル研で開発(1969年)、他機関にライセンス • ベル研の流れを汲む … System V • カリフォルニア大学バークレイ校 (UC Berkeley)版 (1980年頃) • BSD (Berkeley Software Distribution) UNIX • 上記2つのバージョンをベースに様々なUNIXが存在

  32. ミニコンピュータ • メインフレームと比較して小型 • 部屋一杯 vs 冷蔵庫 • 運用の設備・人員 • 1台を多数の端末から使う • 百数十台の端末を同時に処理 • CDC • DEC PDP-8, PDP-11 . . . . .

  33. ミニコンピュータ • DEC VAX11/780 (1977年) • 1.8m(H)×2m(W)×1m(D) • 非マイクロプロセッサ • 40x30cmx20枚, 1MIPS • メモリ:512KB~16MB • ディスク装置 • 数十~数百MB • 本体と同じくらいの大きさ • OS • VMS (Virtual Memory System) • BSD UNIX

  34. キャラクタ端末 (DEC VT100とVT220) • 80×25字のキャラクタ端末 • シリアル通信(RS-232C) • 10kbps程度の通信速度 VT100/220の画面制御プロトコルは現在も健在

  35. ワークステーション • 科学技術用途の高性能計算機 • 通常、グラフィックディスプレイとポインティング入力装置(マウスなど)をもつ • 高速なネットワーク接続 (Ethernet, Apollo Domain) • 基本的に個人で使う • 場合によってはミニコン的な使い方も… • Sun 3, Sun 4, SPARCstation, ... • DECstation • SONY NEWS • SGI Indigo, Indy, ...

  36. ワークステーション • Sun Microsystems Sun 3 (1985頃) • モトローラ68020 • 16MHz~ • メモリ4MB~ • LAN (10Mbpsイーサネット) • 高解像度ディスプレイ • ウィンドウシステムとマウス • 1人以上の同時利用 • 仮想端末 • SunOS(起源は4.2BSD UNIX) • TCP/IP • PCよりかなり高性能 • 数百万円~

  37. スーパーコンピュータ • 科学技術計算のために専用化 • 高速計算のためのプロセッサ • ベクトル計算機・スカラー計算機 • 初期のスパコン • Cray2 • SX-4 (NEC) • VP-100 (Fujitsu)

  38. Cray 2

  39. Connection Machine • Thinking MachinesConnection Machine CM-1 • 1bitプロセッサを65536台

  40. 地球シミュレータ(2002年) 今では珍しいベクトルプロセッサを5120台 (現在世界1はRoadrunner[IBM], Opteron+Cell)

  41. OSの歴史 : 第4世代 (後半) • 1995年 インターネット元年 • パーソナルコンピュータの普及 • インターネットの広がり • 一般向けのOSの登場(GUIの一般化) • MS-DOS (+Windows 3.x) • Windows 95, 98, NT, 2000, XP • 386BSD, FreeBSD, NetBDS • Linux

  42. PC向けマイクロプロセッサ • Sun 3時代の一般的なPC • Z80(4MHz, 32KB程度),8086(8MHz,256KB程度) • 640x400程度のディスプレイ • HDDはなし(まだ非常に高価) • ROMに書き込まれたBASIC • CP/M, MS-DOS • Intel486(1989年) • 16MHz~25MHz • この頃から高価なPCなら仮想記憶やマルチタスク等が実用的に利用可能になる • 1991年Linux,1993年FreeBSD • ハイエンドPCでSun 3くらいの性能(カタログ性能値では) • メモリとHDDは高価なため小容量,低-中解像度ディスプレイ

  43. PC向けマイクロプロセッサ • Pentium(1993年) • Pentium Pro(1995年) • 徐々にWSとの性能差がなくなる • 普通に買えるPCでも仮想記憶,マルチタスクが実用的に • Pentium Proは内部的にはRISCアーキテクチャ • クロックは133MHz~200MHz • 現在のPentiumはこれを発展させたもの • 現在では最先端・高性能のOSがPCで動作 • UNIXやWindows XP • 個人のためOSがますます望まれるようになる • ネットワークやセキュリティの重要度も増す

  44. PC向けOS • MS-DOS • IBM-PC 向けのOS • フロッピーディスクで動く • 概念的には UNIX に似ている部分も多い • Windows XX • Window 3.x の頃は DOS 上のアプリケーション • Windows 95 からGUIが標準 • メモリ保護やユーザ管理はWindows XP以降 • ビジネス向けでは Windows NT以降

  45. PC向けOS • 386BSD, FreeBSD, NetBSD • UNIXのi386向け実装 • 現在も開発が進んでいる • サーバ向けに使われる部分もある • MINIX • Andrew Stuart Tanenbaum (Vrije Universiteit Amsterdam • 教育用を志向して作成 • Linux • Linus Torvaldsが個人で作成・公開 • 現在は GPL (GNU Public License)の元広く開発

  46. ネットワークの普及 • TCP/IP • 「インターネット」で使われているインターネットプロトコル(通信プロトコル) • LAN(Local Area Network)でも使用 • イーサネット(Ethernet) • LANの規格 • 10Mbps→100Mbps→1Gbps

  47. インターネットプロトコル アプリケーション プログラム • アプリケーションプロトコル • メールやwebのプロトコル • トランスポートプロトコル • 上の層のデータを転送するプロトコル • インターネットプロトコル • IPアドレス • ネットワーク間のデータ転送の制御(ルーティング) ハードウェア

  48. 1024ポート→80ポート ルータ LAN A LAN B "GET /index.html HTTP/1.0" データ データ データ データ データ AのMACアドレス→ルータのMACアドレス R→B 133.15.X.X→130.54.X.X ※MACアドレス=LANのアドレス

  49. ネットワークサービスの例 • Web (World Wide Web: WWW) • ネットワーク越しに各種情報を交換 • マルチメディアデータの取り扱いに配慮 • NFS (Network File System) • ファイルシステムをネットワーク上で共有 • 他のマシンのファイルシステムを自分のマシンにあるように使用できる • NIS (Network Information Service) • アカウント情報等をネットワーク上で共有 • DNS (Domain Name Server) • “www.tut.ac.jp”等の名前とIPアドレスの対応付け

  50. OSの歴史 : 第4世代 (最近) • クラスタ • 多数の汎用計算機をネットワークで接続 • 各ノードのOSは通常のLinux • 特殊な高速ネットワークのドライバが入ることはある(Infinibandなど) • 並列計算用のミドルウェア(ライブラリ) • MPICH など

More Related