C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

Similar documents
C プログラミング 1( 再 ) 第 5 回 講義では C プログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ

コンピュータ工学Ⅰ

計算機アーキテクチャ

コンピュータ工学Ⅰ

ComputerArchitecture.ppt

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

PowerPoint プレゼンテーション

情報処理演習 B8クラス

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

PowerPoint プレゼンテーション

ファイル入出力

演算増幅器

2006年10月5日(木)実施

ファイル入出力

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Microsoft PowerPoint - 第3回目.ppt [互換モード]

PowerPoint Presentation

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

コンピュータの仕組み(1)ハードウェア

Microsoft Word - Cプログラミング演習(9)

Prog1_12th

PowerPoint Presentation

10-vm1.ppt

PowerPoint プレゼンテーション

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

PowerPoint プレゼンテーション

情報工学Ⅰ-02

ガイダンス 2

Microsoft Word - Cプログラミング演習(10)

UNIX 初級講習会 (第一日目)

スライド 1

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Microsoft PowerPoint - ProcML-12-3.ppt

OS

目次 第 1 章はじめに 本ソフトの概要... 2 第 2 章インストール編 ソフトの動作環境を確認しましょう ソフトをコンピュータにセットアップしましょう 動作を確認しましょう コンピュータからアンインストー

計算機システム概論

出 アーキテクチャ 誰が 出 装置を制御するのか 1

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

01-introduction.ppt

04-process_thread_2.ppt

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

Microsoft PowerPoint - 11Web.pptx

スライド 1

02: 変数と標準入出力

情報科学概論

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

PowerPoint プレゼンテーション

目次 第 1 章はじめに 本ソフトの概要... 2 第 2 章インストール編 ソフトの動作環境を確認しましょう ソフトをコンピュータにセットアップしましょう 動作を確認しましょう コンピュータからアンインストー

TFTP serverの実装

Microsoft PowerPoint - 1st

< B8CDD8AB B83685D>

主記憶の使われ方 システム領域 SP スタックポインタ システム用 スタック用 プログラム起動時に OS によって確 保される (SP が決められる ) プログラム用 メインルーチン プログラム領域 命令コードの列定数 変数用領域サブルーチン命令コードの列 先頭番地は リンク時に OS によって決め

計算機アーキテクチャ

02: 変数と標準入出力

スライド 1

Operating System 仮想記憶

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

Microsoft PowerPoint - OS02.pptx

Microsoft PowerPoint - pc11.ppt

Microsoft PowerPoint - os ppt [互換モード]

Microsoft PowerPoint - OS07.pptx

Microsoft PowerPoint - OS09.pptx

スライド タイトルなし

gengo1-12

ソフトウェア基礎技術研修

05-scheduling.ppt

講義計画 1. コンピュータの歴史 1 2. コンピュータの歴史 2 3. コンピュータの歴史 3 4. 論理回路と記憶, 計算 : レジスタとALU 5. 主記憶装置とALU, レジスタの制御 6. 命令セットアーキテクチャ 7. 演習問題 8. パイプライン処理 9. メモリ階層 : キャッシュ

コンピュータのしくみ

Arduino をドリトルから 制御する教材の試行 鈴木裕貴 1

Microsoft PowerPoint pptx

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

メモリ管理

Microsoft PowerPoint - No6note.ppt

Microsoft PowerPoint - prog04.ppt

※ ポイント ※

Microsoft PowerPoint - sp ppt [互換モード]

Microsoft PowerPoint - 14th.ppt [互換モード]

Microsoft PowerPoint - sp ppt [互換モード]

Microsoft PowerPoint - No15›¼‚z‰L›¯.ppt

型名 RF007 ラジオコミュニケーションテスタ Radio Communication Tester ソフトウェア開発キット マニュアル アールエフネットワーク株式会社 RFnetworks Corporation RF007SDK-M001 RF007SDK-M001 参考資料 1

授業の形態 教科書 : なし 毎週資料配付. ワークステーション使用の手引き 参考書 : 一般の UNIX の入門書 ユーザーズ UNIX, たのしい UNIX など 4 限 = 講義, 5 限 = 実習 講義 : 松井が担当. 実習 : 助手および TA が担当 講義は座学. 実習は演習および実習

Microsoft PowerPoint - sp ppt [互換モード]

OS

gengo1-12

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

ic3_cf_p1-70_1018.indd

