Built To Last

廃れない計算機科学の知識体系を残す

Entries from 2020-01-01 to 1 year

メモリの仮想化① 〜導入

OS

前回までは、OSを理解する上で重要な三要素の一つの「仮想化」を、CPUに適用した際、必要となるポリシーや設計基盤について議論してきた。 今回からは、メモリの仮想化について議論する。 メモリを仮想化することの目的は、 OSを理解するための3つの構成要素…

CPU仮想化④ 〜複数あるプロセスの中でどれを優先すべきか?ーCFS編

OS

前回に引き続き、複数あるプロセスにどのようにCPU時間を振り分けるか、のルール(ポリシー)としてメジャーな手法を取り上げよう。今回は、Linuxで用いられているCompletely Fair Schduler(CFS)である。 スケジューリングにおいて重要なことは公平性とそ…

CPU仮想化③ 〜複数あるプロセスの中でどれを優先すべきか?ーMLFQ編

OS

今回は、CPUの仮想化を理解する上での2つの観点のうち、2つ目の「複数あるプロセスの中でどれを優先すべきか?」、というポリシー(方針)の話をしようと思う。 ここで、良いスケジューラを実装するために重要なこととして、パフォーマンスの他に公平性(F…

CPU仮想化② 〜どのようにtime sharing of CPUを行うか?〜

OS

今回は、「どのようにTime Sharing of CPUを行うか」という点について考えていこうと思う。 「どのようにTime Sharing of CPUを行うか」を理解するということは、「Context Switchがどう行われるか」を理解することである。 Context Switchの話に移る前にい…

CPU仮想化① 【導入】

OS

CPUの仮想化の話に入る前に、プロセスの話をしなければならない。 プロセスとは、プログラムを実行した際にOSに作られる抽象物のことである。プロセスとプログラムは一対一の関係とは限らず、一つのプログラムから複数のプロセスをつくることができる。実際…

OSを理解するための3つの構成要素

OS

Q. 「OSとはなにか?」 A. OSとは、CPUやメモリ、ディスクなどのリソースを仮想化(Virtualize)することで、コンピュータを使いやすくするものである。 上図のように、異なる(または同一の)複数ユーザが1つのコンピュータを扱うときに、ユーザが使うメー…

このブログについて

当ブログの目的は、「廃れない計算機科学の知識体系を残すこと」です。 そのため、当ブログで扱われる分野は、OS、ネットワークなどの低レイヤ、またデータ構造、アルゴリズムに集中します。セキュリティやAIも扱っていくつもりです。 同理由で、各プログラ…