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

Size: px
Start display at page:

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

Transcription

1 PFLab( 加藤研 ) のウェブサイトからダウンロードできます オペレーティングシステム 加藤真平東京大学大学院情報理工学系研究科 shinpei@is.s.u-tokyo.ac.jp 2019/5/13 第 4 回オペレーティングシステム 1

2 講義概要 受講生に求める基礎知識 C 言語の理解 コンピュータアーキテクチャの基礎の理解 メモリ管理 割り込み CPUモード 参考図書 Silberschatz, Galvin, and Gagne, Operating System Concepts 8th Edition, Wiley 成績 試験の点数で決定 試験は持ち込み不可 授業に出席していた人で試験の結果が悪い人は追試験あり 出席をとるが出席点はなし 2019/5/13 第 4 回オペレーティングシステム 2

3 講義スケジュール ( 予定 ) 1. OSの概要 (4/8) 2. プロセス管理 (4/15) 3. プロセス間交信 スレッド (4/22) 4. プロセス同期 (5/13) 5. CPUスケジューリング 1(5/20) 6. CPUスケジューリング 2 & トランザクション処理 & メモリ管理 1(5/27) 7. メモリ管理 2(6/3) 8. 休講予定 (6/10) 9. メモリ管理 &I/Oシステム(6/17) 10. I/Oシステム (6/24) 11. ファイルシステム (7/1) 12. プロテクション & セキュリティ (7/8) 13. バッチシステム & 分散システム & まとめ (7/22) 14. 試験 (7/29) 2019/5/13 第 4 回オペレーティングシステム 3

4 Pthread (1/2) int pthread_create(pthread_t *thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg); void pthread_exit(void *retval); int pthread_join(pthread_t th, void **thread_return); int pthread_detach(pthread_t th); pthread_t pthread_self(void); int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex attr_t *mutexattr); int pthread_mutex_lock(pthread_mutex_t *mutex)); int pthread_mutex_trylock(pthread_mutex_t *mutex); int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_mutex_destroy(pthread_mutex_t *mutex); int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr); Int pthread_cond_signal(pthread_cond_t *cond); int pthread_cond_broadcast(pthread_cond_t *cond); Int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); int pthread_cond_timedwait(pthread_cond_t *cnd, pthread_mutex_t *mtx, const struct timespec *at); int pthread_cond_destroy(pthread_cond_t *cond); int pthread_barrier_init ( pthread_barrier_t * barri, const pthread_barrierattr_t * attr, unsigned int cnt ); int pthread_barrier_destroy ( pthread_barrier_t * barrier ); int pthread_barrier_wait ( pthread_barrier_t * barrier ); 2019/5/13 第 4 回オペレーティングシステム 4

5 Pthread (2/2) ipthread_attr_init, pthread_attr_destroy, pthread_attr_setdetachstate, pthread_attr_getdetachstate, pthread_attr_setschedparam, pthread_attr_getschedparam, pthread_attr_setschedpolicy, pthread_attr_getschedpolicy, pthread_attr_setinheritsched, pthread_attr_getinheritsched, pthread_attr_setscope, pthread_attr_getscope pthread_attr_init, pthread_setschedparam, pthread_getschedparam, pthread_equal 2019/5/13 第 4 回オペレーティングシステム 5

6 Bounded Buffer using pthread (1/3) #include <stdlib.h> #include <stdio.h> #include <pthread.h> #define N_ITEM 8 #define N_PRODUCER 4 #define N_CONSUMER 4 #define BSIZE 8 int buf[bsize]; int count; int in, out; int waiting; pthread_mutex_t bbmutex; pthread_cond_t bbcond; pthread_barrier_t pbarrier; void bbinit() { pthread_mutex_init(&bbmutex, NULL); pthread_cond_init(&bbcond, NULL); in = out = waiting = 0; main() { int i, cc; pthread_t pth[n_producer+n_consumer]; void *retval; pthread_barrier_init(&pbarrier, 0, N_PRODUCER+N_CONSUMER); for (i = 0; i < N_PRODUCER; i++) { cc = pthread_create(&pth[i], NULL, producer, 0); if (cc!= 0) { perror("main"); exit(-1); for (i = 0; i < N_CONSUMER; i++) { cc = pthread_create(&pth[i + N_PRODUCER], NULL, consumer, 0); if (cc!= 0) { perror("main"); exit(-1); for (i = 0; i < (N_PRODUCER + N_CONSUMER); i++) { pthread_join(pth[i], &retval); pthread_detach(pth[i]); if (cc!= 0) { perror("main"); exit(-1); exit(0); 2019/5/13 第 4 回オペレーティングシステム 6

