DroneCodeを見ていると、
Single Address Spaceという言葉がちょくちょく出てきてなんのことか気になったので調べてみた。
ただ、ぐぐってみると論文っぽいものなどが多く、奥が深い話のようなので、ちゃんと調べるのは諦め将来にゆずりました。本当に触りだけの話です。
SASOS
Single Address Space自体の解説はあまり見つからず、
Single Address Space OperatingSystem(SASOS)というOSの方式については少し解説があったので、
このSASOSの解説を参考にすることにしました。
概要
https://wiki.c2.com/?SingleAddressSpaceOperatingSystem
によると、
In a Single Address Space OperatingSystem (SASOS) all processes run within a single global virtual address space
とある。
すべてのプロセスが単一のグローバル仮想アドレス空間内で実行されるようなOSらしい。
http://www.cse.unsw.edu.au/~cs9242/02/lectures/12-mungi/node3.html
によると
・Unique addresses for all data items
・threads always agree about the address of data
・Sharing by reference
・simply pass pointer
・no marshalling or conversion of data formats required
・on-disk format same as in-memory format
とにかくシンプルにメモリ空間を共有する方式なのかな。
対比:Multiple Address Space
SASOSがなにかを知るために、対比としてMultiple Address SpaceのOS(MASOS)を知るとわかりやすい気がしたので探してみた。
http://www.cse.unsw.edu.au/~cs9242/02/lectures/12-mungi/node2.html
ここの説明がわかりやすかった。
Each address space has own virtual → physical mapping.
プロセス上の仮想メモリは、実際のメモリアドレスに適宜マッピングされる方式
メリット
- メモリ空間を最大限有効活用できる
- プロセス間が独立して干渉しない
デメリット
- メモリ空間上のバラバラにあるので、プロセス間でのメモリ共有が困難