質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

Q&A

解決済

3回答

2834閲覧

セグメント方式

strike1217

総合スコア651

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

2グッド

1クリップ

投稿2016/09/24 03:22

メモリの分割にセグメント方式というものがあると思います。

フラットメモリモデルとページ化セグメント方式とは何が違うんですか??

そもそもなぜメモリを分割して管理するのでしょうか?

散々調べてのですが、よくわかりません。
教えてください。

kazuyakazuya, maisumakun👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

回答は他の人がしているのでアドバイスを。

散々調べてのですが、よくわかりません。

基本的なことを理解したいのなら、分からないところを調べるというアプローチでなく、ちゃんとした本をきっちり読むという方が良いと思います。

本やインターネットのサイトによって情報が違うので、矛盾がかなり多いのです。

入門書のたぐいは良くないです。大学の情報工学科のOSの教科書的な本が良いと思います。
網羅的に理解したいのなら、2000年以降に出た本の他に、1980年代の本も読むと良いかもしれません(図書館にあると思います)。

投稿2016/09/24 10:50

otn

総合スコア84645

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2016/09/24 10:52

ありがとうございます。
guest

0

ベストアンサー

こんにちは。

フラットメモリモデルとページ化セグメント方式とは何が違うんですか??

それは、仕様書と実装方式のような違いです。
フラットメモリモデルはメモリを「フラット」にアクセスできるという仕様に当たります。
ページ化セグメント方式は仮想メモリを実装するための方式の1つです。
ページ化セグメント方式でフラットメモリモデルにすることもできれば、そうでないようにすることも可能です。

「フラット」の意味は人によって文脈によって異なりますが、私は1つのプロセスから見てアドレスが異なる時は異なる物理メモリをアクセスできるようなメモリ空間の使い方と理解してます。
異なるアドレスに同じ物理メモリを割り当てることも可能ですし、インテル8086のセグメント方式はその1つです。

そもそもなぜメモリを分割して管理するのでしょうか?

現在のPCのように巨大なメモリを搭載しているコンピュータでメモリを一塊で管理したら、不便ですよ。
OSもアプリも全部1つのメモリ空間で動作するのですから、あるアプリが他のアプリのメモリを変更できますし、OSのメモリさえ変更できてしまいます。(Windows 3.1系列のWindowsはそのようなものでした。)

それらを防ぐためには物理メモリを分割して、プロセスやカーネル・モード・プログラムの必要なものだけがアクセスできるようにすることで安定性の高いシステムを構築できます。
プロセスA用に割り当てた物理メモリを、プロセスB用の論理アドレス空間には割り当てないという単純な方法が良く使われます。

投稿2016/09/24 04:16

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2016/09/24 04:27

プロセスごとに分割しているということでしょうか?? セグメント→大きさがバラバラ。(プロセスの仮想空間がバラバラ) ページ→大きさが同じ。(プロセスの仮想空間が一定) ということでしょうか?
Chironian

2016/09/24 05:09

メモリをセグメント単位で管理→1塊のメモリ・サイズは自由 メモリをページ単位で管理→1塊のメモリ・サイズは原則同じで2のべき乗 > プロセスごとに分割しているということでしょうか?? 一般には1つのプロセスに複数のメモリを割り当てますので、プロセス単位でメモリを分割してるわけではないです。 1つのプロセスに1ページしか割り当てないのはあまりに効率が悪すぎます。 (最もサイズの大きなプロセスに合わせて1ページ・サイズを決めて、小さいプロセスにもその巨大なサイズを割り当てることになります。) 1つのプロセスにぴったりサイズで1セグメントしか割り当てないことは理論的には可能ですか、物理メモリのフラグメント化が進行しやすいので現実的ではないと思います。
strike1217

2016/09/24 05:31

正直、メモリ管理のところが一番難しいです。 本やインターネットのサイトによって情報が違うので、矛盾がかなり多いのです。 そもそも、仮想メモリ空間と物理メモリ空間の大きさは等しいのですか?(スワップは考慮しないで) メモリの変換は論理アドレスと物理アドレスで1対1のはずです。 「塊で分割している」ってだけで「塊でメモリ変換をしている」というわけではないですよね?
Chironian

2016/09/24 06:18

