気合でなんとか

@ningensei848が頑張った記録

2017秋学期 月曜 コンピュータシステムとネットワーク 6週目

前回までのあらすじ

ningensei848.hatenablog.com

気づけば十一月ももう半分に…十二月に入ったらもっと時が加速するのだと思うと憂鬱だしさらに気温が下がるってものちょっと早急に対策を練らないとヤバイヤバイ……

 

シラバスを参照すると、今回からは「インターネットとは」なんぞやを問うていくようです。なんだそれは…

 

現在

基本ソフトウェア_制御プログラムについてやっているらしい(p90)

 

……ということはまだ6章に入っていないのでは?

 

本日のメニュー

教科書通りにp92‐

教科書p92

主記憶装置管理:タスクの生成から消滅までに、そのタスクのためのメモリを確保および保護、解放する機能を備える。

仮想記憶=物理的には存在していない主記憶装置を、プログラムから見て実際にあるように見せる機能。足りない分はHDD等で補う。→処理速度低下の原因となる。

スワッピング方式、セグメント方式
事実上、現在のOSでは使われてない

ページング方式:現在の主流
管理する主記憶を数KB単位のページに分けて、その単位で補助記憶装置な仮想領域に読み書きすることが一般的(最近使われていないページから書き出す:LRU,Least Reacently Used)

 

教科書p93

I/Oドライバはデバイスドライバーとも呼ばれる
デバイスドライバーとは、各装置(デバイス)それぞれに固有の制御機能を実現したソフトウェア
タスク管理機能と連携のための機能も含まれる(入出力待ちになったらタスクを切り替える、など)

 

教科書p94

言語処理プログラム

人が書いたプログラムを計算機に実行させるために必要となるソフトウェア(プログラム)

機械語(言語処理プログラムが不要???)
アセンブリ(アセンブラ言語)
-----ここまでCPU依存-----

高級言語…CPUに依存しない共通の書き方で、人間にわかりやすい記述を可能にした言語


を処理するプログラムは?

アセンブラ:アセンブリ言語から機械語
コンパイラ:高級言語から機械語
インタプリタ:プログラムの記述を解釈し、その指示に従って実行するソフトウェア

コンパイラが出力する機械語が、現実には存在しない仮想的な計算機の機械語で、その機械語を解釈および実行するという中間的な方式もある。Javaなど。

 

関連用語

  • ソースコード:人が書いたプログラム
  • オブジェクトコード:コンパイラ等が出力した機械語のプログラム
  • リンカ:複数のプログラムを結合してひとかたまりのプログラムとみなすようにするもの

サービスプログラム
どこまでがOSの一部としてのサービスプログラムとみなすのか?については様々な観点・議論がある.
GUIは今ではサービスプログラムではなく、むしろ制御プログラムの一部として組み込まれているとみなされることも多い


コマンドプロンプト
一般にはシェルと呼ばれる。キーボードから入力された命令を実行して、その結果を文字で表示する。昔ながらのCUI(CLI)での使用を可能にする。コマンドインタプリタとも呼ばれる。ある程度は高級言語のような制御構造や変数も使えることが多い。

 

定着度確認小テスト

1.10進法の「0.4」を2進法に変換せよ。ただし、小数部は5ビットで表すものとし、5ビットに収まりきらない場合は6ビット目を「0捨1入」して丸めること。
解答:0.01101

解法:整数値の場合は変換したい数を2で割っていた。小数値を変換する場合は変換したい数に2をかけていく。小数部分に2をかけて、商の小数部分を抜き出してそれを繰り返す。最終的に取り出せる小数部分が0になれば変換完了である。導き出された商の整数部分を一つ目の式から順に並べることで2進数であらわすことができる。ただし、循環小数になり操作が完了しない場合もある。

0.4×2 = 0.8 : => 0

0.8×2 = 1.6 : => 1

0.6×2 = 1.2 : => 1

0.2×2 = 0.4 : => 0 (※循環小数になってしまったので打ち止め)

よって、0.4は2進法であらわすと0.011001101100110......≒0.01101となる。

 


2.1.の結果を10進法に変換し、その値と0.4の差、すなわち誤差を求めよ。
解答:1/160

解法:0.01101(2)を十進法であらわすと1/4+1/8+1/32=1/32(8+4+1)=13/32

0.4 = 4/10 , 両者の差を求めると、13/32 - 4/10 = 1/160(65 - 64) = 1/160

 


3.授業のRAID5の説明例に倣って、8ビットの値「01101101」を「0110」と「1101」の4ビットずつに分けて、ビット毎の排他的論理和(Exclusive OR)をとったときの値を求めよ。
解答:わからん

 

 

4.そして、その3つの4ビットの値のうち、「0110」がなくても、残りの2つからその値が求められることを確認せよ。
1101 + ○○○○ = 0110 (解答欄と同じ値が入るはず)

解答:ぜんぜんわからん!

 

 

5.回転数12000rpmのハードディスク装置のディスクが1回転する時間(秒)を求めよ。
解答:1/200

解法:rpmから一秒あたりの回転数を求める。÷ 60 すると200rpsとなる。子の逆数とって、1/200


6.そして、そのディスクの平均回転待ち時間を示せ(秒)。
解答:1/400

解法:平均の待ち時間とは、ディスクを読み取るヘッドが回転のうちどの位置にいるかがカギとなる。結局は、「ヘッドの直下にデータがある(必要な回転は0)」と「←の状態から一つずれた位置にデータがある(からもう一周しないといけない=必要な回転数は1)」の2つのパターンを考えればよい。つまり、平均回転待ち時間は(0 + 1)×1/2 = 1/2;ディスクを1回転する時間の半分ということになる。 

よってこのディスクの平均回転待ち時間は1/200 × 1/2 = 1/400

 

授業のRAID5の説明例に倣って8ビットの値「01101101」を「0110」と「1101」の4ビットずつに分けてビット毎の排他的論理和(Exclusive OR)をとったときの値を求めよ。

 

そして、その3つの4ビットの値のうち、「0110」がなくても、残りの2つからその値が求められることを確認せよ。

 

 このふたつがぜんぜんわからん……取り敢えず今日のところは保留にしておく。授業の時に開設を聞くか、それでもなければ自分で訊きに行くことにする。

 

 

次回

まだ