7 Bounded Buffer using pthread (2/3) void *producer(void *arg) { int ret = 0; int i; pthread_barrier_wait(&pbarrier); for (i = 0; i < (N_CONSUMER*N_ITEM)/N_PRODUCER; i++) put(i); pthread_exit(&ret); return 0; void *consumer(void *arg) { int ret = 0; int val; int i; pthread_barrier_wait(&pbarrier); for (i = 0; i < N_ITEM; i++) { val = get(i); pthread_exit(&ret); return 0; 2019/5/13 第 4 回オペレーティングシステム 7

8 Bounded Buffer using pthread (3/3) int get() { int val; pthread_mutex_lock(&bbmutex); retry: if (count > 0) { val = buf[out]; --count; out = (out + 1) % BSIZE; if (waiting) { pthread_cond_signal(&bbcond); else { waiting++; pthread_cond_wait(&bbcond, &bbmutex); --waiting; goto retry; pthread_mutex_unlock(&bbmutex); return val; void put(int val) { pthread_mutex_lock(&bbmutex); retry: if (count < BSIZE) { buf[in] = val; count++; in = (in + 1) % BSIZE; if (waiting) { pthread_cond_signal(&bbcond); else { waiting++; pthread_cond_wait(&bbcond, &bbmutex); --waiting; goto retry; pthread_mutex_unlock(&bbmutex); return; 2019/5/13 第 4 回オペレーティングシステム 8

9 セマフォア (Semaphores) Semaphore S 整数型変数 2 つの atomic な操作 wait (S): while S 0 do no-op; S--; signal (S): S++; 2019/5/13 第 4 回オペレーティングシステム 9

10 n Processes によるクリティカルセクション Shared data: Process Pi: semaphore mutex; //initially mutex = 1 do { wait(mutex); critical section signal(mutex); remainder section while (1); 2019/5/13 第 4 回オペレーティングシステム 10

11 Busy Wait で良いの? 単一 CPU 上で Busy wait したらどうなる? 共有メモリ型並列コンピュータだったらどう? 2019/5/13 第 4 回オペレーティングシステム 11

12 Busy wait しないセマフォアの実装 2 つのプリミティブを仮定 : block() は呼び出したプロセスを一時的に停止 wakeup(p) はブロックされていたプロセス P を実行を再開 これらプリミティブは OS カーネルによって実現 ( プロセスの実行状態を変更するため ) Wait/signal 処理は atomic に処理 typedef struct { int value; struct process *L; semaphore; wait(s): S.value--; if (S.value < 0) { add this process to S.L; block(); signal(s): S.value++; if (S.value <= 0) { remove a process P from S.L; wakeup(p); 2019/5/13 第 4 回オペレーティングシステム 12

13 同期ツールとしての Semaphore P j における B の実行を P i における A の実行の後に semaphore flag の初期値は 0 Code: P i A signal(flag) P j wait(flag) B 2019/5/13 第 4 回オペレーティングシステム 13

14 セマフォアの種類 Counting セマフォア 整数値を使用 Binary セマフォア 0 か 1 Counting セマフォアは Binary セマフォアで実現可能 ( 以下説明 ) 2019/5/13 第 4 回オペレーティングシステム 14

15 バイナリセマフォアによる カウンティングセマフォア実装 データ構造 & 初期値 : binary-semaphore S1 = 1; S1: クリティカルセクション実現用 binary-semaphore S2 = 0; S2: プロセスwait 用 int C = initial value of semaphore S: wait operation signal operation wait(s1); C++; if (C <= 0) { signal(s2); wait(s1); C--; if (C < 0) { signal(s1); wait(s2); signal(s1); else signal(s1); この段階で signal 操作側は S1 に対する signal は未発行 2019/5/13 第 4 回オペレーティングシステム 15

16 デッドロック 資源を排他的利用しているプロセス集合において あるプロセスが 他のプロセスが排他的利用している資源を確保しようとして待ち状態になること S と Q を初期値が 1 であるセマフォア P 0 P 1 wait(s); wait(q); wait(q); signal(s); signal(q) wait(s); signal(q); signal(s); 2019/5/13 第 4 回オペレーティングシステム 16

17 飢餓状態 (Starvation) 半永久的なブロッキング プロセスが停止したままセマフォアのキューから取り除かれることがない状態 P0 P1 P2 while(1) { Wait(S) Signal(S) while(1) { Wait(S) Signal(S) while(1) { Wait(S) Signal(S) P0 と P1 がセマフォ S をとりあうと P2 は永遠に wait このような P2 の状態が飢餓状態 これは飢餓状態の一例である 実行したくても実行できない場合を飢餓状態と呼ぶ CPU スケジューリングにおいても飢餓状態が発生する場合がある 2019/5/13 第 4 回オペレーティングシステム 17

18 共有資源とは? 共有資源問題 プロセス スレッド間で交信のために使用するメモリ領域 ファイル プリンタ グラフィックス 共有資源に対する排他的利用 Bounded-Buffer 問題 Readers and Writers 問題 複数共有資源の排他的利用 Dining-Philosophers 問題 2019/5/13 第 4 回オペレーティングシステム 18

19 Bounded-Buffer 問題 共有メモリ semaphore full=0, empty=n, mutex=1; do { produce an item in nextp wait(empty); wait(mutex); add nextp to buffer signal(mutex); signal(full); while (1); do { wait(full) wait(mutex); remove an item from buffer to nextc signal(mutex); signal(empty); consume the item in nextc while (1); 2019/5/13 第 4 回オペレーティングシステム 19

20 共有データ semaphore mutex=1, wrt=1; int readcount = 0; wait(wrt); writing is performed signal(wrt); Readers-Writers 問題 Reader Processes は同時に実行 Writer Processes は共有資源の修正なので 排他的に実行 Writer Processes だけでなく Reader Processes とも排他的実行 wait(mutex); readcount++; if (readcount == 1) wait(wrt); signal(mutex); reading is performed wait(mutex); readcount--; if (readcount == 0) signal(wrt); signal(mutex): このプログラムでは Writer Processがwriteしたくても reader processが次から次に実行されると 待たされてしまう! 2019/5/13 第 4 回オペレーティングシステム 20

21 Dining-Philosophers 問題 複数資源を同時に取得しなければいけないような場合 ナイーブなプログラムだとデッドロックが発生 共有データ semaphore chopstick[5]; 初期値は 全て 1 これはデッドロックを起こすプログラム 解決は後ほど Philosopher i: do { wait(chopstick[i]) wait(chopstick[(i+1) % 5]) eat signal(chopstick[i]); signal(chopstick[(i+1) % 5]); think while (1); 2019/5/13 第 4 回オペレーティングシステム 21

22 同期構文導入の動機 セマフォアによるプログラミングは煩雑 Bounded-Buffer 問題 Readers-Writers 問題 Dining-Philosophers 問題 セマフォアによるプログラミングは構造化されていないためにプログラマが使用を間違えるとバグの温床 例えば wait(s);. と書くべきところを signal(s); signal(s); wait(s); このような問題を如何に容易にエレガントに記述できる言語機能を提供できるか研究. 2019/5/13 第 4 回オペレーティングシステム 22

23 Critical Regions タイプ T を持つ共有メモリ領域 v を以下のように宣言 : v: shared T 変数 v は以下のような文 S の中でのみアクセス可能 region v when B do S B は boolean 式 B が偽の時 真になるまで待機 S を実行中他のプロセスは v をアクセス不可能 struct buffer { int pool[n]; int count, in, out; ; region buffer when (count < n) { pool[in] = nextp; in = (in+1) % n; count++; region buffer when (count > 0) { nextc = pool[out]; out = (out+1) % n; count--; 2019/5/13 第 4 回オペレーティングシステム 23

24 Monitors モニタ内の手続きは 一時期に一つのプロセスのみ実行 monitor monitor-name { shared variable declarations procedure body P1 ( ) {... procedure body P2 ( ) {... procedure body Pn ( ) {... { initialization code 2019/5/13 第 4 回オペレーティングシステム 24

25 Monitors モニタ内で実行しているプロセスが wait するために condition 変数を使用 condition x, y; Condition 変数には wait, signal 操作が定義 x.wait(); 他のプロセスにより x.signal() 操作が実行されるまで wait x.signal(); wait しているプロセスが動作 プロセスが wait していなければ何もしない 2019/5/13 第 4 回オペレーティングシステム 25

26 補足 モニタ buffer 内で使用する局所データ ( 共有データ等 ) の宣言 monitor buffer { int no_of_data; condition empty, full; get() { if (no_of_data == 0) empty.wait; バッファからデータを取り出す ; full.signal; put() { if (no_of_data >= N) full.wait; バッファにデータを格納する ; empty.signal; no_of_data = 0; 共有データ等を操作する関数の定義 同時に複数のプロセスが実行できないようになっている ( モニタに入るのは 1 プロセスのみ ) 初期化コード C++/Java 風に記述 2019/5/13 第 4 回オペレーティングシステム 26

27 Dining Philosophers 問題 monitor dp { enum {thinking, hungry, eating state[5]; condition self[5]; void pickup(int i) // following slides void putdown(int i) // following slides void test(int i) // following slides void init() { for (int i = 0; i < 5; i++) state[i] = thinking; 2019/5/13 第 4 回オペレーティングシステム 27

28 Dining Philosophers 問題 void pickup(int i) { state[i] = hungry; test(i); if (state[i]!= eating) self[i].wait(); void putdown(int i) { state[i] = thinking; // test left and right neighbors test((i+4) % 5); test((i+1) % 5); void test(int i) { if ( (state[(i + 4) % 5]!= eating) && (state[i] == hungry) && (state[(i + 1) % 5]!= eating)) { state[i] = eating; self[i].signal(); 2019/5/13 第 4 回オペレーティングシステム 28 dp.pickup(0);. eat dp.putdown(0); このプログラムでは ある哲学者は飢餓状態になりうる どういう場合か考えてみよう dp.pickup(1);. eat dp.putdown(1);

29 デッドロック問題 資源を排他的利用しているプロセス集合において あるプロセスが 他のプロセスが排他的利用している資源を確保しようとして待ち状態になること 例セマフォアA,Bは1で初期化している P 0 P 1 wait (A); wait(b) wait (B); wait(a) System Model Deadlock Characterization Methods for Handling Deadlocks Deadlock Prevention Deadlock Avoidance Deadlock Detection Recovery from Deadlock Combined Approach to Deadlock Handling 2019/5/13 第 4 回オペレーティングシステム 29

30 補足 複数の資源 R1, R2 を同時に要求するプロセス P1 と P2 R1 と R2 を同時に使用できない場合は待ち状態に P1 が R2 を P2 が R1 を使用する時, 両者とも永久に待ち状態 P1: P(r2); P(r1); R1 と R2 の使用 ; V(r1); V(r2) P2: P(r1); P(r2); R1 と R2 の使用 ; V(r2); V(r1) void thead1() { P(r1); P(r2); /* R1とR2を使用 */ V(r2); V(r1); thead2 { P(r2); P(r1); /* R1とR2を使用 */ V(r1); V(r2); 2019/5/13 第 4 回オペレーティングシステム 30

31 補足 複数の資源 R1, R2 を同時に要求するプロセス P1 と P2 R1 と R2 を同時に使用できない場合は待ち状態 P1 が R2 を P2 が R1 を使用する時, 両者とも永久に待ち状態 P1: P(r2); P(r1); R1 と R2 の使用 ; V(r1); V(r2) P2: P(r1); P(r2); R1 と R2 の使用 ; V(r2); V(r1) 資源 R1 プロセス P1 循環待機 資源 R2 資源 プロセス資源がプロセスに割付けられている状態 プロセス P2 プロセス 資源プロセスが資源を要求しているが, まだ未割当て 2019/5/13 第 4 回オペレーティングシステム 31

32 システムモデル リソース型 : R 1, R 2,..., R m CPU cycles, memory space, I/O devices リソース型 R i に対して W i がインスタンス 各プロセスは以下のプリミティブでリソースを使用 request use release 2019/5/13 第 4 回オペレーティングシステム 32

33 デッドロックの性質 以下の 4 つの状態が同時に満たされているときデッドロックが生じる Mutual exclusion: 一つのプロセスのみがリソースを使用できること状態 Hold and wait: 一つのプロセスが一つ以上のリソースを保持したうえで 他のプロセスが保持するリソースを獲得するために wait している状態 No preemption: あるリソースは それを保持するプロセスがタスクを完了したのちに自発的に行うことでのみ開放できるという状態 Circular wait: 次の条件をみたすプロセスの集合 {P 0, P 1,, P n が存在する状態 P 0 が P 1 の保持するリソースを wait しており P 1 は P 2,, P n 1 が保持するリソースを wait し P 2 は P n は P 0 のもつリソースを wait 2019/5/13 第 4 回オペレーティングシステム 33

34 リソース割り当てグラフ 頂点の集合 V と辺の集合 E V は二種類に分かれる P = {P 1, P 2,, P n : システム内すべてのプロセスからなる集合 R = {R 1, R 2,, R m : システム内すべてのリソースからなる集合 P i による R j の要求を表す辺 :P i R j R j の P i への割り当てを表す辺 : R j P i 2019/5/13 第 4 回オペレーティングシステム 34

35 プロセス リソース割り当てグラフ 4 つのインスタンスをもつリソース P i が R j を要求 P i P i は R j を保持している R j P i Rj 2019/5/13 第 4 回オペレーティングシステム 35

36 リソース割り当てグラフの例 2019/5/13 第 4 回オペレーティングシステム 36

37 デッドロック状態 2019/5/13 第 4 回オペレーティングシステム 37

38 循環グラフになっているがデッドロック状態ではない場合 2019/5/13 第 4 回オペレーティングシステム 38

39 基本性質 グラフに閉路あり デッドロックなし グラフに閉路あり リソースの種類一つにつき それらのインスタンスはただ一つの場合 デッドロック リソースの種類一つにつき それらのインスタンスは複数ある場合 デッドロックの可能性あり. 2019/5/13 第 4 回オペレーティングシステム 39

40 デッドロック問題に対する手法 デッドロック予防 (Deadlock Prevention) デッドロック状態にならないように共有資源の使い方を決定 デッドロック回避 (Deadlock Avoidance) デッドロック状態になると検知したらそれを回避 多くのシステムではデッドロック回避手法は実装されていない OS 自身はデッドロックが生じないように注意深く設計 プログラムがデッドロックするかどうかをソースプログラム ( あるいは仕様 ) からあらかじめ検査する研究 モデル検査 2019/5/13 第 4 回オペレーティングシステム 40

41 Deadlock Prevention 4 つの状態が同時に生じないようにプログラミング Mutual Exclusion 資源によっては Mutual Exclusion を回避することは不可能 Hold and Wait この状態を作らないようにするには プロセスが資源を要求する時は そのプロセスは他の資源を占有しない 方法 1 実行前に使用する資源全てを占有 方法 2 プロセスが資源を要求する時は そのプロセスは何も資源を占有していないときに限定 問題点 リソースが利用性が低下 飢餓状態になる可能性 2019/5/13 第 4 回オペレーティングシステム 41

42 Deadlock Prevention (Cont.) No Preemption いくつかの資源を占有しているプロセスが ある資源を占有しようとして失敗したら 占有していた資源を解放 開放された資源は このプロセスの資源リストに追加 このプロセスは必要とする資源が開放されたら 再度資源の占有を実行 Circular Wait 全ての資源の total ordering を決め その順番に資源を占有 2019/5/13 第 4 回オペレーティングシステム 42

43 Circular Wait!= 十分条件 循環待ち デッドロック発生 R1 が 2 個の資源を持つ場合 プロセス P1 プロセス P3 資源 R1 資源 R2 P3 が終われば P1 が動作... P1 が R2 を解放する可能性 プロセス P2 2019/5/13 第 4 回オペレーティングシステム 43

44 デッドロックの回避 システムは いくつかのアプリオリな情報を利用可能であることが必要 それぞれのプロセスが必要なリソースの最大値をあらかじめ宣言 ( 単純かつ最も有用 ) Circular-wait 状態をさけるため リソースの確保状況を動的に検査 リソースの確保状況とは 利用可能な数とすでに確保されている数 プロセスからの要求の最大値によって定義 ここでは 詳細な話はしない 2019/5/13 第 4 回オペレーティングシステム 44

45 デッドロックの回避 スケジューリングによってデッドロックを回避 銀行家のアルゴリズム デッドロックを起こさない資源のプロセスへの割付け順を決定 ( 銀行家が資源の貸し出しを制御 ) 例 : 資源 A は 5 個, 資源 B は 2 個存在現在の空き資源数 F=(2 0) 残りの必要な資源数 R=((1 2) (2 0) (1 1)) 必要な資源の最大数 - 保持している資源数 = 残りの必要な資源数 R Ri F な Pi があれば安全 プロセス ある時点の実行状態 保持している資源数 U 必要な資源の最大数 N A B A B P P P /5/13 第 4 回オペレーティングシステム 45

46 デッドロックの回避 例 : 資源 A は 5 個, 資源 B は 2 個存在 現在の空き資源数 F=(2 0) 残りの必要な資源数 R=((1 2) (2 0) (1 1)) F= 初期値 :W=(2 0), S=( 偽偽偽 ) 1. WとRから要求を満足できるプロセスを探索 P2のみ 2. WとSを更新しP2 実行後の状態を計算 W=W+(0 1)=(2 0)+(0 1)=(2 1) S=( 偽真偽 ) 3. 1へ. ただし,P2を除く プロセス 保持している資源数 U 必要な資源の最大数 N A B A B P P P /5/13 第 4 回オペレーティングシステム 46

47 デッドロックの回避 例 : 資源 A は 5 個, 資源 B は 2 個存在 現在の空き資源数 F=(2 0) 残りの必要な資源数 R=((1 2) (2 0) (1 1)) W=(2 1), S=( 偽真偽 ) 1. WとRから要求を満足できるプロセスを探索 P3のみ 2. WとSを更新 プロセス 保持している資源数 U 必要な資源の最大数 N A B A B W=W+(1 1)=(2 1)+(1 1)=(3 2) S=( 偽真真 ) 3. 1 へ. ただし,P2,P3 を除く P P P1 にも割付可能 P S の要素全てが真になればシステムは安全 (P2, P3, P1 の順に実行すればよい ) 割付できないときは, 前の状態に戻して別の候補について調べる 2019/5/13 第 4 回オペレーティングシステム 47

48 デッドロックを回避する割り当て 通常はプロセスが実行に合わせて資源要求を出してくる それを受け入れて良いかどうかの判断が必要 資源を与えてなお デッドロック回避が可能 (= 安全 ) な実行順があるか? 手順 要求が残り必要な資源数 R を超えていないことを確認 要求が利用可能な資源数 F を超えていたら そのプロセスは待ち そうでなければ次ステップの確認 要求を割り当てた後の残り必要資源 R を計算 利用可能資源 F から 要求の分を引いて W を初期化 デッドロック回避が可能な実行順があるか調査 なければ そのプロセスは待ちにして残り必要資源 R の状態を元に戻す 2019/5/13 第 4 回オペレーティングシステム 48

49 デッドロックを回避する割り当て 総資源数 :A 5 個 B 2 個 プロセス 保持している資源数 U 必要な最大資源数 N 残り必要資源数 R A B A B A B P 資源要求列 P3: A 1 個 P2: A 1 個 待 1 P2 終了 3 P3 終了 P P1: A 1 個 待 4 P 残り資源 :A 個 B 個 P1: B 1 個 P3: B 1 個 P2: A 1 個 待待 2 待 5 6 ここでは 必要最大資源数が割り当てられたらすぐにプロセスが終了 P1: B 1 個 /5/13 第 4 回オペレーティングシステム 49

50 デッドロック検出と回復 P5 P1 R1 R2 P2 P3 R3 P4 R4 P6 検出 システムがデッドロック状態か? 資源割付グラフ 要求 (P R) 割付 (R P) 左図の一番下はデッドロック R5 2019/5/13 第 4 回オペレーティングシステム 50

51 デッドロックの検出 P1 R1 P2 グラフの簡約 あるプロセスの資源要求が満足されるとき, グラフは当該プロセスにより簡約可能という P4 R2 P3 矢印を削除可能 それでも循環待ちが残ればデッドロック状態 2019/5/13 第 4 回オペレーティングシステム 51

52 デッドロックからの回復 デッドロックを検出 循環待ちを解除しデッドロックから回復 具体的手法は以下のどちらか 1. デッドロック状態のプロセスを 1 つ異常終了 リスクはあるが最悪の事態は回避 2. デッドロック状態のプロセスを 1 つ前の状態に戻し (rollback), やり直し プログラムの実行状態を時々保存 ( チェックポインティング ) 2019/5/13 第 4 回オペレーティングシステム 52

53 演習問題 3.10 銀行家のアルゴリズム 資源 A:10 個,B:5 個,C:7 個 ある実行時点の状態 プロセス 保持している資源数 必要な資源の最大数 A B C A B C P P P P P 途中の計算過程を必ず示すこと 2019/5/13 第 4 回オペレーティングシステム 53

54 ライブロック デッドロック状態になっていないが どのプロセスも資源を獲得できない状態 プロセス P0 が R0 をロック プロセス P1 が R1 をロック プロセス P0 が R1 をロックできないから R0 をリリースして R1 をロックしようとする プロセス P1 が R0 をロックできないから R1 をリリースして R0 をロックしようとする 2019/5/13 第 4 回オペレーティングシステム 54

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

オペレーティングシステム 1.PFLab( 加藤研 ) のウェブサイトからダウンロードできます http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/ 2. 紙資料も配布します オペレーティングシステム 加藤真平東京大学大学院情報理工学系研究科 shinpei@is.s.u-tokyo.ac.jp 2018/5/14 第 5 回オペレーティングシステム 1 講義概要 受講生に求める基礎知識

More information

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

オペレーティングシステム 1.PFLab( 加藤研 ) のウェブサイトからダウンロードできます http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/ 2. 紙資料も配布します オペレーティングシステム 加藤真平東京大学大学院情報理工学系研究科 shinpei@is.s.u-tokyo.ac.jp 2018/4/23 第 3 回オペレーティングシステム 1 講義概要 受講生に求める基礎知識

More information

スレッド

スレッド POSIX スレッド システムプログラミング 2007 年 10 月 22 日 建部修見 スレッドとは? プロセス内の独立したプログラム実行 メモリは共有 ファイルディスクリプタなどプロセス資源は共有 一般にスレッド生成はプロセス生成より軽い プロセス vs スレッド 生成 実行オーバヘッド スレッド小 プロセス大 メモリ 共有 別々 プロセス資源 共有 別々 データ共有 メモリのポインタ渡し (

More information

スレッド

スレッド POSIX スレッド (1) システムプログラミング 2009 年 10 月 19 日 建部修見 組込機器における並行処理 GUI における反応性向上 ダイナミックな Wait カーソル 各イベントを別制御で実行 Auto save 機能 サーバの反応性向上 各リクエストを別制御で実行 マルチコア マルチプロセッサでの並列実行 スレッドとは? プロセス内の * 独立した * プログラム実行 同一プロセス

More information

Microsoft PowerPoint - OS06.pptx

Microsoft PowerPoint - OS06.pptx この資料は 情報工学レクチャーシリーズ松尾啓志著 ( 森北出版株式会社 ) を用いて授業を行うために 名古屋工業大学松尾啓志 津邑公暁が作成しました 並行プロセス モニタ パワーポイント 2007 で最終版として保存しているため 変更はできませんが 授業でお使いなる場合は松尾 (matsuo@nitech.ac.jp) まで連絡いただければ 編集可能なバージョンをお渡しする事も可能です 排他制御の枠組み

More information

POSIXスレッド

POSIXスレッド POSIX スレッド (3) システムプログラミング 2011 年 11 月 7 日 建部修見 同期の戦略 単一大域ロック スレッドセーフ関数 構造的コードロッキング 構造的データロッキング ロックとモジュラリティ デッドロック 単一大域ロック (single global lock) 単一のアプリケーションワイドの mutex スレッドが実行するときに獲得, ブロックする前にリリース どのタイミングでも一つのスレッドが共有データをアクセスする

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 前回の出席確認演習 #include int main() { FILE *fp; int c, linecount, length, maxlength; fp=fopen("/usr/share/dict/words","r"); if (fp == NULL) return 1; linecount=0; length=0;

More information

Microsoft PowerPoint - OS04.pptx

Microsoft PowerPoint - OS04.pptx この資料は 情報工学レクチャーシリーズオペレーティングシステム松尾啓志著 ( 森北出版株式会社 ) を用いて授業を行うために 名古屋工業大学松尾啓志 津邑公暁が作成しました オペレーティングシステム #4 並行プロセス : 排他制御基礎 パワーポイント 2007 で最終版として保存しているため 変更はできませんが 授業でお使いなる場合は松尾 (matsuo@nitech.ac.jp) まで連絡いただければ

More information

04-process_thread_2.ppt

04-process_thread_2.ppt オペレーティングシステム ~ 保護とシステムコール ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2015/05/08 復習 : OS の目的 ( 今回の話題 ) 裸のコンピュータを抽象化 (abstraction) し より使いやすく安全なコンピュータとして見せること OS はハードウェアを制御し アプリケーションの効率的な動作や容易な開発を支援する OS がないと 1 つしかプログラムが動作しない

More information

Microsoft PowerPoint - 5_2-3IPC.pptx

Microsoft PowerPoint - 5_2-3IPC.pptx 2.3.1 競合状態 (race condition) オペレーティングシステム 5 2.3 プロセス間通信 Example Process A Process B i=0 i=0 while(i-10){ i++ i-- print A finished print B finished プロセス A スプーラディレクトリ ( ファイル印刷の待ち配列 ) ここまで印刷した

More information

( ) 3 1 ( ), ( ).. 1

( ) 3 1 ( ), ( ).. 1 30 2019 1 22 ( ) 3 1 ( ), 2-9 5 ( ).. 1 1. ( T):,? ( O):, T:,? O:!?,!?,... T:,,,? O:!?,,, OS? T:,, SSD, OS, CPU, OS SSD,? O:,,...? T: : OS,,, ( ) (1),. Linux, Unix OS. (2), (permission), (owner)., ( :

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体

More information

01-introduction.ppt

01-introduction.ppt オペレーティングシステム ~ イントロダクション ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2015/04/10 オペレーティングシステム 担当 : 山田浩史 ( やまだひろし ) mail: hiroshiy @ cc.tuat.ac.jp 質問等ありましたら気軽にメールをしてください 専門分野 オペレーティングシステムや仮想マシンモニタといった システムソフトウェア と呼ばれる分野

More information

並行システムの検証と実装

並行システムの検証と実装 並行システムの検証と実装 第 12 章並行システムの実装 1 同期機構による実装 PRINCIPIA Limited 初谷久史 2015 PRINCIPIA Limited システムの設計 ( 振る舞い側面 ) 上流へ 要求 振る舞い仕様化 振る舞い仕様 比較 比較結果 コンポーネントモデル 0 コンポーネント分割と振る舞いモデル化 コンポーネントモデル 1 合成 システムモデル コンポーネントモデル

More information

プログラミングI第10回

プログラミングI第10回 プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造

More information

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint ppt [互換モード] 計算機アーキテクチャ特論 A 2017 年 11 6 枝廣 計算機アーキテクチャ特論 A 並列アーキテクチャの基本 ( 枝廣 ) 10/2, 10/16, 10/23, 10/30, 11/6, 11/13, (11/20( 予備 )) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列プログラミングモデル 語

More information

メモリ管理

メモリ管理 並行プログラムと同期 スレッドとプロセス CPU の数だけ同時に実行 CPU 数を越えるスレッド プロセスは OS によって交互に実行 2CPU の場合の図 : t スレッド プロセスの利用目的 性能と記述性の向上 並列処理 : マルチプロセッサ ( 複数 CPU を持つ計算機 ), マルチコアプロセッサでの性能向上 I/O 遅延隠蔽 : I/O によってブロックするスレッドを複数実行して CPU

More information

POSIXプログラミング Pthreads編

POSIXプログラミング Pthreads編 POSIXプログラミング Pthreads 編 デジタルビジョンソリューション 中山一弘佐藤史明 参考図書 Pthreads プログラミング, Bradford Nichols, Dick Buttlar, Jacqeline Proulx Farrell, ISBN4-900900-66-4 Pthreads POSIX スレッド標準を実装したライブラリを Pthreads と呼ぶ C 言語のデータ型

More information

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint ppt [互換モード] 計算機アーキテクチャ特論 2013 年 10 28 枝廣 前半 ( 並列アーキテクチャの基本 枝廣 ) 10/7, 10/21, 10/28, 11/11, 11/18, (12/2)( 程は予定 ) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列アーキテクチャモデル OSモデル 並列プログラミングモデル 語

More information

Taro-2分探索木Ⅰ(公開版).jtd

Taro-2分探索木Ⅰ(公開版).jtd 2 分探索木 Ⅰ 0. 目次 1. 2 分探索木とは 2. 2 分探索木の作成 3. 2 分探索木の走査 3. 1 前走査 3. 2 中走査 3. 3 問題 問題 1 問題 2 後走査 4. 2 分探索木の表示 - 1 - 1. 2 分探索木とは 木はいくつかの節点と節点同士を結ぶ辺から構成される 2 つの節点 u,v が直接辺で結ばれているとき 一方を親節点 他方を子節点という ある節点の親節点は高々

More information

Taro-リストⅢ(公開版).jtd

Taro-リストⅢ(公開版).jtd リスト Ⅲ 0. 目次 2. 基本的な操作 2. 1 リストから要素の削除 2. 2 リストの複写 2. 3 リストの連結 2. 4 問題 問題 1 問題 2-1 - 2. 基本的な操作 2. 1 リストから要素の削除 まず 一般的な処理を書き つぎに 特別な処理を書く 一般的な処理は 処理 1 : リスト中に 削除するデータを見つけ 削除する場合への対応 特別な処理は 処理 2 : 先頭のデータを削除する場合への対応

More information

05-scheduling.ppt

05-scheduling.ppt オペレーティングシステム ~ スケジューリング ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2014/06/01 復習 : プロセス 実行状態にあるプログラムのこと プログラムの実行に必要なものをひっくるめて指す テキスト領域 データ領域 スタック領域 CPU のレジスタ値 プログラムカウンタ など OS はプロセス単位で管理する メモリ Hard Disk CPU プロセス execute

More information

Taro-リストⅠ(公開版).jtd

Taro-リストⅠ(公開版).jtd 0. 目次 1. 再帰的なデータ構造によるリストの表現 1. 1 リストの作成と表示 1. 1. 1 リストの先頭に追加する方法 1. 1. 2 リストの末尾に追加する方法 1. 1. 3 昇順を保存してリストに追加する方法 1. 2 問題 問題 1 問題 2-1 - 1. 再帰的なデータ構造によるリストの表現 リストは データの一部に次のデータの記憶場所を示す情報 ( ポインタという ) を持つ構造をいう

More information

CPUスケジューリング

CPUスケジューリング 10-12 並行プロセス 1 順序グラフ 今まで, プログラムの逐次的実行 これから, プログラム内の並行実行 1 2 3 4 a:=x+y; b:=z+1; c:=a-b; w:=c+1; 上記の文を平行に実行したい! 1 と 2 は, 並列に実行できる. 3 は,1 の後 4 は,3 の後 2 順序グラフの定義 S1 循環のあるグラフは考えない. S2 S3 S1 S4 S2 S5 S6 S3

More information

第2回

第2回 第 4 回基本データ構造 1 明星大学情報学科 2 3 年前期 アルゴリズムとデータ構造 Ⅰ 第 4 回 Page 1 配列 スタック キューとその操作 4-1. 配列とその操作 配列型 同じ型の変数を並べたもの 配列にする型は 基本型 配列型 構造体 ポインタいずれでもよい 要素の並べ方を 次元 という 1 次元配列 ( 直線状 ) 2 次元配列 ( 平面状 ) 3 次元配列 ( 立体状 ) a[5]

More information

Microsoft PowerPoint - C_Programming(3).pptx

Microsoft PowerPoint - C_Programming(3).pptx H23 年度秋学期情報スキル活用 入門 担当 : 田中基彦 ( 工学部共通教育科 ) Email: ak_tanaka@isc.chubu.ac.jp 授業のホームページ学術情報センター > 教育支援 > 情報リテラシー 授業の日程 講義内容提出課題 連絡事項を掲載 > 定期的にアクセスして確認する C 言語によるプログラミング (3) 制御文 繰り返し文 if, while, switch, for,

More information

Taro-スタック(公開版).jtd

Taro-スタック(公開版).jtd 0. 目次 1. 1. 1 配列によるの実現 1. 2 再帰的なデータ構造によるの実現 1. 3 地図情報処理 1. 4 問題 問題 1 グラフ探索問題 - 1 - 1. は データの出し入れが一カ所で行われ 操作は追加と削除ができるデータ構造をいう 出入口 追加 削除 操作 最初 111 追加 111 222 追加 111 222 333 追加 111 222 333 444 追加 111 222

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2016/04/26 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタ malloc 構造体 2 ポインタ あるメモリ領域 ( アドレス ) を代入できる変数 型は一致している必要がある 定義時には値は不定 ( 何も指していない ) 実際にはどこかのメモリを指しているので, #include

More information

Taro-ポインタ変数Ⅰ(公開版).j

Taro-ポインタ変数Ⅰ(公開版).j 0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している

More information

Program Design (プログラム設計)

Program Design  (プログラム設計) 7. モジュール化設計 内容 : モジュールの定義モジュールの強度又は結合力モジュール連結モジュールの間の交信 7.1 モジュールの定義 プログラムモジュールとは 次の特徴を持つプログラムの単位である モジュールは 一定の機能を提供する 例えば 入力によって ある出力を出す モジュールは 同じ機能仕様を実装しているほかのモジュールに置き換えられる この変化によって プログラム全体に影響をあまり与えない

More information

program7app.ppt

program7app.ppt プログラム理論と言語第 7 回 ポインタと配列, 高階関数, まとめ 有村博紀 吉岡真治 公開スライド PDF( 情報知識ネットワーク研 HP/ 授業 ) http://www-ikn.ist.hokudai.ac.jp/~arim/pub/proriron/ 本スライドは,2015 北海道大学吉岡真治 プログラム理論と言語, に基づいて, 現著者の承諾のもとに, 改訂者 ( 有村 ) が加筆修正しています.

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

2006年10月5日(木)実施

2006年10月5日(木)実施 2010 年 7 月 2 日 ( 金 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

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

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

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

オペレーティングシステム 1.PFLab( 加藤研 ) のウェブサイトからダウンロードできます http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/ 2. 紙資料も配布します オペレーティングシステム 加藤真平東京大学大学院情報理工学系研究科 shinpei@is.s.u-tokyo.ac.jp 2018/5/14 第 5 回オペレーティングシステム 1 講義概要 受講生に求める基礎知識

More information

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18 OpenMP* 4.x における拡張 OpenMP 4.0 と 4.5 の機能拡張 内容 OpenMP* 3.1 から 4.0 への拡張 OpenMP* 4.0 から 4.5 への拡張 2 追加された機能 (3.1 -> 4.0) C/C++ 配列シンタックスの拡張 SIMD と SIMD 対応関数 デバイスオフロード task 構 の依存性 taskgroup 構 cancel 句と cancellation

More information

Microsoft PowerPoint - OpenMP入門.pptx

Microsoft PowerPoint - OpenMP入門.pptx OpenMP 入門 須田礼仁 2009/10/30 初版 OpenMP 共有メモリ並列処理の標準化 API http://openmp.org/ 最新版は 30 3.0 バージョンによる違いはあまり大きくない サポートしているバージョンはともかく csp で動きます gcc も対応しています やっぱり SPMD Single Program Multiple Data プログラム #pragma omp

More information

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (

More information

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

オペレーティングシステム 2014 オペレーティングシステム 2019/6/13 海谷治彦 1 目次 安全性 生存性 干渉 デッドロック 2 互いに邪魔しない点からの性質 安全性 (safety): 好ましくない状態にならない 干渉 (interfere) がおきない. デッドロック (dead lock) が無い. 生存性 (liveness): やろうとしたことは, いつかは処理される. 永遠に待たされることは無い 例えば高層ビルに多数のエレベータがあるが,

More information

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy オブジェクト指向プログラミング演習 2010/10/27 演習課題 スレッド ( その 2) 同期処理 結果不正 デッドロック 前回のスレッドの演習では 複数のスレッドを実行し 一つのプログラムの中の違う処理を同時に実行し た ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする )

More information

PowerPoint Template

PowerPoint Template プログラミング演習 Ⅲ Linked List P. Ravindra S. De Silva e-mail: ravi@cs.tut.ac.jp, Room F-413 URL: www.icd.cs.tut.ac.jp/~ravi/prog3/index_j.html 連結リストとは? 一つひとつの要素がその前後の要素との参照関係をもつデータ構造 A B C D 連結リストを使用する利点 - 通常の配列はサイズが固定されている

More information

Insert your Title here

Insert your Title here マルチコア マルチスレッド環境での静的解析ツールの応用 米 GrammaTech 社 CodeSonar によるスレッド間のデータ競合の検出 2013 GrammaTech, Inc. All rights reserved Agenda 並列実行に起因する不具合の摘出 なぜ 並列実行されるプログラミングは難しいのか データの競合 デッドロック どのようにして静的解析ツールで並列実行の問題を見つけるのか?

More information

memo

memo 計数工学プログラミング演習 ( 第 4 回 ) 2016/05/10 DEPARTMENT OF MATHEMATICA INFORMATICS 1 内容 リスト 疎行列 2 連結リスト (inked ists) オブジェクトをある線形順序に並べて格納するデータ構造 単方向連結リスト (signly linked list) の要素 x キーフィールド key ポインタフィールド next x->next:

More information

文法と言語

文法と言語 一昨年の CPU (ARM の一種 ) Nvidia 社製 Tegra 3 の省電力技術 4-PLUS-1 メインである 4 つのコアに加え 低性能 低消費電力のコンパニオンコアを状況に応じて活用する技術 端末のパフォーマンスが必要なときは 4 つのコアから必要な数のコアを使い 不要なときは低消費電力のコンパニオンコアだけで動作して全体の消費電力を削減する ビデオ再生時では最大 61% Web 閲覧では最大

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information

kiso2-03.key

kiso2-03.key 座席指定はありません Linux を起動して下さい 第3回 計算機基礎実習II 2018 のウェブページか ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第2回の復習課題(rev02) 第3回の基本課題(base03) 第2回課題の回答例 ex02-2.c include int main { int l int v, s; /* 一辺の長さ */ /* 体積 v

More information

最近の CPU (ARM の一種 ) Nvidia 社製 Tegra 3 の省電力技術 4-PLUS-1 メインである 4 つのコアに加え 低性能 低消費電力のコンパニオンコアを状況に応じて活用する技術 端末のパフォーマンスが必要なときは 4 つのコアから必要な数のコアを使い 不要なときは低消費電力

最近の CPU (ARM の一種 ) Nvidia 社製 Tegra 3 の省電力技術 4-PLUS-1 メインである 4 つのコアに加え 低性能 低消費電力のコンパニオンコアを状況に応じて活用する技術 端末のパフォーマンスが必要なときは 4 つのコアから必要な数のコアを使い 不要なときは低消費電力 システムソフトウェア講義の概要 1. 計算機システムの復習 : 中央演算処理装置 (CPU), プログラムの実行, 主記憶装置, 補助記憶装置 2. 時分割処理 : プロセス, スレッド, スケジューリング 3. スレッド間の排他制御 : フラグ, セマフォ, モニタ, デッドロック 4. デバイス管理,HDD へのアクセス制御 5. 記憶管理 : メモリ割り当て, ページング, セグメンテーション

More information

Microsoft PowerPoint - kougi9.ppt

Microsoft PowerPoint - kougi9.ppt C プログラミング演習 第 9 回ポインタとリンクドリストデータ構造 1 今まで説明してきた変数 #include "stdafx.h" #include int _tmain(int argc, _TCHAR* argv[]) { double x; double y; char buf[256]; int i; double start_x; double step_x; FILE*

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1 4. ソート ( 教科書 p.205-p.273) 整列すなわちソートは アプリケーションを作成する際には良く使われる基本的な操作であり 今までに数多くのソートのアルゴリズムが考えられてきた 今回はこれらソートのアルゴリズムについて学習していく ソートとはソートとは与えられたデータの集合をキーとなる項目の値の大小関係に基づき 一定の順序で並べ替える操作である ソートには図 1 に示すように キーの値の小さいデータを先頭に並べる

More information

cp-7. 配列

cp-7. 配列 cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 高性能計算基盤 第 7 回 CA1003: 主記憶共有型システム http://arch.naist.jp/htdocs-arch3/ppt/ca1003/ca1003j.pdf Copyright 2019 奈良先端大中島康彦 1 2 3 4 マルチスレッディングとマルチコア 5 6 7 主記憶空間の数が 複数 か 1 つ か 8 ただしプログラムは容易 9 1 つの主記憶空間を共有する場合 10

More information

Prog1_12th

Prog1_12th 2013 年 7 月 4 日 ( 木 ) 実施 ファイル処理ファイルとはファイル (file) は日常用語では紙などを綴じたものを表すが, コンピュータ用語ではデータの集合体を指す言葉である ファイルは例えば, 文書ファイルやプログラムファイルのように, 用途によって分類されることもあれば, また, テキストファイルやバイナリファイルのように, ファイルの作り方によって分類されることもある なお,

More information

Taro-2分探索木Ⅱ(公開版).jtd

Taro-2分探索木Ⅱ(公開版).jtd 2 分探索木 Ⅱ 0. 目次 5. 2 分探索木の操作 5. 1 要素の探索 5. 2 直前の要素の探索 5. 3 直後の要素の探索 5. 4 要素の削除 5. 5 問題 問題 1-1 - 5. 2 分探索木の操作 5. 1 要素の探索 要素 44 の探索 (1) 要素 と 44 を比較して 左部分木をたどる (2) 要素 33 と 44 を比較して 右部分木をたどる (3) 要素 44 を見つけた

More information

Microsoft PowerPoint - C4(反復for).ppt

Microsoft PowerPoint - C4(反復for).ppt C 言語プログラミング 繰返し ( for 文と while 文 ) 例題 (10 個のデータの平均を求める ) 手順 入力データをx1,x2,,x10 として, (x1+x2+x3+x4+x5+x6+x7+x8+x9+x10)/10 を計算する データ数が,1000 個,10000 個, となったらどうする? データ数個分の 変数の宣言, scanf 関数の呼出し, 加算式の記述 が必要 1 総和を求めること

More information

PowerPoint Presentation

PowerPoint Presentation ファイルの入出力 芝浦工業大学情報工学科 青木義満 今回の講義内容 ファイル入出力 ファイルからのデータ読込み ファイルと配列 2 1 ファイルへのデータ書き込み ( 復習 ) ソースファイル名 :fileio1.c データをファイルに書き込み #include int main(void) { ファイルポインタ宣言 int student_id = 100; char name[

More information

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード] 第 3 回 Java 基本技術講義 クラス構造と生成 33 クラスの概念 前回の基本文法でも少し出てきたが, オブジェクト指向プログラミングは という概念をうまく活用した手法である. C 言語で言う関数に似ている オブジェクト指向プログラミングはこれら状態と振る舞いを持つオブジェクトの概念をソフトウェア開発の中に適用し 様々な機能を実現する クラス= = いろんなプログラムで使いまわせる 34 クラスの概念

More information

プログラミング及び演習 第1回 講義概容・実行制御

プログラミング及び演習 第1回 講義概容・実行制御 プログラミング及び演習 第 12 回大規模プログラミング (2015/07/11) 講義担当情報連携統轄本部情報戦略室大学院情報科学研究科メディア科学専攻教授森健策 本日の講義 演習の内容 大きなプログラムを作る 教科書第 12 章 make の解説 プログラミングプロジェクト どんどんと進めてください 講義 演習ホームページ http://www.newves.org/~mori/15programming

More information

Microsoft PowerPoint - 計算機言語 第7回.ppt

Microsoft PowerPoint - 計算機言語 第7回.ppt 計算機言語第 7 回 長宗高樹 目的 関数について理解する. 入力 X 関数 f 出力 Y Y=f(X) 関数の例 関数の型 #include int tasu(int a, int b); main(void) int x1, x2, y; x1 = 2; x2 = 3; y = tasu(x1,x2); 実引数 printf( %d + %d = %d, x1, x2, y);

More information

memo

memo 計数工学プログラミング演習 ( 第 6 回 ) 2016/05/24 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : 再帰呼び出し 2 分探索木 深さ優先探索 課題 : 2 分探索木を用いたソート 2 再帰呼び出し 関数が, 自分自身を呼び出すこと (recursive call, recursion) 再帰を使ってアルゴリズムを設計すると, 簡単になることが多い

More information

Microsoft PowerPoint - IntroAlgDs-05-4.ppt

Microsoft PowerPoint - IntroAlgDs-05-4.ppt アルゴリズムとデータ構造入門 2005 年 0 月 25 日 アルゴリズムとデータ構造入門. 手続きによる抽象の構築.2 Procedures and the Processes They generate ( 手続きとそれが生成するプロセス ) 奥乃 博. TUT Scheme が公開されました. Windows は動きます. Linux, Cygwin も動きます. 0 月 25 日 本日のメニュー.2.

More information

第2回

第2回 明星大学情報学科 年後期 アルゴリズムとデータ構造 Ⅰ 第 回 Page 第 回基本データ構造 連結リストとその操作 -. リスト構造 データ部 と ポインタ部 で構成され ポインタをたどることによりデータを扱うことができる構造 -. 単方向リストとその操作 --. 単方向リスト 次のデータへのポインタを つだけ持っているデータ構造 ( データ部は 複数のデータを持っている場合もある ) データ部

More information

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く

char int float double の変数型はそれぞれ 文字あるいは小さな整数 整数 実数 より精度の高い ( 数値のより大きい より小さい ) 実数 を扱う時に用いる 備考 : 基本型の説明に示した 浮動小数点 とは数値を指数表現で表す方法である 例えば は指数表現で 3 書く 変数 入出力 演算子ここまでに C 言語プログラミングの様子を知ってもらうため printf 文 変数 scanf 文 if 文を使った簡単なプログラムを紹介した 今回は変数の詳細について習い それに併せて使い方が増える入出力処理の方法を習う また 演算子についての復習と供に新しい演算子を紹介する 変数の宣言プログラムでデータを取り扱う場合には対象となるデータを保存する必要がでてくる このデータを保存する場所のことを

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2017/04/25 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタの続き 引数の値渡しと参照渡し 構造体 2 ポインタで指されるメモリへのアクセス double **R; 型 R[i] と *(R+i) は同じ意味 意味 R double ** ポインタの配列 ( の先頭 ) へのポインタ R[i]

More information

NUMAの構成

NUMAの構成 共有メモリを使ったデータ交換と同期 慶應義塾大学理工学部 天野英晴 hunga@am.ics.keio.ac.jp 同期の必要性 あるプロセッサが共有メモリに書いても 別のプロセッサにはそのことが分からない 同時に同じ共有変数に書き込みすると 結果がどうなるか分からない そもそも共有メモリって結構危険な代物 多くのプロセッサが並列に動くには何かの制御機構が要る 不可分命令 同期用メモリ バリア同期機構

More information

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n を入力してもらい その後 1 から n までの全ての整数の合計 sum を計算し 最後にその sum

More information

Microsoft Word - 第5回 基本データ構造2(連結リスト).doc

Microsoft Word - 第5回 基本データ構造2(連結リスト).doc 第 5 回基本データ構造 2 連結リストとその操作 第 5 回 Page 1 5-1. リスト構造 データ部 と ポインタ部 で構成され ポインタをたどることによりデータを扱うことができる構造 5-2. 単方向リストとその操作 5-2-1. 単方向リスト 次のデータへのポインタを 1 つだけ持っているデータ構造 ( データ部は 複数のデータを持っている場合もある ) データ部 ポインタ部 ノード リストを構成する要素のことを

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft Word - Training10_プリプロセッサ.docx Training 10 プリプロセッサ 株式会社イーシーエス出版事業推進委員会 1 Lesson1 マクロ置換 Point マクロ置換を理解しよう!! マクロ置換の機能により 文字列の置き換えをすることが出来ます プログラムの可読性と保守性 ( メンテナンス性 ) を高めることができるため よく用いられます マクロ置換で値を定義しておけば マクロの値を変更するだけで 同じマクロを使用したすべての箇所が変更ができるので便利です

More information

NUMAの構成

NUMAの構成 メッセージパッシング プログラミング 天野 共有メモリ対メッセージパッシング 共有メモリモデル 共有変数を用いた単純な記述自動並列化コンパイラ簡単なディレクティブによる並列化 :OpenMP メッセージパッシング 形式検証が可能 ( ブロッキング ) 副作用がない ( 共有変数は副作用そのもの ) コストが小さい メッセージパッシングモデル 共有変数は使わない 共有メモリがないマシンでも実装可能 クラスタ

More information

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

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile data.txt #define OutFile surted.txt #def C プログラミング演習 1( 再 ) 6 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include #define InFile "data.txt" #define OutFile "surted.txt"

More information

Taro-再帰関数Ⅱ(公開版).jtd

Taro-再帰関数Ⅱ(公開版).jtd 0. 目次 6. 2 項係数 7. 二分探索 8. 最大値探索 9. 集合 {1,2,,n} 上の部分集合生成 - 1 - 6. 2 項係数 再帰的定義 2 項係数 c(n,r) は つぎのように 定義される c(n,r) = c(n-1,r) + c(n-1,r-1) (n 2,1 r n-1) = 1 (n 0, r=0 ) = 1 (n 1, r=n ) c(n,r) 0 1 2 3 4 5

More information

Microsoft PowerPoint - kougi11.ppt

Microsoft PowerPoint - kougi11.ppt C プログラミング演習 中間まとめ 2 1 ソフトウエア開発の流れ 機能設計 外部仕様 ( プログラムの入力と出力の取り決め ) 構成設計 詳細設計 論理試験 内部データ構造や関数呼び出し方法などに関する取り決めソースプログラムの記述正しい入力データから正しい結果が得られるかテスト関数単位からテストをおこなう 耐性試験 異常な入力データに対して, 異常を検出できるかテスト異常終了することはないかテスト

More information

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a =

問 2 ( 型変換 ) 次のプログラムを実行しても正しい結果が得られない 何が間違いかを指摘し 正しく修正せよ ただし int サイズが 2 バイト long サイズが 4 バイトの処理系での演算を仮定する #include <stdio.h> int main( void ) { int a = 問 1 配列の宣言整数型配列 data1 にデータが初期設定されている この配列 data1 のデータを下図のように 整数型配列 data2 に代入しなさい また data2 の内容を printf( "data2[0] = %d\n", data2[0] ); printf( "data2[5] = %d\n", data2[5] ); を用いて出力しなさい 実行結果 data2[0] = 76

More information

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

オペレーティングシステム PFLab( 加藤研 ) のウェブサイトからダウンロードできます http://www.pf.is.s.u-tokyo.ac.jp/ja/classes/ オペレーティングシステム 加藤真平東京大学大学院情報理工学系研究科 shinpei@is.s.u-tokyo.ac.jp 2019/4/15 第 2 回オペレーティングシステム 1 講義概要 受講生に求める基礎知識 C 言語の理解 コンピュータアーキテクチャの基礎の理解

More information

情報処理演習 B8クラス

情報処理演習 B8クラス 予定スケジュール ( 全 15 回 ) 1 1. 終了 プログラミング言語の基礎 2. 終了 演算と型 3. 終了 プログラムの流れの分岐 (if 文,switch 文など ) 4. 終了 プログラムの流れの繰返し (do, while, for 文など ) 5. 終了 中間レポート1 6. 終了 配列 7. 終了 関数 8. 終了 文字列 ( 文字列の配列, 文字列の操作 ) 9. 終了 ポインタ

More information

untitled

untitled II 4 Yacc Lex 2005 : 0 1 Yacc 20 Lex 1 20 traverse 1 %% 2 [0-9]+ { yylval.val = atoi((char*)yytext); return NUM; 3 "+" { return + ; 4 "*" { return * ; 5 "-" { return - ; 6 "/" { return / ; 7 [ \t] { /*

More information

PowerPoint Presentation

PowerPoint Presentation マイコンシステム 第 12 回 青森大学ソフトウェア情報学部 橋本恭能 haship@aomori-u.ac.jp 目次 講義 内部設計 3 Deviceタブ Actionタブの関数実装 例題 定義した機能を実現する方法を検討する 課題 動作確認 2 講義 内部設計 3 残りの関数を実装 3 組込みシステム開発 週テーマ内容 7 キッチンタイマーの組立キッチンタイマーのハードを製作 確認 8 9 10

More information

Microsoft PowerPoint - 06.pptx

Microsoft PowerPoint - 06.pptx アルゴリズムとデータ構造第 6 回 : 探索問題に対応するデータ構造 (2) 担当 : 上原隆平 (uehara) 2015/04/22 内容 スタック (stack): 最後に追加されたデータが最初に取り出される 待ち行列 / キュー (queue): 最初に追加されたデータが最初に取り出される ヒープ (heap): 蓄えられたデータのうち小さいものから順に取り出される 配列による実装 連結リストによる実装

More information

memo

memo 計数工学プログラミング演習 ( 第 5 回 ) 2017/05/09 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 文字列 双方向リスト ハッシュ 2 文字列 文字列は char の配列 char name[] = ABC ; name は ABC を格納するのに十分な長さの配列 長さは, 文字列の長さ + 1 ( 終端記号用 ) char name[4]

More information

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - lec10.ppt 今日の内容, とポインタの組み合わせ, 例題 1. 住所録例題 2. と関数とは. を扱う関数. 例題 3. のリスト とポインタの組み合わせ 今日の到達目標 自分で を定義する 自分で定義したについて, 配列やポインタを作成する データ型 基本データ型 char 文字 (1 文字 ) int 整数 double 浮動小数など その他のデータ型配列 データの並び ( 文字列も, 文字の並び ) ポインタ

More information

Taro-最大値探索法の開発(公開版

Taro-最大値探索法の開発(公開版 最大値探索法の開発 0. 目次 1. 開発過程 1 目標 1 : 4 個のデータの最大値を求める 目標 2 : 4 個のデータの最大値を求める 改良 : 多数のデータに対応するため 配列を使う 目標 3 : n 個のデータの最大値を求める 改良 : コードを簡潔に記述するため for 文を使う 目標 4 : n 個のデータの最大値を求める 改良 : プログラムをわかりやすくするため 関数を使う 目標

More information

file:///D|/C言語の擬似クラス.txt

file:///D|/C言語の擬似クラス.txt 愛知障害者職業能力開発校 システム設計科 修了研究発表会報告書 題名 : C 言語の擬似クラス あらまし : C 言語でクラスを作れるという噂の真偽を確かめるために思考錯誤した まえがき : VC++ や Java その他オブジェクト指向の言語にはクラスが存在して クラスはオブジェクトの設計図である 手法 : C++ のクラスを解析して C++ のクラスを作成して C 言語に翻訳する class struct

More information

21 章のお話

21 章のお話 21 章のお話 オブジェクトヘッダ 型オブジェクトポインター (4byte, 8byte) 型の構造体へのポンタ 同期ブロックインデックス (4byte, 8byte) ロックとか COM で利用する フィールド マネージヒープ NextObjPtr マネージヒープ NextObjPtr オブジェクト A を割り当てたい! 同期ブロック 同期ブロックインデックス ~ フィールドまでが入るようにする

More information

プログラミング実習I

プログラミング実習I プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 m.imura@kwansei.ac.jp 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,

More information

Microsoft PowerPoint - 05.pptx

Microsoft PowerPoint - 05.pptx アルゴリズムとデータ構造第 5 回 : データ構造 (1) 探索問題に対応するデータ構造 担当 : 上原隆平 (uehara) 2015/04/17 アルゴリズムとデータ構造 アルゴリズム : 問題を解く手順を記述 データ構造 : データや計算の途中結果を蓄える形式 計算の効率に大きく影響を与える 例 : 配列 連結リスト スタック キュー 優先順位付きキュー 木構造 今回と次回で探索問題を例に説明

More information

02: 変数と標準入出力

02: 変数と標準入出力 C プログラミング入門 基幹 2 ( 月 4) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2014-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ

More information

Microsoft Word - 13

Microsoft Word - 13 担当 : 富井尚志 (tommy@ynu.ac.jp) アルゴリズムとデータ構造 講義日程 1. 基本的データ型 2. 基本的制御構造 3. 変数のスコープルール. 関数 4. 配列を扱うアルゴリズムの基礎 (1). 最大値, 最小値 5. 配列を扱うアルゴリズムの基礎 (2). 重複除去, 集合演算, ポインタ 6. ファイルの扱い 7. 整列 (1). 単純挿入整列 単純選択整列 単純交換整列

More information

データ構造

データ構造 アルゴリズム及び実習 7 馬青 1 表探索 定義表探索とは 表の形で格納されているデータの中から条件に合ったデータを取り出してくる操作である 但し 表は配列 ( 連結 ) リストなどで実現できるので 以降 表 の代わりに直接 配列 や リスト などの表現を用いる場合が多い 表探索をただ 探索 と呼ぶ場合が多い 用語レコード : 表の中にある個々のデータをレコード (record) と呼ぶ フィールド

More information

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

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile data.txt #define OutFile sorted.txt #def C プログラミング演習 1( 再 ) 6 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include #define InFile "data.txt" #define OutFile "sorted.txt"

More information

第3回 配列とリスト

第3回 配列とリスト 連結リスト Algorithms and Data Structures on C この回の要点 連結リストによるリスト 連結リストの構造 連結リストの利点と欠点 C 言語による連結リストの実現 ヘッダファイルによるソースファイルの分割 連結リスト (linked list) リストの実現の一種 リストに含まれる各要素をリンクによって連結した構造 リンクとは 他のデータへの参照のこと 各要素は 自分から次のデータへのリンクを持つ

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション ネットワークプログラミング 演習 第 12 回 Web サーバ上で動作するプログラム 2 今日のお題 PHPのプログラム例 おみくじ アクセスカウンタ ファイルの扱い lock ファイルの所有者 許可と権限 PHP の文法 ( の一部 ) if, for, while の制御の構文は C 言語と似ている 型はあるが 明示的な宣言はしなくてよい 変数には型がない 変数の宣言はしなくてよい 変数名には

More information

Presentation title (on one or two lines)

Presentation title (on one or two lines) 社会インフラシステムへの Linux の適用 Applying Linux to Social Infrastructure Systems ( 株 ) 東芝宮川雅紀 2016 年 3 月 11 日 2016 Toshiba Corporation 自己紹介 2016 Toshiba Corporation 2 目次 システム概要 Linux 適用で発生した問題の事例 事例 1 : pthread_mutex_lockによるデッドロック

More information

10-vm1.ppt

10-vm1.ppt オペレーティングシステム ~ 仮想記憶 (1) ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2015/06/19 OS の目的 裸のコンピュータを抽象化 (abstraction) し より使いやすく安全なコンピュータとして見せること OS はハードウェアを制御し アプリケーションの効率的な動作や容易な開発を支援する OS がないと メモリをアプリケーション自身が管理しなければならない

More information

第3回 配列とリスト

第3回 配列とリスト リストと配列 Algorithms and Data Structures on C この回の要点 C 言語における変数 プリミティブ型とポインタの違い 参照型における実体オブジェクトへの参照 リストとは? 配列によるリスト 配列の利点と欠点 C 言語による配列の実現 配列の代入と複製の違い データ構造 アルゴリズム + データ構造 = プログラム アルゴリズム データをどのように加工するか データ構造

More information

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要. 概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要. http://www.ns.kogakuin.ac.jp/~ct13140/progc/ C-2 ブロック 変数のスコープ C 言語では, から をブロックという. for( ) if( )

More information

untitled

untitled Linux Core0 RedHat Enterprise Linux 5 2.6.26 RedHawk Linux Linux 1/1 RedHat Shared Memory Core1. Core31 2.6.21 Linux + PREEMPT_RT Shared Memory Core0 1/2 FIFO 2.6.14 Linux RealTime Scheduler Core1 POSIX(RedHat)

More information

Prog1_15th

Prog1_15th 2012 年 7 月 26 日 ( 木 ) 実施構造体と typedef typedef 宣言によって,struct 構造体タグ名という表記を再定義し, データ型名のように扱うことができる 構文は typedef struct 構造体タグ名 再定義名 ; となり, この場合の構造体変数の宣言は, 再定義名を用いて行うことができる なお, ここでは 構造体タグ名は省略可能である 構造体を指すポインタ

More information