> 本やインターネットのサイトによって情報が違うので、矛盾がかなり多いのです。 時代時代で大きく進化した部分ですので、その情報が書かれた時代や対象で異なると思います。 また、仮想記憶という言葉は範囲が広いです。キャッシュ・メモリ→メイン・メモリ→HDDのように2次記憶3次記憶という流れの仕組みも仮想記憶と呼ばれます。仕組み的にも重なる部分があるので混乱し易いと思います。 メモリに関する話は、CPUとアドレスバスの仕組みをまずは学ばれた方が良いかも知れません。CPUコアから出てきたアドレスを変換して物理メモリへ渡すのがMMUです。 > 仮想メモリ空間と物理メモリ空間の大きさは等しいのですか? パソコンだけに着目しても時代時代で結構状況が異なります。 長い間にメモリは極端に安くなりました。 昔は16本のアドレスを埋めるほどのメモリは何十万円もかかっていたので16本あればPCには十分でした。メモリが安くなって64KBytesを超えるメモリの搭載が現実的になってもまだアドレスバスが16本しかない時期がありました。その時は物理メモリの方が大きく、どうやって不足するアドレスバスで大きなメモリをアクセスするのか、難題でした。 その次がインテル8086の20本のアドレスバスの時代がそこそこありました。当初は十分でしたが、その後アドレスバスが不足ししまた。メモリが安くなるのとアドレスバスが増えるのの追いかけっこが何回かあったように記憶してます。 > メモリの変換は論理アドレスと物理アドレスで1対1のはずです。 そんなことないですよ。 アドレスバスとメモリアクセスの仕組みを学べば理解できると思います。 一部のアドレス信号をデコードしなければ、そのアドレス信号の値がなんだろうと同じ物理メモリをアクセスします。つまり、複数の論理アドレスが1つの物理メモリに割り当てられます。 > 「塊で分割している」ってだけで「塊でメモリ変換をしている」というわけではないですよね? 変換しているのはアドレスです。 変換対象アドレスの範囲とそれを変換する先を決めます。 この範囲の開始とサイズを自由に決めることができるのがセグメント方式で、開始が2のべき乗でサイズも2のべき乗の固定長なのがページング方式です。
strike1217

2016/09/24 06:30

なるほど・・・ ありがとうございます。
guest

0

メモリ分割にはいくつか利点があると思いますが
私が一番メリットだと思うのは、メモリ保護ができる事です。

メモリは1つのテーブルに

・OSの処理分の書類 ・Excel処理用の書類 ・Webブラウザ用の書類

と言った紙1枚ずつ並べて置いて使っていくようなイメージでとらえられると思います。

しかし、プログラムは人の作る物なので、Excelの書類(紙)の上に間違えて、Webブラウザ用の
書類(紙)を重ねて置いてしまう事がよくあります。

そうするとExcel用の書類は壊れて使えなくなってしまいます。

これが、Excel用の書類の場合はその書類が読めなくなるだけなのでまだ良いのですが、
OSの書類の上に書いてしまった場合は、OSが正常に動作しなくなります。
そうすると、何が起こるか分からなくなります。

これを防ぐ為に

・OSの処理分の箱 ・Excel処理用の箱 ・Webブラウザ用の箱

を作り、それぞれのプログラムは、それぞれの箱の中で
処理するようにしましょう。
という仕組みを提供するのがメモリ分割の役割の一つです。

昔はこの保護が貧弱だったので、ちょっとプログラムを
間違えるとすぐ、OSのメモリ領域を壊してしまい、フリーズ
してました...

投稿2016/09/24 03:50

xexnteratail

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

strike1217

2016/09/24 03:52

ということは・・・・ プロセスごとに分割しているということでしょうか?? セグメント→大きさがバラバラ。 ページ→大きさが同じ。 ということでしょうか?
xexnteratail

2016/09/24 04:59

そうですね。 大まかにはそのつかみでいいと思います。 ただ、ページの場合は1つの箱をページというより小さな単位で 分割し、その上に仮想の箱(レンズかな。)を置いて、正常な位置 に寄せ集めて見せている。と言う事があります。
strike1217

2016/09/24 05:42

ふむふむ・・・ なるほど、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問