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

Size: px
Start display at page:

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

Transcription

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

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

3 講義スケジュール ( 予定 ) 1. OSの概要 (4/9) 2. プロセス管理 (4/16) 3. プロセス間交信 スレッド (4/23) 4. プロセス同期 (5/7) 5. CPUスケジューリング (5/14) 6. CPUスケジューリング (5/21) 7. メモリ管理 (5/28) 8. メモリ管理 & I/Oシステム (6/4) 9. I/Oシステム (6/11) 10. ファイルシステム (6/18) 11. プロテクション & セキュリティ (6/25) 12. バッチシステム & 分散システム & まとめ (7/2) 13. 予備日 (7/9) 14. 試験 (7/23) 論文も読んでみましょう ACM SOSP USENIX OSDI USENIX ATC USENIX NSDI ACM ASPLOS 2018/4/23 第 3 回オペレーティングシステム 3

4 スレッド Thread of Control プロセス内での一連の実行の流れ 単にスレッドとも プロセス内に複数スレッドを動かすような実行モデル = マルチスレッドモデル 多くの研究がなされたのは マルチスレッドモデルは共有メモリ型並列コンピュータが一般に使えるようになった 1970 年後半から 1980 年代 2018/4/23 第 3 回オペレーティングシステム 4

5 補足 プロセスメモリ data code プロセス スレッド register func2() stack func1() main() スレッド 単一スレッド int func1() {... int func2() {... int main() { thread_create(func1); thread_create(func2); スレッド int func2() {... int func1() { func2(); int main() { func1(); マルチスレッド スレッド スレッドの Context( 管理実体 ) は小さい 切替が高速 但し 共有データのアクセスに注意が必要 プログラムから見るとプログラム中の関数が別の処理として動作 register register register メモリ data code stack main() stack func1() stack func2() 2018/4/23 第 3 回オペレーティングシステム 5

6 スレッドの実現方法 ユーザレベルスレッド ユーザライブラリで実現 カーネルレベルスレッド オペレーティングシステムがカーネルで実現 2018/4/23 第 3 回オペレーティングシステム 6

7 ユーザレベルスレッド ユーザモードで動作するライブラリで実現 多くの場合 setjmp()/longjmp() で実装 フレーム情報の保存と復元 各スレッドは別の起点フレームを保持 カーネルレベルスレッドより軽量 高速のコンテクスト切り換え 大量のスレッド生成が可能 スケジューリングの方針等の変更が手軽 threadc threadb threada 2018/4/23 第 3 回オペレーティングシステム 7 main

8 ユーザレベルスレッド スケジューリングの面倒をカーネルが見ない 処理を横取りできない or 横取りの実現が面倒 入出力等でスレッドが待ち状態になると 同一プロセス内の他の実行可能スレッドが実行不可能 (I/O ブロック ) システムコールライブラリの wrapper 等で対処 実行コアが複数でも並列に実行不可能 threadc threadb threada 2018/4/23 第 3 回オペレーティングシステム 8 main

9 カーネルレベルスレッド カーネル内でプロセスと同様の手法でスレッドを管理 サイズ : スレッド制御ブロック (Thread Control Block)< PCB スレッドはカーネルによるスケジューリングの対象 コンテクストスイッチ等の操作は カーネルモードで実行 カーネルモードとユーザモードの切り替えオーバヘッドが発生 ただし プロセスの切替よりは軽量 メモリ空間の切りえは不要だから 2018/4/23 第 3 回オペレーティングシステム 9

10 マルチスレッド実現モデル Many-to-One( 多対 1 モデル ) 複数のユーザレベルスレッドがカーネルで実現されているスレッドひとつに対応 One-to-One(1 対 1 モデル ) ひとつのユーザスレッドがカーネルで実現されているスレッドひとつに対応 Many-to-Many( 多対多モデル ) 複数のユーザレベルスレッドが複数のカーネルレベルスレッドに対応 2018/4/23 第 3 回オペレーティングシステム 10

11 マルチスレッドのモデル Many-to-One( 多対 1 モデル ) 一つのカーネルスレッドで複数のユーザスレッドを稼働 ライブラリでスケジューリングするため高速 カーネルの処理待ちできるのは 一つのスレッドのみ I/O でブロック process スケジューラ ユーザレベルスレッド 実装 Solaris Green Thread, GNU Portable Thread k カーネルレベルスレッド 2018/4/23 第 3 回オペレーティングシステム 11

12 マルチスレッドのモデル process One-to-One (1 対 1 モデル ) 一つのカーネルスレッドでただ一つのユーザスレッドが稼働 実装 他のスレッドの I/O ブロックと無関係 複数プロセッサで稼働 スレッド生成 管理のオーバヘッドが発生 Linux, Windows k k k k ユーザレベルスレッド カーネルレベルスレッド 2018/4/23 第 3 回オペレーティングシステム 12

13 マルチスレッドのモデル Many-to-Many( 多対多モデル ) 複数のユーザスレッドをその数以下のカーネルスレッドで稼働 カーネルスレッドの数はアプリケーションやマシンに応じて決定 スレッドをどう割り付けるかの制御が必要 process スケジューラ ユーザレベルスレッド k k k カーネルレベルスレッド 2018/4/23 第 3 回オペレーティングシステム 13

14 マルチスレッドのモデル 2 レベルモデル 多対多モデルのバリエーション 一部のユーザレベルスレッドを特定のカーネルスレッドに固定 (pin down) process ユーザレベルスレッド 実装 IRIX, HP-UX, Tru64 UNIX Solaris (before ver. 9) スケジューラ k k k カーネルレベルスレッド 2018/4/23 第 3 回オペレーティングシステム 14

15 Linux Threads POSIX Pthread が提供されている スレッドライブラリの標準規格 (IEEE c) 多くのUnix 系システムで実装 Pthread 実現方法 clone() システムコール 2018/4/23 第 3 回オペレーティングシステム 15

16 マルチスレッドの利点 (1/2) 並列コンピュータ上でのプロセッサの有効利用 共有メモリ型並列コンピュータ上で プロセッサを有効利用が可能 マルチコアを活用可能 マルチコアの時代 半導体集積度が向上したが クロックを上げられない ( リーク電流 & 熱問題 ) 余った回路の使い道としてチップ内に複数プロセッサを搭載 2018/4/23 第 3 回オペレーティングシステム 16

17 マルチスレッドの利点 (2/2) 資源を共有可能 ファイルディスクリプタやメモリ領域の共有 メモリ管理のための構造体の共有 TLB の共有が可能 TLB の共有によりコンテキストスイッチ時に TLB flush が不必要 応答性の向上 例えばマルチスレッド WEB ブラウザでは イメージを読み込んでいるスレッドとユーザの入力を同時に処理が可能 シングルスレッドの場合は select を使った event driven 処理 2018/4/23 第 3 回オペレーティングシステム 17

18 スレッド利用の場面 サーバプロセスの応答性の向上 サーバプログラム 要求ごとにスレッドを生成し 処理と結果の応答を担当 例 :HTTPサーバ それぞれ別のスレッドでリクエストを処理 ウィンドウシステム それぞれ別のスレッドでイベントを待つ処理 2018/4/23 第 3 回オペレーティングシステム 18

19 スレッド利用の場面 CPU 処理と入出力処理の分割 プロセス P の処理を 計算を行うスレッド (Th1) と入出力を行うスレッド (Th2) に分割 Th1 と Th2 は 1 つのプログラムを実行 入出力待ちの間,Th2 は待ち状態になるが Th1 の処理は継続 Th2( 入出力 ) Th1( 計算 ) 依頼 入出力待ち 通知 2018/4/23 第 3 回オペレーティングシステム 19

20 スレッド利用の場面 並列計算 並列計算機を使って高速計算 例 : 行列の掛け算 各行を別スレッドで計算 メモリ空間を共有するので プロセス間通信するより高速 = 2018/4/23 第 3 回オペレーティングシステム 20

21 ( 補足 ) カーネルもマルチ化の時代 従来型のカーネル (SMP) マルチカーネル (AMP) VS OS Image OS Image OS Image OS Image 2018/4/23 第 3 回オペレーティングシステム 21

22 協調プロセス 独立プロセス : お互い影響なし 協調プロセス : プロセス同士で影響 協調プロセスの利点 性能向上 ある仕事を複数のサブタスクにわけて並列実行 ワーカー パイプライン データ並列 モジュラリティ 機能毎にプロセスが作られていれば それらを組み合わせて複雑な処理が実現可能 ps axwwl grep pts/1 more プロセスのリストをとりだし pts/1 デバイスを使用しているプロセスを探し more で表示した例 2018/4/23 第 3 回オペレーティングシステム 22

23 協調プロセス間のやり取り プロセス間でメモリを共有 プロセス間交信機能を提供 シグナルの使用など 2018/4/23 第 3 回オペレーティングシステム 23

24 共有メモリ上の Bounded-Buffer item nextproduced; while (1) { while (((in + 1) % BUFFER_SIZE) == out) ; /* do nothing */ buffer[in] = nextproduced; in = (in + 1) % BUFFER_SIZE; item nextconsumed; while (1) { while (in == out) ; /* do nothing */ nextconsumed = buffer[out]; このプログラムは正しく動かない! 後で説明 out = (out + 1) % BUFFER_SIZE; 2018/4/23 第 3 回オペレーティングシステム 24

25 プロセス間交信 協調プロセスを実現する別の方式 IPC(Inter Process Communication) とも プロセス間でのデータ交換および同期で使用 共有メモリを使用しない通信手段 IPC の基本操作 : 通信路の確立 send(message) receive(message) 通信路の後始末 2018/4/23 第 3 回オペレーティングシステム 25

26 blocking vs nonblocking synchronous vs asynchronous Blocking vs Nonblocking I/O 要求をすぐに処理できない時の対応の仕方による差 すぐに処理できないときの例 Receive/Read 時にデータが未到着 Send/Write 時に OS 内バッファがいっぱい Synchronous vs asynchronous I/O 要求側と I/O 処理側の関係による差 2018/4/23 第 3 回オペレーティングシステム 26

27 blocking vs nonblocking synchronous vs asynchronous blocking nonblocking synchronous receive read データが到着していなければ到着するまで待機 データが到着していなければ 到着しない旨通知 send write 処理が完了するまで待機 処理できない旨通知 asynchronous receive read データが到着たら通知 Send write バッファが一杯にならない限りは nonblocking バッファが一杯の時の挙動は様々 2018/4/23 第 3 回オペレーティングシステム 27

28 シグナル プロセスに対してある事象を通知 Unix や Linux の場合 kill システムコール (2) によりシグナルを通知 シグナルを受け付けるための関数は signal あるいは sigaction システムコール (2) により設定可能 シグナルの種類の確認 $ man 7 signal Unix 系では SIGHUP シグナルを受け取るとデータベースファイルを読み直すといった処理を行うようにプログラムを作ることが慣例 $ kill HUP <process ID> #include <stdio.h> #include <signal.h> int flag; void handle_sighup(int signum, siginfo_t *info, void *p) { printf("handle_sighup is invoked n"); flag = 0; main() { struct sigaction oldsigaction; struct sigaction newsigaction; newsigaction.sa_flags = SA_SIGINFO; sigemptyset(&newsigaction.sa_mask); newsigaction.sa_sigaction = handle_sighup; sigaction(sighup, &newsigaction, &oldsigaction); flag = 1; printf("start flag = %d n", flag); while (flag) { ; printf("start flag = %d n", flag); 2018/4/23 第 3 回オペレーティングシステム 28

29 協調プロセス実現 ここまでで説明した手法 共有メモリ IPC シグナル 2018/4/23 第 3 回オペレーティングシステム 29

30 共有メモリを使ったプロセス同期 背景 複数のプロセスが共有メモリ領域に読み書きするとデータの一貫性がなくなる データ一貫性のために何らかの機構が必要 クリティカルセクション問題 同期のためのハードウェア セマフォア (Semaphores) 古典的同期問題 2018/4/23 第 3 回オペレーティングシステム 30

31 Bounded-Buffer Producer Process Shared Data item nextproduced; #define BUFFER_SIZE 10 int in = 0; typedef struct { while (1) {... while (counter == BUFFER_SIZE) item; ; /* do nothing */ item buffer[buffer_size]; int counter = 0; buffer[in] = nextproduced; in = (in + 1) % BUFFER_SIZE; counter++; Consumer Process item nextconsumed; 以下の式は不可分 (atomic) に実行され int out = 0; るべき while (1) { counter++; while (counter == 0) counter--; ; /* do nothing */ 不可分操作 (Atomic operation) とは その操作が終了するまでは他の命令が nextconsumed = buffer[out]; 実行されないこと out = (out + 1) % BUFFER_SIZE; 次のスライドを参照 counter--; 2018/4/23 第 3 回オペレーティングシステム 31

32 Bounded Buffer count++ はどう実行されるか 1. register1 counter 2. register1 register counter register1 CPU 0 register 10 counter 10 count--はどう実行されるか I. register1 counter II. register1 register1 1 III. counter register1 実行順序によるcounter 値の違い : CPU 1 register I II. III. 1. I. II. III I. II. III. 2018/4/23 第 3 回オペレーティングシステム 32

33 ( 補足 ) マルチスレッドでの競合 int x = 1; int func1() { x=x-1; int func2() { x=x-1; 最後に x はいくつ? -1? プロセススレッド M スレッド 1 スレッド 2 int main() { create_thread(func1); create_thread(func2); return (x); メモリ x=1 code register register register stack stack stack main() func1() func2() 2018/4/23 第 3 回オペレーティングシステム 33

34 ( 補足 ) マルチスレッドでの競合 x = x - 1 の処理は 1. レジスタに x の値を読んできて (load) 2. レジスタに -1 を加えて (add -1) 3. レジスタの中身を x に書き戻し (store) つまり Thread の場合も同じことが起きうる CPU が一つなら起きない? -1 x /4/23 第 3 回オペレーティングシステム 34

35 ( 補足 ) コンテキストスイッチにおける競合 CPU は横取りされる! code (text) 演算ユニット code (text) x を読んだあと 書き戻す前に横取りされたら? data bss heap プログラムカウンタ (PC) レジスタ data bss heap フレームポインタ TCB (PCB) TCB (PCB) 保存と復元 auto 変数リターンアドレス引数など auto 変数リターンアドレス引数など 各領域のアドレス CPU auto 変数リターンアドレス引数など auto 変数リターンアドレス引数など 2018/4/23 第 3 回オペレーティングシステム 35

36 Race Condition( 競合状態 ) Race condition 複数のプロセスが共有メモリを同時にアクセス ( 読み書き ) している時 ( 状態で ) その共有メモリの最終的な値が 最後にその共有メモリのアクセスを終了したプロセスに依存すること 複数のプロセスが先の counter 値を変更している時は Race Condition Race condition を回避するために プロセス同士の同期が必要 2018/4/23 第 3 回オペレーティングシステム 36

37 補足 Th1: x = x - 1; Th2: x = x - 1; 1. load x 2. add store x P1(P2) だけに注目すれば 1,2,3 の順 実行例 : Th1 Th2 Th1 Th2 Th1 Th スケジューリングや時の運で決まる x: -1 x: 0 x: /4/23 第 3 回オペレーティングシステム 37

38 クリティカルセクション問題 Critical Section: 複数のプロセスがある共有メモリ領域を競合するアクセスをしている (read と write) 時 競合アクセスしているプログラム部分 Critical Section 問題 あるプロセスが Critical Section を実行しているとき 他のプロセスにはその Critical Section を実行しないようにさせること Critical Section= きわどい領域 2018/4/23 第 3 回オペレーティングシステム 38

39 クリティカルセクション問題における要求事項 1. Mutual Exclusion( 排他制御 ) もしプロセス Pi がクリティカルセクションを実行しているとき 他のプロセスがそのクリティカルセクションの実行が不可能 2. Progress もしどのプロセスもクリティカルセクションを実行していなくて かつ ある複数のプロセスがクリティカルセクションに入りたいとき どれかは必ず選ばれて実行 3. Bounded Waiting あるプロセスがクリティカルセクションに入りたいと要求してから有限時間でクリティカルセクションに突入 2018/4/23 第 3 回オペレーティングシステム 39

40 ここでの仮定 クリティカルセクション内で実行が中断 (I/O wait やスケジューリング等 ) する場合 マルチプロセッサ上での話 なお シングルプロセッサにおけるクリティカルセクション問題は以下で解決が可能 クリティカルセクションに入る前に割り込み禁止に変更 クリティカルセクションから出る時に割り込み可能に変更ただしクリティカルセクションの中で実行が中断してはいけない ( スケジューラを呼んではいけない ) 2018/4/23 第 3 回オペレーティングシステム 40

41 同期のためのハードウエア (1) Test and Set 命令 メモリ領域に 1 をセットし 昔のメモリ領域の値を返す ( 以下のプログラム参照 ) これを処理をアトミック ( 不可分 ) に処理 boolean TestAndSet(boolean *target) { boolean rv = *target; *target = 1; return rv; 2018/4/23 第 3 回オペレーティングシステム 41

42 共有データ : Test-and-Set 命令を使った Mutual Exclusionの実現 boolean lock = false; Process P i do { while (TestAndSet(&lock)) ; critical section lock = false; remainder section 2018/4/23 第 3 回オペレーティングシステム 42

43 同期のためのハードウエア (2) Swap 命令 2 つの変数の値を不可分に入れ替え void Swap(boolean *a, boolean *b) { boolean temp = *a; *a = *b; *b = temp; 2018/4/23 第 3 回オペレーティングシステム 43

44 Swap 命令を使った Mutual Exclusion の実現 共有データ (initialized to false): Process P i boolean lock; boolean waiting[n]; do { key = true; while(key == true) Swap(&lock,&key); critical section lock = false; remainder section 2018/4/23 第 3 回オペレーティングシステム 44

45 Lock-free と Wait-free を用いた同期 Wait-free な実装 すべてのプロセスが 任意の有限ステップで終わる命令を ほかのプロセスの実行速度に無関係に実行できることが保証されていること つまりクリティカルセクションにおいて test_and_set や swap などを用いた Lock を行う実装は Wait-free ではない Lock-free な実装 いくつかのプロセスが 任意の有限ステップで終わる命令を ほかのプロセスの実行速度に無関係に実行できることが保証されていること Lock-free アルゴリズムでは 飢餓状態になるスレッドが発生してもよい Wait-free な実装では Lock-free になっているが その逆は真ではない 2018/4/23 第 3 回オペレーティングシステム 45

46 Compare and Swap Compare/Swap 命令 対象のアドレスの値をある値と比較し もしそれが同じなら新たな値をそのアドレスに書き込み ( 以下のプログラムを参照 ) これを不可分 ( アトミック ) に処理 int CAS (int *target, int old, int new) { int temp = *target; if (temp == old) *target = new; return temp; shared_obj shared_obj *old_sop, *new_sop, *t_sop; new_sop = malloc( ); do { old_sop = sop; modify(new_sop, old_sop); t_sop = CAS(sop, old_sop, new_sop); while (t_sop!= old_sop); /* modified by others */ free(old_sop); *sop = malloc( ); shared_obj *old_sop, *new_sop, *t_sop; new_sop = malloc( ); do { old_sop = sop; modify(new_sop, old_sop); t_sop = CAS(sop, old_sop, new_sop); while (t_sop!= old_sop); /* modified by others */ free(old_sop); 2018/4/23 第 3 回オペレーティングシステム 46

47 ABA 問題 ABA は略語ではない ABAはある変数の値 ABAは ある変数の値がAからBに変更され 再びAに戻ること shared_obj *old_sop, *new_sop, *t_sop; new_sop = malloc( ); do { old_sop = sop; modify(new_sop, old_sop); t_sop = CAS(sop, old_sop, new_sop); while (t_sop!= old_sop); /* modified by others */ free(old_sop); new_sop = malloc( ); do { 同じメモリ領域が割り当てられている old_sop = sop; modify(new_sop, old_sop); t_sop = CAS(sop, old_sop, new_sop); while (t_sop!= old_sop); /* modified by others */ shared_obj *old_sop, *new_sop, *t_sop; new_sop = malloc( ); do { old_sop = sop; modify(new_sop, old_sop); t_sop = CAS(sop, old_sop, new_sop); while (t_sop!= old_sop); /* some process has modified */ 2018/4/23 第 3 回オペレーティングシステム 47

48 回避策 tag ビットの導入 ABA 問題 例 : ある共有オブジェクトが常に 32 バイトアラインされているとき 下位 5 ビットは常に 0 それを tag として活用 この場合の tag ビットが扱える数は有限なので ABA 問題を完全には解決できていない 2018/4/23 第 3 回オペレーティングシステム 48

49 方法 RCU (Read-Copy Update) RCU 参照側クリティカルセクションでは 共有メモリにはポインタ経由でアクセス システムはそのポインタの使用状況をすべて追跡 変更が加わるたびにコピーが作られ それに対して変更を適用 変更前のデータ構造の読み込みがすべて終了した段階で ポインタを新たに作成したコピーに対するものに変更 2018/4/23 第 3 回オペレーティングシステム 49

50 RCU (Read-Copy Update) rcu_assign() Updater Reader rcu_dereference() synchronize_rcu() call_rcu() rcu_read_lock() rcu_read_unlock() Reclaimer updates into removal and "reclamation" phases rcu_read_lock() Reader が参照側クリティカルセクションに入る前に呼び出し rcu_read_unlock() 参照側クリティカルセクションから抜けるときに呼び出し synchronize_rcu() / call_rcu() Updater コードの終わりと reclaimer コードの終わりをマーク すべての参照側クリティカルセクションの完了をまつ なお 後続の RCU 参照側クリティカルセクションの終了を待つ必要なし rcu_assign_pointer() Updater はこの関数を利用することで RCU で保護されたポインタに新たな値を代入 rcu_dereference() Reader はこの関数を利用して RCU で保護されたポインタを確保 2018/4/23 第 3 回オペレーティングシステム 50

51 特徴 RCU (Read-Copy Update) Wait-free な読み込みが可能 RCU は 古い状態のデータ構造を一定期間そのまま残す必要があるため 大量のメモリを使用する可能性あり 2018/4/23 第 3 回オペレーティングシステム 51

52 Locking の問題点 Transactional Memory メニーコア環境下で効率的に処理を行うことは困難 Compare_and_Swap の問題点 複数の変更がある場合 アルゴリズムが複雑化 Transactional Memory 一部のメモリ領域に対して シリアライズされた 読み込みー変更ー書き込み という操作が可能 Lock-free 2018/4/23 第 3 回オペレーティングシステム 52

53 pthread_mutex_lock(pthread_mutex_t *mutex) The mutex object referenced by mutex shall be locked by calling pthread_mutex_lock(). If the mutex is already locked, the calling thread shall block until the mutex becomes available. This operation shall return with the mutex object referenced by mutex in the locked state with the calling thread as its owner. If the mutex type is PTHREAD_MUTEX_NORMAL, deadlock detection shall not be provided. Attempting to relock the mutex causes deadlock. If a thread attempts to unlock a mutex that it has not locked or a mutex which is unlocked, undefined behavior results. If the mutex type is PTHREAD_MUTEX_ERRORCHECK, then error checking shall be provided. If a thread attempts to relock a mutex that it has already locked, an error shall be returned. If a thread attempts to unlock a mutex that it has not locked or a mutex which is unlocked, an error shall be returned. If the mutex type is PTHREAD_MUTEX_RECURSIVE, then the mutex shall maintain the concept of a lock count. When a thread successfully acquires a mutex for the first time, the lock count shall be set to one. Every time a thread relocks this mutex, the lock count shall be incremented by one. Each time the thread unlocks the mutex, the lock count shall be decremented by one. When the lock count reaches zero, the mutex shall become available for other threads to acquire. If a thread attempts to unlock a mutex that it has not locked or a mutex which is unlocked, an error shall be returned. If the mutex type is PTHREAD_MUTEX_DEFAULT, attempting to recursively lock the mutex results in undefined behavior. Attempting to unlock the mutex if it was not locked by the calling thread results in undefined behavior. Attempting to unlock the mutex if it is not locked results in undefined behavior. 2018/4/23 第 3 回オペレーティングシステム 53

54 pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) The pthread_cond_wait() functions shall block on a condition variable. They shall be called with mutex locked by the calling thread or undefined behavior results. These functions atomically release mutex and cause the calling thread to block on the condition variable cond; atomically here means "atomically with respect to access by another thread to the mutex and then the condition variable". That is, if another thread is able to acquire the mutex after the about-to-block thread has released it, then a subsequent call to pthread_cond_broadcast() or pthread_cond_signal() in that thread shall behave as if it were issued after the about-to-block thread has blocked. Upon successful return, the mutex shall have been locked and shall be owned by the calling thread. pthread_cond_signal(pthread_cond_t *cond) The pthread_cond_signal() function shall unblock at least one of the threads that are blocked on the specified condition variable cond (if any threads are blocked on cond). 2018/4/23 第 3 回オペレーティングシステム 54

55 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 ); 2018/4/23 第 3 回オペレーティングシステム 55

56 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 2018/4/23 第 3 回オペレーティングシステム 56

57 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); 2018/4/23 第 3 回オペレーティングシステム 57

58 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; 2018/4/23 第 3 回オペレーティングシステム 58

59 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; 2018/4/23 第 3 回オペレーティングシステム 59

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

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

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

スレッド

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

More information

スレッド

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

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

05-scheduling.ppt

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

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

POSIXスレッド

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

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

( ) 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

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

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

オペレーティングシステム 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 - OS04.pptx

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

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

Insert your Title here

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

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

01-introduction.ppt

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

More information

マルチコア時代の並列プログラミング

マルチコア時代の並列プログラミング マルチコア時代の 並列プログラミング ~ ロックとメモリオーダリング ~ 中村実 nminoru@nminoru.jp http://www.nminoru.jp/~nminoru/ まずは自己紹介を 電機メーカー勤務のエンジニア Java VM 特に並列 GC JIT コンパイラの研究 開発 Java 系雑誌にときどき寄稿 最近は IA-64 と戯れる日々 趣味で Web に細々とプログラミングのメモを綴る日々

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

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

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

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

More information

CPUスケジューリング

CPUスケジューリング 5-6 プロセス管理と CPU スケジューリング 1 多重プログラミングの概念 CPU を無駄なく使いたい ジョブ A ジョブ B 開始遊休状態 : 入力 開始遊休状態 : 入力 遊休状態 : 入力 遊休状態 : 入力 停止 停止 図 4.1 二つの上部 A,B の実行 2 多重プログラミングの概念 ジョブ A 開始遊休状態 : 入力 遊休状態 : 入力 停止 ジョブ B 待ち 開始遊休状態 : 入力

More information

TFTP serverの実装

TFTP serverの実装 TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった

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

スレッドとプロセス

スレッドとプロセス スレッドとプロセス 本題 : スケジューリング 田浦健次朗 スレッド プロセスの目的 CPU を仮想化 物理的な CPU 数は固定, 少数 ラップトップ, スマホ : 1, 2, 4, 8 くらい サーバ : 数十 ポイント : にもかかわらず数十, 数百のプログラムを立ち上げることができる 個々のプログラムを書く人が明示的な 譲り合い をする必要はない スレッドとは? 制御の流れ (thread

More information

メモリ管理

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

More information

Microsoft PowerPoint - OS03.pptx

Microsoft PowerPoint - OS03.pptx オペレーティングシステム 第 回の管理とスケジューリング http://www.info.kindai.ac.jp/os 8 号館 4 階 N-4 内線 5459 takasi-i@info.kindai.ac.jp オペレーティングシステムの主要概念 (process), タスク (task) 実行中のプログラムプログラム実行に必要な情報 プログラムコード, データ, スタック, プログラムカウンタ,

More information

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

Microsoft PowerPoint - CproNt02.ppt [互換モード] 第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント

More information

memo

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

More information

PowerPoint プレゼンテーション

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

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション コンピュータアーキテクチャ 第 13 週 割込みアーキテクチャ 2013 年 12 月 18 日 金岡晃 授業計画 第 1 週 (9/25) 第 2 週 (10/2) 第 3 週 (10/9) 第 4 週 (10/16) 第 5 週 (10/23) 第 6 週 (10/30) 第 7 週 (11/6) 授業概要 2 進数表現 論理回路の復習 2 進演算 ( 数の表現 ) 演算アーキテクチャ ( 演算アルゴリズムと回路

More information

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ 第 4 回 VHDL 演習 2 プロセス文とステートマシン プロセス文を用いるステートマシンの記述について学ぶ 回路 6 バイナリカウンタ (Fig.4-1) バイナリカウンタを設計し, クロック信号に同期して動作する同期式回路の動作を学ぶ ⅰ) リスト 4-1 のコードを理解してから, コンパイル, ダウンロードする ⅱ) 実験基板上のディップスイッチを用いて, 発生するクロック周波数を 1Hz

More information

memo

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

More information

,,,,., C Java,,.,,.,., ,,.,, i

,,,,., C Java,,.,,.,., ,,.,, i 24 Development of the programming s learning tool for children be derived from maze 1130353 2013 3 1 ,,,,., C Java,,.,,.,., 1 6 1 2.,,.,, i Abstract Development of the programming s learning tool for children

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

マルチスレッドアーキテクチャにおける スレッドライブラリの実装と評価

マルチスレッドアーキテクチャにおける スレッドライブラリの実装と評価 修士学位論文発表 マルチスレッドアーキテクチャにおける システムソフトウェアの研究 A study on Systems Software for Multithreaded Architecture 2004 2/12 東京農工大学大学院工学研究科情報コミュニケーション工学専攻並木研究室 03646109 笹田耕一 1 背景 マルチスレッドアーキテクチャプロセッサ 1 チップ上で複数の命令流 (

More information

10-vm1.ppt

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

More information

プログラミング基礎

プログラミング基礎 C プログラミング 演習 アルゴリズム基礎論 演習 第 10 回 今後の予定 12/22( 月 ) 期末試験 (60 分間 ) 場所 :A1611 時間 :16:20~17:20 課題の最終提出締切 :12/19( 金 ) これ以降の新規提出は評価されない 12/22までに最終状況を提示するので, 提出したのに や になってる人は自分の提出内容や提出先を再確認した上で12/26までに問い合わせること

More information

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

Microsoft PowerPoint - os ppt [互換モード] 2. プロセス 概要 マルチプログラミング プロセスの管理 スケジューリング方式 2008/5/13 プロセス 1 複数の仕事を処理する つの 法 論 執筆メール処理データ整理会議 論 執筆論 執筆論 執筆論 執筆 時間 メール処理メール処理メール処理メール処理 仕事が捗るのはどちらの方法か 人を待たせないのはどちらか データ整理 データ整理 データ整理 データ整理 会議 会議 会議 2008/5/13

More information

本文ALL.indd

本文ALL.indd Intel Xeon プロセッサにおける Cache Coherency 時間の性能測定方法河辺峻田口成美古谷英祐 Intel Xeon プロセッサにおける Cache Coherency 時間の性能測定方法 Performance Measurement Method of Cache Coherency Effects on an Intel Xeon Processor System 河辺峻田口成美古谷英祐

More information

計算機アーキテクチャ

計算機アーキテクチャ 計算機アーキテクチャ 第 11 回命令実行の流れ 2014 年 6 月 20 日 電気情報工学科 田島孝治 1 授業スケジュール ( 前期 ) 2 回日付タイトル 1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現 6 5/19 計算アーキテクチャ

More information

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用 RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項

More information

PowerPoint プレゼンテーション

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

More information

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2015 年度 5 セメスター クラス D 計算機工学 6. MIPS の命令と動作 演算 ロード ストア ( 教科書 6.3 節,6.4 節 ) 大学院情報科学研究科鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ レジスタ間の演算命令 (C 言語 ) c = a + b; ( 疑似的な MIPS アセンブリ言語 )

More information

slide5.pptx

slide5.pptx ソフトウェア工学入門 第 5 回コマンド作成 1 head コマンド作成 1 早速ですが 次のプログラムを head.c という名前で作成してください #include #include static void do_head(file *f, long nlines); int main(int argc, char *argv[]) { if (argc!=

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

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

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

More information

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

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

More information

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint ppt [互換モード] 計算機アーキテクチャ特論 前半 ( 並列アーキテクチャの基本 枝廣 ) 10/1, 10/15, 10/22, 10/29, 11/5, 11/12( 程は予定 ) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列アーキテクチャモデル OSモデル スケーラビリティに関する法則 2012 年 10 月 22 日枝廣

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

IntelR Compilers Professional Editions

IntelR Compilers Professional Editions June 2007 インテル コンパイラー プロフェッショナル エディション Phil De La Zerda 公開が禁止された情報が含まれています 本資料に含まれるインテル コンパイラー 10.0 についての情報は 6 月 5 日まで公開が禁止されています グローバル ビジネス デベロップメント ディレクター Intel Corporation マルチコア プロセッサーがもたらす変革 これまでは

More information

Microsoft PowerPoint - kougi7.ppt

Microsoft PowerPoint - kougi7.ppt 到達目標 スーパバイザモード, 特権命令, 割り込み CPU の割り込みメカニズム 割り込みの種類ごとに, 所定の例外処理が呼び出される スーパーバイザモードに, 自動的に切り替わる 割り込み終了後に 元のモード に戻る ハードウエア割り込みについて 割り込み禁止 割り込み発生時の CPU の挙動 現在の処理を中断 例外処理用のプログラム ( ハンドラともいう ) が起動される プログラム実行の流れ

More information

演算増幅器

演算増幅器 ファイルこれまでにデータの入力方法として キーボードからの入力を用いてきた 構造体を習った際に実感してもらえたと思うが 入力データ量が多いときにはその作業は大変なものとなり 入力するデータを間違えた場合には最初からやり直しになる そこで今回はこれらの問題を解決するため あらかじめ入力データをテキストエディタなどで編集し ファイルとして保存したものを入力データとして用いる方法を習っていく さらにプログラムで作成したデータをファイルに出力する方法も併せて習っていく

More information

計算機システム概論

計算機システム概論 計算機システム概論 3 回目 本日のトピック : 割込みと入出力制御について割込み制御について問題点の明確化割込みとは割込みに対する処理について 入出力制御について入出力装置の接続入出力の操作入出力を効率的に行うための仕組み 1 入出力制御の歴史 OS 誕生のキッカケとなった動機 : プロセッサと入出力装置を同時並行的に動かしたい 実現したいこと入出力処理を行うジョブ ( 実行中のプロセス ) を

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

2006年10月5日(木)実施

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

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

スライド 1

スライド 1 1 システムコールフックを使用した攻撃検出 株式会社フォティーンフォティー技術研究所 http://www.fourteenforty.jp 取締役技術担当金居良治 2 お題目 System Call について System Call Protection System Call Hook 考察 3 System Call とは? ユーザアプリケーションからカーネルのサービスルーチンを呼び出す Disk

More information

スライド 1

スライド 1 RX62N 周辺機能紹介データフラッシュ データ格納用フラッシュメモリ ルネサスエレクトロニクス株式会社ルネサス半導体トレーニングセンター 2013/08/02 Rev. 1.00 00000-A コンテンツ データフラッシュの概要 プログラムサンプル 消去方法 書き込み方法 読み出し方法 FCUのリセット プログラムサンプルのカスタマイズ 2 データフラッシュの概要 3 データフラッシュとは フラッシュメモリ

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

pthreads #pthreads

pthreads #pthreads pthreads #pthreads 1 1: pthreads 2 2 Examples 2 2 pthreads "Hello World" 2 2 3 2: pthreads 5 5 Examples 5 2T1T2 5 3: 8 8 8 Examples 9 / 9 11 You can share this PDF with anyone you feel could benefit from

More information

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

Microsoft PowerPoint - Lec ppt [互換モード] 0 年後学期 アウトオブオーダ実行プロセッサの構成 計算機アーキテクチャ第二 (O) アウトオブオーダ実行プロセッサとバックエンド フロントエンド 命令ウィンドウ : 命令を格納するバッファ 命令ウィンドウ ALU レジスタファイル ALU スケジューラ等 Register Dispatch 命令フェッチ, デコード, リネーミング バックエンド アウトオブオーダ実行プロセッサの構成 ディスパッチ

More information

NUMAの構成

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

More information

cmpsys15w07_os.ppt

cmpsys15w07_os.ppt 情報システム論 第 7 週ソフトウェアシステム Operating System (part I) 根來 均 ソフトウェア (Software) とは プログラムと同義もしくは各種プログラムの総称 ソフトウェアは 記憶装置上などに 電子的にのみ (0/1 で記録された情報として ) 存在する ソフトウェアに対して 物理的に存在する CPU 等の各種装置をハードウェア Hardware と呼ぶ 例えば

More information

Microsoft PowerPoint - OS02.pptx

Microsoft PowerPoint - OS02.pptx オペレーティングシステム 第 2 回 割り込みと OS の構成 http://www.info.kindai.ac.jp/os 38 号館 4 階 N-411 内線 5459 takasi-i@info.kindai.ac.jpkindai ac プログラムの実行中の動作 CPU プログラム キーボードからの入力 遊び 画面への出力 遊び IO 装置 入力処理 出力処理 CPU の遊び時間ができてしまう

More information

RX600 & RX200シリーズ アプリケーションノート RX用仮想EEPROM

RX600 & RX200シリーズ アプリケーションノート RX用仮想EEPROM R01AN0724JU0170 Rev.1.70 MCU EEPROM RX MCU 1 RX MCU EEPROM VEE VEE API MCU MCU API RX621 RX62N RX62T RX62G RX630 RX631 RX63N RX63T RX210 R01AN0724JU0170 Rev.1.70 Page 1 of 33 1.... 3 1.1... 3 1.2... 3

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

Prog1_12th

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

More information

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

Microsoft Word - Cプログラミング演習(10) 第 10 回 (6/25) 3. ファイルとその応用 (3) ファイルの更新 シーケンシャルファイルの更新 シーケンシャルファイルでは, 各レコードが可変長で連続して格納されており, その中の特定のレコードを変更することができない そこで一般的には, マスタファイルからデータを取り出し, 更新処理を行ったあとに新マスタファイルに書き込む 注 ) マスタファイル : 主ファイル, 基本ファイルと呼ばれるファイルで内容は比較的固定的であり,

More information

O(N) ( ) log 2 N

O(N) ( ) log 2 N 2005 11 21 1 1.1 2 O(N) () log 2 N 1.2 2 1 List 3-1 List 3-3 List 3-4? 3 3.1 3.1.1 List 2-1(p.70) 1 1 10 1 3.1.2 List 3-1(p.70-71) 1 1 2 1 2 2 1: 1 3 3.1.3 1 List 3-1(p.70-71) 2 #include stdlib.h

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

memo

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

More information

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

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の 計算機システム Ⅱ 演習問題学科学籍番号氏名 1. 以下の分の空白を埋めなさい. CPUは, 命令フェッチ (F), 命令デコード (D), 実行 (E), 計算結果の書き戻し (W), の異なるステージの処理を反復実行するが, ある命令の計算結果の書き戻しをするまで, 次の命令のフェッチをしない場合, ( 単位時間当たりに実行できる命令数 ) が低くなる. これを解決するために考案されたのがパイプライン処理である.

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 仮想マシン () 仮想マシン 復習 仮想マシンの概要 hsm 仮想マシン プログラム言語の処理系 ( コンパイラ ) 原始プログラム (Source program) コンパイラ (Compiler) 目的プログラム (Object code) 原始言語 (Source language) 解析 合成 目的言語 (Object Language) コンパイルする / 翻訳する (to compile

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

デジタル表現論・第4回

デジタル表現論・第4回 デジタル表現論 第 4 回 劉雪峰 ( リュウシュウフォン ) 2016 年 5 月 2 日 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 4 回 2016 年 5 月 2 日 1 / 14 本日の目標 Java プログラミングの基礎 出力の復習 メソッドの定義と使用 劉 雪峰 ( リュウシュウフォン ) デジタル表現論 第 4 回 2016 年 5 月 2 日 2 / 14 出力 Systemoutprint()

More information

Web Web Web Web Web, i

Web Web Web Web Web, i 22 Web Research of a Web search support system based on individual sensitivity 1135117 2011 2 14 Web Web Web Web Web, i Abstract Research of a Web search support system based on individual sensitivity

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 SAU シリアル アレイ ユニット ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ SAU の概要 UART 通信機能のプログラム サンプル紹介 2 SAU の概要 3 SAU の機能 クロック同期式調歩同期式マスタ動作のみ チャネル 0: 送信チャネル 1: 受信 4 UART

More information

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma HOW DO I ソケットで通信を行うには ここでは以下の手順で説明します ソケットクライアントを作成するデータを送信するデータを受信するソケットクライアントを使用する ソケットクライアントを作成する 1. このコンテンツのサポートファイルの Start フォルダから "UDPClient" プロジェクトを開きます 2. クライアントを動作させるため コンピューターで簡易 TCP/IP サービスを有効にする必要があります

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx 情報処理 Ⅱ 第 12 13回 2011 年 1 月 31 17 日 ( 月 ) 本日学ぶこと ファイル入出力, 標準入力 標準出力 記憶域管理関数 (malloc など ) 問題 ファイルを入力にとり, 先頭に行番号をつけて出力できる? 行列の積を, ファイルを介して読み書き 計算できる? Wakayama University./line 1:Wakayama 2:University 3 2

More information

program7app.ppt

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

More information

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

Microsoft PowerPoint - 第3回目.ppt [互換モード] 第 3 回プログラミング応用 目的ファイル入出力 1. ファイルの概念 2. ファイルの読み込み 3. ファイルの書き込み CPU 演算 判断 ファイルの概念 内部記憶装置 OS 機械語プログラム 入力装置 キーボード 出力装置 ディスプレイ ファイル 外部記憶装置ハードディスク CD-ROM CPU が外部とデータをやり取りするための媒介 printf 関数や scanf 関数でもうすでにファイルのやり取りの基本は学んでいる

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

HotSpot のロック A Peek Under the Hood

HotSpot のロック A Peek Under the Hood HotSpot のロック A Peek Under the Hood David Buck 日本オラクル JJUG ナイトセミナ JVM 特集 自己紹介 バックデイビッド Java SE サステイニングエンジニアリング JVM のバグを直す人 趣味 : プログラミング 予定 はじめに Java ロックの復習 HotSpot のロックの実装 プロファイリング & チューニング その他 はじめに カバーする内容

More information

マクロ(シミュレータコマンド)の使い方

マクロ(シミュレータコマンド)の使い方 マクロ ( シミュレータコマンド ) の使い方 2014 年 11 月 04 日第 1.4.0 版 - 1 - 目次 目次... 1 はじめに... 3 マイコンシミュレータのデバッグ機能... 3 スタートアップコマンドファイル... 5 シミュレータコマンド ( マクロ ) 例... 6 I/O 制御等で外的要因待ちをしている場合 ( その1)... 6 I/O 制御等で外的要因待ちをしている場合

More information

Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バ

Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バ Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バージョン 1.2 で追加されたロック機構を使わない API および バージョン 5.0 で追加された同期化コストが低い

More information

Microsoft PowerPoint - WRR-celinux-upload 1.ppt

Microsoft PowerPoint - WRR-celinux-upload 1.ppt Embedded optimization (2) Starvation free real time scheduler NEC システムプラットフォーム研究所塚本明 (Akira Tsukamoto) WRR スケジュラーの設計 No starvation 従来の Linux スケジュラーではリアルタイムタスク (FIFO,RR) が存在中は 全く通常タスク (OTHER) が選択されない (

More information

プレポスト【解説】

プレポスト【解説】 コース名 : シェルの機能とプログラミング ~UNIX/Linux の効率的使用を目指して ~ 1 UNIX および Linux の主な構成要素は シェル コマンド カーネルです プロセスとは コマンドやプログラムを実行する単位のことなので プロセスに関する記述は誤りです UNIX および Linux のユーザーインターフェースは シェル です コマンドを解釈するという機能から コマンドインタープリタであるともいえます

More information

スライド 1

スライド 1 RL78/G13 周辺機能紹介 ADC A/D コンバータ ルネサスエレクトロニクス株式会社 ルネサス半導体トレーニングセンター 2013/08/02 Rev. 0.00 00000-A コンテンツ ADC の概要 ソフトウエア トリガ セレクト モード 連続変換モードのプログラム サンプル紹介 2 ADC の概要 3 ADC のブロック図 パワー オフが可能 入力 選択 記憶 比較 基準電圧 変換結果

More information

今週の進捗

今週の進捗 Virtualize APIC access による APIC フック手法 立命館大学富田崇詠, 明田修平, 瀧本栄二, 毛利公一 2016/11/30 1 はじめに (1/2) マルウェアの脅威が問題となっている 2015年に4 億 3000 万以上の検体が新たに発見されている マルウェア対策にはマルウェアが持つ機能 挙動の正確な解析が重要 マルウェア動的解析システム : Alkanet 仮想計算機モニタのBitVisorの拡張機能として動作

More information

AN 100: ISPを使用するためのガイドライン

AN 100: ISPを使用するためのガイドライン ISP AN 100: In-System Programmability Guidelines 1998 8 ver.1.01 Application Note 100 ISP Altera Corporation Page 1 A-AN-100-01.01/J VCCINT VCCINT VCCINT Page 2 Altera Corporation IEEE Std. 1149.1 TCK

More information

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の

プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; } Point; 問題 18. 問題 17 の プログラミング方法論 II 第 14,15 回 ( 担当 : 鈴木伸夫 ) 問題 17. x 座標と y 座標をメンバに持つ構造体 Point を作成せよ 但し座標 は double 型とする typedef struct{ (a) x; (b) y; Point; 問題 18. 問題 17 の Point を用いて 2 点の座標を入力するとその 2 点間の距 離を表示するプログラムを作成せよ 平方根は

More information

4.1 % 7.5 %

4.1 % 7.5 % 2018 (412837) 4.1 % 7.5 % Abstract Recently, various methods for improving computial performance have been proposed. One of these various methods is Multi-core. Multi-core can execute processes in parallel

More information

文法と言語

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

More information

スライド 1

スライド 1 知能制御システム学 画像処理の高速化 OpenCV による基礎的な例 東北大学大学院情報科学研究科鏡慎吾 swk(at)ic.is.tohoku.ac.jp 2007.07.03 リアルタイム処理と高速化 リアルタイム = 高速 ではない 目標となる時間制約が定められているのがリアルタイム処理である.34 ms かかった処理が 33 ms に縮んだだけでも, それによって与えられた時間制約が満たされるのであれば,

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

スライド 1

スライド 1 東北大学工学部機械知能 航空工学科 2019 年度クラス C D 情報科学基礎 I 14. さらに勉強するために 大学院情報科学研究科 鏡慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 0 と 1 の世界 これまで何を学んだか 2 進数, 算術演算, 論理演算 計算機はどのように動くのか プロセッサとメモリ 演算命令, ロード ストア命令, 分岐命令 計算機はどのように構成されているのか

More information

ex04_2012.ppt

ex04_2012.ppt 2012 年度計算機システム演習第 4 回 2012.05.07 第 2 回課題の補足 } TSUBAMEへのログイン } TSUBAMEは学内からのログインはパスワードで可能 } } } } しかし 演習室ではパスワードでログインできない設定 } 公開鍵認証でログイン 公開鍵, 秘密鍵の生成 } ターミナルを開く } $ ssh-keygen } Enter file in which to save

More information