マエカワの備忘録的な何か

思い立ったが吉日

オペレーティングシステム 其の三 20170426

DMA(Direct Memory Access)

 どっさりデータを扱うデバイスがほしくなる時がある

  →このやり取りはメモリとハードディスク間で行われ、2種類の方法がある

   ①プログラムI/O方式

    CPUを介してメモリとハードディスクのデータ伝送をする

     →CPUが忙しくなってほかのことができなくなってしまう

   ②DMA方式

    I/Oデバイスがメモリに直接アクセス!!代わりにDMAコントローラというハードウェアを使う

     ⇒CPUが最初に送り先アドレスデータ量を指示する

      ⇒送信し終わったらI/Oデバイス割り込みを使ってCPUに伝える

    ⇒伝送している間、CPUで別のことをすることができる

 

割り込みについてもう少し応用例を

 遅延:割り込み発生からハンドラ終了までの時間

  ex)車のブレーキ制御などは遅延がダイレクトに影響してくる

 

 ・通常は先に入った方の割り込みハンドラを優先する(通常割り込み)

   割り込み禁止→ハンドラが始まった時「禁止」に、終わった時「許可」に


f:id:maekawa_yoshimiki_1119:20170428161714j:image

 

 ・多重レベル割り込み

   ⇒優先度の高い割り込みは通常割り込みに割り込む


f:id:maekawa_yoshimiki_1119:20170428161659j:image

 ここでは命令Bが優先度の高い命令になっている

動作モード

 プログラムのミスにより違うアドレスを書き換えてしまうことがある

  ⇒OSのデータ、プログラムの破たん、ハードウェアの暴走などが起きてしまうことも

   ⇒ユーザープログラムにできることを制限したい(重要な部分はOSにしかできないようにする)

 そこで、4つの(実質2つの)動作モードの出番

  権限を持たせることにより実行できるオペレーションを制限していく

   ・Ring0:ユーザーモード

   ・Ring3:カーネルモード

 

メモリ分離

  ユーザーが使えるメモリ空間、OSが使えるメモリ空間が分離されている


f:id:maekawa_yoshimiki_1119:20170428161537j:image

 

 動作モード、コード、メモリ空間は時間で切り替わる

  ⇒ではどうやって切り替えをしているのか(ユーザーからカーネル(権限昇格))

   ⇒割り込みハンドラに移るときにモード切替をしている


f:id:maekawa_yoshimiki_1119:20170428161624j:image

 

 疑問:割り込みハンドラでは常にOSが実行しているのか??

 

システムコール

 ユーザー空間からOSに命令を依頼する

  ⇒ソフトウェア割り込みで呼び出す(あらかじめ汎用レジスタに呼び出す命令に対応した引数を入れておく)

  ⇒int 0x80 でカーネル空間にシステムコール。命令を依頼することができる。


f:id:maekawa_yoshimiki_1119:20170428161844j:image

 

例:アセンブリ言語で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つのプロトコルに準拠

 ・プロトコル(セキュリティにとっては肝心要)

   ⇒複数で仕事をするときの取り決め(電話、手紙、入試問題作成などにもプロトコルはある。別にネットワーク専門用語というわけではない)

 ・ネットワークは最終的に「複数で賢く動作するネットワーク」を目指している


f:id:maekawa_yoshimiki_1119:20170428151707j:image
f:id:maekawa_yoshimiki_1119:20170428151734j:image

 

インターネットの4つの層について(要コンピュータネットワーク)

 IPプロトコル(Internet層)

  ・IPアドレスを取得(IPアドレス送信先のマシンを特定するためのアドレス)

  ・ルーティング(データの伝送路を選ぶ)

  ・パケット通信でデータを送る(データを小分け(パケット)にして運ぶことで軽くする)

 

 TCPプロトコル(Transport層)

  ・プロセスを指定する(ポート番号指定)

  ・データを誤りなく届ける(データ制御、再送処理、重複処理、フロー制御など)

   ⇒プロセスとプロセスをつなぐ

 

 Application層

  ・DNSを使ってIPプロトコルを人間にわかりやすく変換する

   ⇒IPアドレスをURLに変換

  ・送受信の方法

    -ユーザーがURL指定

    -ウェブサーバがページのデータを送る

    -ウェブクライアントがウェブページを表示

 

 Network Interface層

  ・ARP:隣のマシンとの電気信号の受け渡し

 

 web通信の例f:id:maekawa_yoshimiki_1119:20170428151743j:image

  ⇒TCP正確に通信するために必要なもの

  ⇒UDP通信速度に重きを置くことによって、主に電話で使用されているプロセス

 

 ⇒こんな風にパターン化させてしまうと通信の仕組みを簡単にできる。現に、IP以下の層はほとんどがこのように作られている。

 

 web閲覧時

  ①ブラウザにURL入力→DNSによりIPアドレスに変換される

  ②サーバに通信

  ③TCPプロトコルによって通信の信頼性を確保

  ④HTTPプロトコルで特定のデータの送受信

   ⇒HTTPプロトコルの主要なものは、データを要求するGET、応答しデータを渡す200、400、閲覧者からの情報をサーバーに取り込むPOSTなどがある