オペレーティングシステム 其の三 20170426
DMA(Direct Memory Access)
どっさりデータを扱うデバイスがほしくなる時がある
→このやり取りはメモリとハードディスク間で行われ、2種類の方法がある
①プログラムI/O方式
CPUを介してメモリとハードディスクのデータ伝送をする
→CPUが忙しくなってほかのことができなくなってしまう
②DMA方式
I/Oデバイスがメモリに直接アクセス!!代わりにDMAコントローラというハードウェアを使う
⇒CPUが最初に送り先アドレスとデータ量を指示する
⇒送信し終わったらI/Oデバイスが割り込みを使ってCPUに伝える
⇒伝送している間、CPUで別のことをすることができる
割り込みについてもう少し応用例を
遅延:割り込み発生からハンドラ終了までの時間
ex)車のブレーキ制御などは遅延がダイレクトに影響してくる
・通常は先に入った方の割り込みハンドラを優先する(通常割り込み)
割り込み禁止→ハンドラが始まった時「禁止」に、終わった時「許可」に
・多重レベル割り込み
⇒優先度の高い割り込みは通常割り込みに割り込む
ここでは命令Bが優先度の高い命令になっている
動作モード
プログラムのミスにより違うアドレスを書き換えてしまうことがある
⇒OSのデータ、プログラムの破たん、ハードウェアの暴走などが起きてしまうことも
⇒ユーザープログラムにできることを制限したい(重要な部分はOSにしかできないようにする)
そこで、4つの(実質2つの)動作モードの出番
権限を持たせることにより実行できるオペレーションを制限していく
・Ring0:ユーザーモード
・Ring3:カーネルモード
メモリ分離
ユーザーが使えるメモリ空間、OSが使えるメモリ空間が分離されている
動作モード、コード、メモリ空間は時間で切り替わる
⇒ではどうやって切り替えをしているのか(ユーザーからカーネル(権限昇格))
⇒割り込みハンドラに移るときにモード切替をしている
疑問:割り込みハンドラでは常にOSが実行しているのか??
システムコール
ユーザー空間からOSに命令を依頼する
⇒ソフトウェア割り込みで呼び出す(あらかじめ汎用レジスタに呼び出す命令に対応した引数を入れておく)
⇒int 0x80 でカーネル空間にシステムコール。命令を依頼することができる。
例:アセンブリ言語でhello,worldを表示するには
//helloworld.s
message : ascil "hello,world "
mov $4,%eax //システムコール番号4=write
mov $1,%ebx //通常出力
mov $message,%ecx
mov $12,%edx //文字数
int 0x80 //システムコール
メディアネットワーク 其の一 20170426
自分はこの講義をとる予定はないのですが、興味はあるのでスライド資料だけもらっていきます。
最初のネットワーク
・TSS(Time Sharing System):一台のコンピュータを複数人でシェアする
・Internet:IPアドレスに準拠、LANをつなぐネットワーク、4つのプロトコルに準拠
・プロトコル(セキュリティにとっては肝心要)
⇒複数で仕事をするときの取り決め(電話、手紙、入試問題作成などにもプロトコルはある。別にネットワーク専門用語というわけではない)
・ネットワークは最終的に「複数で賢く動作するネットワーク」を目指している
インターネットの4つの層について(要コンピュータネットワーク)
IPプロトコル(Internet層)
・IPアドレスを取得(IPアドレス:送信先のマシンを特定するためのアドレス)
・ルーティング(データの伝送路を選ぶ)
・パケット通信でデータを送る(データを小分け(パケット)にして運ぶことで軽くする)
・プロセスを指定する(ポート番号指定)
・データを誤りなく届ける(データ制御、再送処理、重複処理、フロー制御など)
⇒プロセスとプロセスをつなぐ
Application層
⇒IPアドレスをURLに変換
・送受信の方法
-ユーザーがURL指定
-ウェブサーバがページのデータを送る
-ウェブクライアントがウェブページを表示
Network Interface層
・ARP:隣のマシンとの電気信号の受け渡し
web通信の例
⇒TCPは正確に通信するために必要なもの
⇒UDPは通信速度に重きを置くことによって、主に電話で使用されているプロセス
⇒こんな風にパターン化させてしまうと通信の仕組みを簡単にできる。現に、IP以下の層はほとんどがこのように作られている。
web閲覧時
①ブラウザにURL入力→DNSによりIPアドレスに変換される
②サーバに通信
④HTTPプロトコルで特定のデータの送受信
⇒HTTPプロトコルの主要なものは、データを要求するGET、応答しデータを渡す200、400、閲覧者からの情報をサーバーに取り込むPOSTなどがある