情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1...

19
1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科 保坂修治 [email protected] コンピュータの基本動作 IBM sequioia ・・・June 2012 TOP500 Ranking No.1 cores:1572864 Peak 20132.7 TFLOPS ノイマン型コンピュータ コンピュータ = ノイマン型コンピュータ 1. 情報を 2 進数で表現する 2. プログラム内蔵型

Upload: others

Post on 18-Oct-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

1

情報処理概論及演習 2012

ソフトウエア

工学院大学 情報通信工学科 保坂修治

[email protected]

コンピュータの基本動作

IBM sequioia ・・・June 2012 TOP500 Ranking No.1 cores:1572864 Peak 20132.7 TFLOPS

ノイマン型コンピュータ

コンピュータ = ノイマン型コンピュータ

1. 情報を2進数で表現する

2. プログラム内蔵型

Page 2: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

2

メモリ

線形メモリ

0000000番地

0000001番地

0000002番地

0000003番地

0000004番地

0000005番地

0000006番地

0000007番地

0000008番地

FFFFFFFE番地

FFFFFFFF番地

・ ・ ・

・ ・ ・

コンピュータの基本機能

制御装置 主記憶装置

データの流れ 制御情報の流れ

キーボード マウス カメラ

ディスプレイ プリンタ スピーカー

半導体メモリ ハードディスク 光ディスク

演算装置

入出力装置 補助記憶装置

bus

記憶システム

レジスタ

キャッシュメモリ

主記憶

補助記憶装置

高価

高速

安価

低速

容量

CPU内部

DRAM

HD,DVD-R/W,

フラッシュメモリ

(USBメモリ)

SRAM

数百psec

数十msec

数nsec

数十nsec

SRAM

~数MB

~数GB

~数KB

~数TB

Page 3: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

3

プロセッサ

CPU(演算装置 + 制御装置)

1チップに収納

CPUの内部構造

コンピュータの動作 命令実行サイクル

命令 フェッチ

• PCの値でメインメモリの番地を指定する。その番地に記憶されている命令を取り出しIRに格納する

命令 デコード

• IRに格納された命令をデコーダで解読し、制御信号を生成する

実行

•制御信号に従って、ALUや汎用レジスタを使った処理が行われる

Page 4: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

4

簡単なモデルによる動作の理解

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

0 1 2 3 4 5 6 7 8 9 番地

制御装置の動作

制御装置の内部状態 動作

0 停止する

1 レジスタAとBのデータを加えた結果を表示装置に表示する

2 レジスタAとBのデータを掛けた結果を表示装置に表示する

5 5番地のメモリの内容をレジスタAに移す

6 6番地のメモリの内容をレジスタBに移す

9 カウンタの値を0にする

動作(0)

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

5 6 1 0 0 5 6 2 0 0

0 1 2 3 4 5 6 7 8 9 番地

Page 5: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

5

動作(1)

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

5 6 1 0 0 5 6 2 0 0

0 1 2 3 4 5 6 7 8 9 番地

5 5

動作(2)

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

5 6 1 0 0 5 6 2 0 0

1

0 1 2 3 4 5 6 7 8 9 番地

5 5

6 6

動作(3)

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

5 6 1 0 0 5 6 2 0 0

2

0 1 2 3 4 5 6 7 8 9 番地

5 6 6

1

5+6 11 11

Page 6: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

6

動作(4)

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

5 6 1 0 0 5 6 2 0 0

3

0 1 2 3 4 5 6 7 8 9 番地

11 5 6

0

演習1.4(1) 図1.8において、6+7=13 の処理を実現するには

メモリをどのように変更すればよいか。

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

5 6 1 0 0 5 6 2 0 0

0 1 2 3 4 5 6 7 8 9 番地

6 7

演習1.4(2) 図1.8においてカウンタの内容が5ならば、

どんな結果が得られるか。

制御装置 カウンタ レジスタ 演算装置 表示装置

メモリ

A B

5 6 1 0 0 5 6 2 0 0

5