< コンピュータの基本的仕組み > コンピュータは, クロック信号と呼ばれる周期的な論理信号に同期し, 主記憶装置に記憶され ている命令を, 以下の手順で読み込み, 実行することにより動作している. 命令読み込み Instruction Fetch 命令解読 Decode 命令実行 Executio

Microsoft Word - 3new.doc

Taro-ファイル処理(公開版).jtd

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

gengo1-12

Wordの学習

cmpsys15w07_os.ppt

スライド 1

PowerPoint プレゼンテーション

OS

ポインタ変数

情報処理概論(第二日目)

Transcription:

C プログラミング 1( 再 ) 第 5 回 講義では C プログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

1 コンピュータの構造 1.1 パーソナルコンピュータの構造 自分の ( 目の前にある ) コンピュータの仕様を調べてみよう パソコン本体 = CPU( 中央処理装置 ): 制御装置 演算装置 レジスタ キャッシュメモリ 補助記憶装置 ( ハードディスク ) メモリ ( 主記憶装置 ) 入力装置 : キーボード マウス スキャナ等出力装置 : モニタ ( ディスプレイ ) プリンタ等

1.2 メモリにはアドレスが付いている 数の接頭語 : k M G T アドレス (address, 番地 ) : メモリに付けられた番号 16 進数で表現される : 0x000000 ~ 0xFFFFFF リソース (resource, 資源 ): メモリ ハードディスクの記憶容量など

1.3 メモリへの読み書き CPU での計算レジスタ : 電卓の メモリ ( 記憶場所 ) に相当主記憶からデータを アドレス によって取り出す レジスタにデータを取り込む ( 読み込み ) 計算する ( 計算結果はレジスタに残る ) レジスタの値をメモリに書き込む ( 書き込むにもアドレスが必要 ) プログラムは メモリの特定のアドレスに格納されているデータに対して処理を行う もの

1.4 CPU とメモリはバスでつながっている バス (bus) : いろいろなデータが行き来する道 CPUとメモリをつなぐバス データバス 読み書きするデータのやりとり アドレスバス 読み書きするアドレスの指定 コントロールバス データを書き込むのか読みこむのかを指定 1 つの信号線は 1 ビットのデータを送る アドレス空間 : アドレスバスの本数 = 指定できるアドレスの大きさ

1.5 ROM と RAM ROM: Read Only Memory 読み込み専用のメモリ RAM: Random Access Memory 読み書き両用のメモリ

1.6 CPU と入出力装置もバスでつながる 基本的に 入出力装置もメモリ同様バスで接続され メモリと同様にアドレスが付けられている = メモリマップド I/O メモリとは異なる入出力専用のバスが用意されていることもある

2. プログラムが実行されるまで 2.1 CPUを構成する3つの装置制御装置 CPU の処理内容を決める制御信号を送る セレクタへ信号を送る 演算装置 (ALU) 足し算や引き算を行う演算はレジスタのデータだけが対象レジスタ群命令やデータの一時記憶アキュームレータ 汎用レジスタ インデックスレジスタ プログラムカウンタ 命令レジスタ フラグレジスタ スタックポインタ 不動焦点演算レジスタ

5.2.2 CPU の基本処理 読み込み 書き込み 演算処理 メモリの特定の番地の値を特定のレジスタに記憶 特定のレジスタの値をメモリの特定の番地に記憶 特定のレジスタと特定のレジスタの間で演算し 結果を特定のレジスタに記憶

3. プログラムはメモリ上に置かれる インストール (install 実装 ) プログラムを実行できるように準備すること 注 : 似た言葉で ダウンロード (download) があるが プログラムをダウンロードしただけでは使えない プログラムは通常ハードディスクに保存されている それを 実行 するにはメモリ上に配置する = ロード (load) プログラムの実行 =run, execute

4. マシン語命令の実行 CPU がプログラムを実行する時のサイクル 1) fetch ( フェッチ 命令の取り出し ) 2) decode( デコード 解読 ) 3) operand fetch( オペランド フェッチ 処理対象の取り出し ) 4) execute( エグゼキュート 命令の実行 ) 5) write back( ライトバック 結果の保存 )

プログラムの進行 プログラムもメモリに置かれているプログラムカウンタによって どのプログラムが実行されているか を管理基本的には プログラムがフェッチされたら カウンタの数が 1 命令分だけ増える = 順次処理 反復処理 : プログラムカウンタの値を小さな値に戻す選択処理 : プログラムカウンタの値を先に進める ( 途中の処理を飛ばす )