0 1 2 3 4 5 6 7 8 9 番地

5 6 5×6 30

Page 7: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

7

ソフトウエア

基本ソフトウエアと応用ソフトウエア

応用ソフトウエア

基本ソフトウエア

ハードウエア

ワードプロセッサ、表計算ソフト、TeX、メールソフト、など

コンパイラ、デバッガ、

オペレーティングシステム(Windows, MacOS, UNIX, )

物理構造

論理構造

マシン語

プログラミング言語 (C/C++,Java,C#, FORTRAN,BASIC)

プログラミング言語

高水準言語

手続き型 FORTRAN、COBOL、Basic、

C

関数型 Lisp,Haskell,Scala,Scheme

論理型 Prolog

オブジェクト指向 Smalltalk、C++、Java

低水準言語

アセンブリ言語

機械語

Page 8: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

8

情報処理のプロセス

問題

ハードウエア

プログラム

アルゴリズム

マシン語

:解決したい問題がある

プログラミングパラダイム、計算モデル

(アルゴリズムを作るための前提、考え方)

:問題を解決するための手順を用意する

:アルゴリズムをプログラミング言語を使って表現しなおす

:ハードウエアでマシン語を実行する

言語処理プログラム(コンパイラ、インタープリタ)

:ハードウエアが理解できるマシン語に翻訳する

アルゴリズム

問題を解く手順

重要:最適な手順を求める

1. 最短である

2. 論理的な矛盾がない

3. 必ず、終了する

逐次処理

処理1

処理2

処理3

処理 i

Page 9: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

9

プログラムの基本構造

フローチャート

記号 名称 説明

端子 チャートと始めと終わり

線 手順、制御の流れ

処理 変数への代入、演算など

データ記号 データの入出力

判断 条件分岐処理における判断

ループ端(開始) ループ処理の始め

ループ端(終了) ループ処理の終わり

基本構造

Page 10: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

10

順次構造

反復構造

選択構造

基本構造を組み合わせる

処理1

条件2

処理3 処理2

条件1

[例]

デートのアルゴリズム

START

END

天気は良いか?

カフェに行く

映画鑑賞

NO

ラグビー観戦

YES

1~n個までの合計値を求める START

END

カウンタ←カウンタ+1

合計値←合計値+カウンタ

NO

YES カウンタ>n ?

合計値←0

カウンタ←1

Page 11: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

11

演習:n個のデータから最大値を求める

START

END

データの読み込み

NO

YES

最大値←0

データ>最大値 最大値←データ

LOOP1

カウンタ>n

LOOP1

カウンタ←カウンタ+1

プログラミング言語 言語 用途

1 C 低水準から高水準まで、 UNIXシステム開発用に誕生

2 Java オブジェクト指向

3 C++ オブジェクト指向

4 Objective-C オブジェクト指向、iOS、MacOS

5 C# オブジェクト指向

6 (visual)Basic

7 PHP Webアプリケーション

8 Python スクリプト言語

9 Perl スクリプト言語

10 Ruby スクリプト言語、Webブラウザで実行

・・・ 11位 JavaScript、15位logo

20 ・・・ 29位FORTRAN、28位COBOL

30 ・・・ 31位 Scheme、41位 Scala

TIOBE Software June 2012

プログラム作成過程

ソースプログラム

オブジェクト

プログラム

ロードモジュール

(実行形式)

コンパイラ

リンカ

ローダ

ライブラリ関数

オブジェクト

コード

コンパイル

リンク

エディタ

実行(プロセス)

Page 12: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

12

翻訳:ソースコードから実行可能形式へ

1. ソースプログラムを実行可能なマシン語に 一括して翻訳すること

翻訳するプログラムのことをコンパイラと呼ぶ

2. ソースプログラムを実行可能なマシン語に

1命令(1行)ずつ翻訳すること

翻訳するプログラムのことをインタプリタと呼ぶ

言語処理

C言語へ

#include <stdio.h>

int main(void){

printf("Hello World!");

return 0;

}

プログラム「HelloWorld」にみる機械語、アセンブリ言語、C言語によるコードの比較

Page 13: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

13

『アセンブリ言語』

_main:

pushl %ebp

movl %esp, %ebp

subl $8, %esp

andl $-16, %esp

movl $0, %eax

movl %eax, -4(%ebp)

movl -4(%ebp), %eax

call __alloca

call ___main

subl $12, %esp

pushl $LC0

call _printf

addl $16, %esp

movl $0, %eax

leave

ret

マシン語

00000400 55 89 E5 83 EC 28 C7 44 24 04 04 20 40 00 8D 45

00000410 FC 89 44 24 10 A1 10 20 40 00 C7 45 FC 00 00 00

00000420 00 C7 04 24 00 20 40 00 89 44 24 0C 8D 45 F8 89

00000430 44 24 08 E8 B8 07 00 00 89 EC 5D C3 8D 74 26 00

00000440 55 89 E5 83 EC 08 A1 20 20 40 00 85 C0 74 57 A3

00000450 30 20 40 00 A1 D4 40 40 00 85 C0 75 5A 83 F8 E0

00000460 74 22 83 C0 20 89 04 24 E8 63 07 00 00 8B 15 20

00000470 20 40 00 89 04 24 89 54 24 04 E8 61 07 00 00 A1

00000480 D4 40 40 00 83 F8 C0 74 1D 83 C0 40 89 04 24 E8

00000490 3C 07 00 00 8B 15 20 20 40 00 89 04 24 89 54 24

000004A0 04 E8 3A 07 00 00 E8 15 07 00 00 8B 15 30 20 40

000004B0 00 89 10 89 EC 5D C3 89 04 24 E8 11 07 00 00 8B

『マシン語』(実行可能形式、下記はその一部)

コンピュータ内部では すべてを“1”と”0”で表す

・・・・・・・・・・ 0101 0101 1000 1001 1110 0101 1000 0011 1110 1100 0011 1000 1100 0111 0100 0100 0000 0100 0000 0100 0010 0000 0100 0000 0000 0000 1000 1101 0100 0101 1111 1100 1000 1001 0100 0100 0010 0100 0001 0000 1010 0001 0001 0000 0010 0000 0100 0000 0000 0000 1100 0111 0100 0101 1111 1100 0000 0000 0000 0000 0000 0000 1100 0101 0000 0100 0010 0100 0000 0010 0100 0000 ・・・・・・・・・・・・

Page 14: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

14

コンピュータ言語 プログラム「HelloWorld」にみる機械語、アセンブリ言語、C言語によるコードの比較

00000400 55 89 E5 83 EC 28 C7 44 24 04 04 20 40 00 8D 45

00000410 FC 89 44 24 10 A1 10 20 40 00 C7 45 FC 00 00 00

00000420 00 C7 04 24 00 20 40 00 89 44 24 0C 8D 45 F8 89

00000430 44 24 08 E8 B8 07 00 00 89 EC 5D C3 8D 74 26 00

00000440 55 89 E5 83 EC 08 A1 20 20 40 00 85 C0 74 57 A3

00000450 30 20 40 00 A1 D4 40 40 00 85 C0 75 5A 83 F8 E0

00000460 74 22 83 C0 20 89 04 24 E8 63 07 00 00 8B 15 20

00000470 20 40 00 89 04 24 89 54 24 04 E8 61 07 00 00 A1

00000480 D4 40 40 00 83 F8 C0 74 1D 83 C0 40 89 04 24 E8

00000490 3C 07 00 00 8B 15 20 20 40 00 89 04 24 89 54 24

000004A0 04 E8 3A 07 00 00 E8 15 07 00 00 8B 15 30 20 40

000004B0 00 89 10 89 EC 5D C3 89 04 24 E8 11 07 00 00 8B

_main: pushl %ebp movl %esp, %ebp subl $8, %esp andl $-16, %esp movl $0, %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax call __alloca call ___main subl $12, %esp pushl $LC0 call _printf addl $16, %esp movl $0, %eax leave ret

#include <stdio.h>

int main(void){

printf("Hello World!");

return 0;

}

『マシン語』(実行可能形式、下記はその一部)

『C言語』

『アセンブリ言語』

命令

命令の形式

命令コード オペランド ・・・

命令コード: 命令の種類

オペランド: 命令の対象となるデータの格納場所

命令の例

命令コード (加算命令)

オペランド オペランド

機械語 アセンブリ言語 メモリアドレス

Page 15: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

15

コンピュータ言語

アセンブリ言語

機械語命令を直接、人間に分かりやすい形に置き換えたもの

命令の種類

算術演算命令 ・・・ ADD,SUB、MPY

論理演算命令 ・・・ AND,OR

データ転送命令 ・・・ LD,MOV、ST

制御、ジャンプ命令 ・・・ JMP,CALL、RET

入手出力命令 ・・・ IN、OUT

割り込み命令 ・・・ ENI,DII,PUSH、POP

演習:C言語とマシン語 プログラムの作成

プログラムの作成と保存

保存先とファイル名

演習:C言語とマシン語 コマンドプロンプトの利用

カレントディレクトリをプログラム保存先へ移動する。

Visual Studio 2010 コマンドプロンプトの起動 [スタート]→[すべてのプログラム]→[Microsoft Visual Studio 2010]

→[Visual Studio Tools]→[Visual Studio コマンド プロンプト]

>H: >cd Documents¥Software

Page 16: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

16

演習:C言語とマシン語 コンパイルと実行

←---コンパイル

←---実行

演習:C言語とマシン語 ダンプ

←---ダンプ(16進表示)

演習:C言語とマシン語 アセンブリ言語

1) 実行形式ファイルHelloWorld.exeを逆アセンブルし、その結果をファイルに保存する。