ライブラリの実行 プログラムにおいて 別個に用意されているプログラム ( ライブラリ ) を実行する場合 1) 今のプログラム カウンタの値をスタックに保存 2) プログラムカウンタの値をライブラリの先頭のアドレスにセット そのライブラリが実行される 3) ライブラリの実行が終わったら スタックからプログラムのアドレスを取り出す 4) その次のプログラムから実行を行う

5. 演算装置 (ALU) による演算処理 ALU : Arithmetic Logic Unit 2 つの数値の入力からひとつの演算結果を得る入力はレジスタに入っている出力もレジスタに入っている レジスタ A の値を 3000 番地に保存する には 3000 を別なレジスタ B に保存して レジスタ A の値を B の値となっている番地のメモリに書く事が必要ポインタ

ALU がもたらす情報 演算結果の出力だけではなく フラグ情報も出力 --- 演算結果が0か マイナスか 桁あふれが生じたか 偶数か奇数か フラグレジスタにフラグ情報が格納される

6. メモリバスのビット数 アドレスバスの大きさメモリの容量が決まる --- アドレスでメモリの番地を指定 8 本なら 28 通りの番地 256 16 本なら 216 通りの番地 65536... 汎用レジスタの大きさ = データバスの大きさ CPU 性能 :32 ビット CPU なら 32 ビット (4 バイト ) 64 ビット CPU なら 64 ビット (8 バイト ) 一度にやりとりできるデータの大きさ int 型のビット長

プログラムの構造 1. プログラムの種類 1) デバイスドライバ (device driver) コンピュータを構成するハードウェアを動かす入力デバイス : キーボード マウスなど出力デバイス : プリンタ サウンド モニタなど 新しい機器を接続するにはそのデバイスドライバを組み込む必要がある = インストール (install)

プログラムの構造 2) アプリケーション (application) 応用ソフト ワープロ ゲームなど 3) オペレーティングシステム (OS) 基本ソフト コンピュータシステム全体の管理システム Windows, MacOS, Linux, Unix, Android, ios,... C は Unix 開発のために作られたプログラミング言語

2. ソフトウェアの階層構造

3. プログラムの実行とシェル

4. プログラムの構造 実行可能プログラム (binary) は セグメントに分けられてメモリ上にロードされ 実行されるテキストセグメント : マシン語命令の格納領域ユーザプログラムやライブラリなどデータセグメント : 作業対象情報の格納読み込み専用 静的領域 動的領域スタックセグメント : 情報の一時的記憶用自動変数 プログラムカウンタ

5. プロセスとスレッド CPU によるプログラムの実行 (1) 命令の取り出し ( フェッチ ), (2) デコード ( 解読 ), (3) オペランドフェッチ (4) エグゼキュート ( 命令実行 ) (5) ライトバック ( 結果の保存 ) プログラムを実行させるのはオペレーティングシステムプロセス スレッド : CPU がプログラムを実行する単位高機能なシステムならマルチプロセス マルチスレッド低級なシステムの例 : Arduino --- シングルプロセス

プロセスとスレッド ( 続 ) 一つの CPU しかないコンピュータでも 見かけ上マルチプロセスで走る タイムシェアリング (TSS): 短い時間間隔でプロセスを切り替えながら実行する プロセスとスレッドの違い : メモリ空間が同じかどうか 異なる 共有

1. 入出力とバッファバッファとは 2. 標準入出力標準入出力とは Cの標準ライブラリ 入出力

3. リダイレクト リダイレクト (redirect) = re + direct Unix や Windows ではリダイレクトの記号がある 実際に試してみよう : 実行プログラム名 < 入力ファイル名実行プログラム名 > 出力ファイル名実行プログラム名 >> 出力ファイル名実行プログラム名 < 入力ファイル名 > 出力ファイル名

4. ファイル入出力 ファイルに保存されたデータの読み込みや ファイルにデータを書き込む処理の手順 1) ファイル名を指定して ファイルを開く 2) ファイルを読み書きする 3) ファイルを閉じる C プログラミング 0) ファイル操作の変数を用意例 : FILE *fp; 1) fp = fopen( ファイル名, r ) fp = fopen(( ファイル名, w ) 2) fscanf(fp, %d, &x); fprintf(fp, %d = %d, a,b); 3) fclose(fp)

5. ストリーム ストリーム (stream ) 入出力を表す 元の意味は 流れ --- データの流れ バイトストリーム テキストデータ vs バイナリデータ

6. 入力の終わりは EOF EOF = End Of File ファイルの終わり これは制御コード入力するには Ctrl D (Unix) Ctrl Z (Windows) ただしこれは シェル によって伝わる