2) 保存した逆アセンブルファイルを秀丸で開く

Page 17: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

17

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

OSの誕生: 1950年代

一つのプログラムが終了すると

人手を使って次のプログラムを実行していた。

手間がかかる、時間がかかる

高価な機械を低い効率で利用するのは、不経済

プログラムの監視、自動ロード、自動実行

複数のプログラムを順番に実行するために

OSの役割

処理の効率を高め、コンピュータを経済的に利用できようなサービスを提供するソフトウエア

様々なプログラムが共通で利用するプログラムを提供することによって、プログラム開発を効率化する

Page 18: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

18

入出力制御プログラム

OSの役割:使いやすくする

ワードプロセッサ

キーボード制御 ディスプレイ制御 ディスク制御

電子メール Webブラウザ

OSの役割:資源管理

メモリ 入・出力装置

磁気ディスク

プログラムA プログラムC プログラムB

資源の取り合い

資源分配・信頼性保証

OS: プロセス管理

時間

running

running

running プロセスA

プロセスB

OS

ready ready

ready running wainting

wainting

running

ready

ready

プロセスまたはタスク:プログラムの実行単位

タ イ ム ス ラ イ シ ン グ

プロセススイッチ

マルチタスクの例

Page 19: 情報処理概論及演習 2012 ソフトウエアcu40887/material/w14_software.pdf · 1 情報処理概論及演習 2012 ソフトウエア 工学院大学 情報通信工学科

19

OS:データ管理(ファイルシステム)

異なる装置の違いを「ファイル」として利用できる

名前(ファイル名)でアクセス

ディレクトリ(もしくはフォルダ)による階層によるファイル管理

OS:メモリ管理

プロセス毎に適正配分

プロセスが終了したときの、メモリ開放と再配分

仮想記憶

容量が足りない。補助記憶装置を活用する。

メインメモリの容量は有限!

参考

赤木、荒、石井、ほか「情報処理の基礎と演習 第2版」 共立出版

柴山潔「改訂新版コンピュータアーキテクチャの基礎」 近代科学社

講義「情報処理概論及演習」第14週補助資料

作成日 2 July 2012

作成者 保坂修治