オペレーティングシステムの概要(II)

オペレーティングシステムのメモリ管理

メモリ管理および仮想メモリ管理を含むメモリ管理。
このようなスイッチング技術、連続モードと不連続配信管理物流管理(ページング、セグメンテーション、ページ・セグメントタイプ)を含む概念にメモリ管理プログラム。
仮想メモリの概念、デマンドページング管理、ページ置換アルゴリズム、ページ配分戦略、ワーキングセットを含む仮想メモリ管理。

のは、メモリが何であるかを見てみましょう:

メモリは、CPUに実行されるコンピュータシステム、メモリ内のプログラムのみの重要な一部であり、メモリ性能がに直接影響を持っているので、スペースの実行に必要なデータやプログラムを実行するCPUは、メモリからフェッチされ、当社コンピュータのパフォーマンスの品質。

私たちは、メモリの分類について話すことができるメモリについて話しました:

メモリ割り当ては、関数キャッシュ(キャッシュ)、メインメモリ(RAM)、外部メモリ(外部メモリ)によって分割することができます。

キャッシュメモリ(キャッシュ):キャッシュがデータおよび命令に必要なCPUを記憶し、送信するための責任があるキャッシュと二次キャッシュ、CPUの内部に位置するキャッシュメモリに分割され、二次キャッシュとメインメモリ内に配置CPU (DRAM)との間で、2つの役割はCPU、キャッシュとは、データを格納することができないとき必要とされるものを格納することです。CPUは二次キャッシュから見つけることができませんを探して、その後を見つけるために、キャッシュから始まり、そして、データを読み取り、そして時には3つのキャッシュから探すために必要がある場合。共通分母は、より高速なメモリよりもCPUよりもスピードを読んで遅くなりますメモリは、読み取りと書き込みの速度ので、少ないメモリ容量と高価格。キャッシュはCPU速度がはるかに高速であるよりも、矛盾と一致していないCPU速度やメモリアクセス速度を解決するために主に表示され、それはCPUを待つには長い時間がかかるだろうメモリへのデータの到着や書き込みデータ。

メインメモリ(RAM):私たちは、携帯電話やコンピュータのメモリを実行するメインメモリであることを特徴とする、プログラムは、メインメモリに外部メモリのデータ交換にメインメモリ保存された内部を実行するには、CPU実行時間の多くを使用する必要がありますデータは、小型で、特性を読み書きするために高速である。4G-8Gサイズ概して。

外部メモリ(外部メモリ):外部メモリは、私たちは、多くの場合、システムプログラムや大きなデータファイルとデータベースを格納するための責任があるハードディスクは、大容量、低速度によって特徴づけされていることを言うことです。

私たちのカテゴリのメモリにより、次のカテゴリに分けることができます。

RAM
RAM(ランダム・アクセス・メモリ、ランダムアクセスメモリ)。かかわらず、コンテンツ記憶部の位置を必要に応じて自由に削除または保存することができ、かつメモリのメモリセルのアクセス速度。コンテンツを格納し、電力が失われたそのようなメモリは、それが主に短い時間のためのプログラムを格納するために使用されます。別の情報を格納する、ランダム・アクセス・メモリは、スタティックランダムアクセスメモリ(スタティックRAM、SRAM)およびダイナミックランダムアクセスメモリ(ダイナミックRAM、DRAM)に分割されています。

SRAMの
RAM(RAM静的、スタティック・ランダム・アクセス・メモリ)、リフレッシュ回路を必要とせず、データが失われず、一般的に行と列アドレスを多重化されていないが。しかし、統合の彼の比較的低い程度は、大容量メモリには適していませんが、一般的にプロセッサのキャッシュ内部で使用されています。
SRAMは、実際には非常に重要なメモリ、その使用の広い範囲です。SRAMは高速で読み、データの整合性を維持するためにリフレッシュし、非常に高速です。内部SRAMは、データを記憶するために双安定回路の形態で使用されます。したがって、SRAMの回路構成が非常に複雑。同じ容量で製造SRAMは、より多くのDRAMのコストよりも高くなっています。このため、唯一の彼らの開発が制限されています。従って、実質的に唯一のCPUで使用される本SRAMキャッシュと内蔵L2キャッシュ。SRAMは、ネットワークサーバやルータのほんの数に使用することができます。

A DRAM
ダイナミックRAMは、一定の間隔でダイナミック・ランダム・アクセス・メモリは、データを保存するために、データを更新する必要があります。そして、ページモードを持つ多くのアドレス多重化、の仲間入り。SDRAMはそのうちの一つです。

SDRAM
SDRAM(シンクロナスDRAM、シンクロナスダイナミックランダムアクセスメモリ)、即ち、同期クロックにデータを読み書きする必要があります。線形配置ない記憶ユニットがページングされます。
DRAMとSDRAMは、デュー・プロセスの問題、SRAMよりも大容量を実現しています。しかし、読書と高速SRAMなどと書き込み。
SDRAMの一般的には、メモリ内で使用されている製品を埋め込まれました。コンピュータのメモリは、随時、とてもリフレッシュ回路が存在する必要があり、このRAMに使用されるDDR SDRAMと呼ばれる、それは動的であるため、その統合は、非常に高いデータをリフレッシュする必要があります。

ROM
読み出し専用メモリ、ROMの一般的。
コンピュータ、BIOSの初期の開発では、ROM(読み出し専用メモリ、ROM)に格納されています。コンテンツのみを読み取ることが可能な特別な方法に工場内で燃焼することが製造工程におけるROMに内蔵ROM情報は、ユーザが書き込みデータが正しいことを確認することができ、燃焼内部一旦、変更することができませんあなたは、任意の変更を加えることはできません。情報がエラーを持っていないと判明した場合、のみ、再作られたものをあきらめないでください。ROMは、高いコストのために、一般に大量のアプリケーションの場合に使用される、生産ラインで製造されます。

PROM
それのメモリを搭載したOPTの中にあるものを比較的低コストのマイクロコントローラがこれであるかのようにプログラム可能な読み出し専用メモリは、非常に少ないと、今一度だけ書き込むことができ、間違った廃棄されるようにしている、と。

EPROM 
EPROM(消去可能プログラマブルROMは、消去可能なプログラマブルROM)チップ消去、書き込みが繰り返されることができるが、溶液のみPROMチップ欠点追記することができます。
EPROMチップは、ガラス窓が窓を通して、集積回路は、紫外線がアパーチャ照明チップを介して消去することができ、その中に見ることができ、開放され、その前面側に、セラミックパッケージを明らか特徴を有しています内のデータ、およびチップ消去動作は、EPROMの消しゴムを使用しています。

EEPROMEEPROM(電気的消去可能プログラマブルROM、電気的消去可能プログラマブル読み出し専用メモリ)は、データの種類は、メモリチップの停電後に失われません。読み出し専用メモリEEPROMは、コンピュータまたは専用デバイスと再プログラミングの既存の情報を消去することができ、通常の電圧(リライタブル)、より高い効果によって消去及び再プログラムすることができ、ユーザによって変更することができます。チップEPROMとは異なり、EEPROMは、それが今より多くのメモリよりも使用され、変更することなく、コンピュータから離れなど24CXXシリーズのEEPROMすることができます。
再プログラミングが頻繁にすることができたときに、コンピュータが使用されているときにEEPROMには、EEPROMの寿命が非常に重要な設計上の考慮事項パラメータです。

フラッシュメモリ(フラッシュ)
、フラッシュメモリ(FLASH)は、不揮発性メモリ、すなわち、電力データが失われることはありませんです。バイト単位でデータの書き換えなどのフラッシュRAM(ランダムアクセスメモリ)とは異なり、そのため、そのためには、RAMを置き換えることはできません。   
フラッシュメモリカード(フラッシュカード)は、一般的に、デジタルカメラ、ハンドヘルドコンピュータ、MP3や記憶媒体などの他の小型デジタル製品に使用されるメモリに格納された電子情報へのフラッシュメモリ(フラッシュメモリ)技術を使用することで、そのカードのように、小さな見えるので、フラッシュメモリカードと呼ばれます。Uディスクについて異なるメーカー、異なるアプリケーション、フラッシュメモリカードによると、スマートメディア(SMカード)、コンパクトフラッシュ(CFカード)、マルチメディアカード(MMCカード)、セキュアデジタル(SDカード)、メモリースティック(メモリースティック)、 XDピクチャーカード(XDカード)とマイクロハードディスク(マイクロドライブ)。これらのフラッシュメモリカード、異なる外観、仕様が、原理は同じ技術ですが。

NAND FLASHとNOR FLASHは現在、不揮発性フラッシュメモリよりも多く使用されています。
プログラムの実行

メモリへのプログラム、およびプログラムデータを実行します。ユーザーソースプログラムがメモリに実行可能となり、通常、次の手順を実行する必要があります

编译:由编译程序将用户源代码编译成若干个目标模块。
链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块。
装入:由装入程序将装入模块装入内存运行。

Linkプログラムは、次のカテゴリに分かれています。

静态链接:程序在执行前,将各个模块以及它们需要用到的库函数链接成可执行文件.
装入时动态链接:程序在编译完之后得到一组目标模块,在装入内存时链接在一起.
运行时动态链接:程序在运行前还是离散的,在运行时把运行所需要的模块链接在一起.

次のカテゴリにプログラムローダ:

绝对装入:在编译时,如果知道程序将驻留在内存的某个位置,编译程序将产生绝对地址的目标代码。绝对装入程序按照装入模块中的地址,将程序和数据装入内存。由于程序中的逻辑地址与实际内存地址完全相同,故不需对程序和数据的地址进行修改。
可重定位装入:在多道程序环境下,多个目标模块的起始地址通常都是从 0 开始,程序中的其他地址都是相对于起始地址的,此时应釆用可重定位装入方式。根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对目标程序中指令和数据的修改过程称为重定位,地址变换通常是在装入时一次完成的,所以又称为静态重定位。
静态重定位的特点是在一个作业装入内存时,必须分配其要求的全部内存空间,如果没有足够的内存,就不能装入该作业。此外,作业一旦进入内存后,在整个运行期间不能在内存中移动,也不能再申请内存空间。
动态运行时装入,也称为动态重定位:程序在内存中如果发生移动,就需要釆用动态的装入方式。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址均为相对地址。这种方式需要一个重定位寄存器的支持。
动态重定位的特点是可以将程序分配到不连续的存储区中;在程序运行之前可以只装入它的部分代码即可投入运行,然后在程序运行期间,根据需要动态申请分配内存;便于程序段的共享,可以向用户提供一个比存储空间大得多的地址空间。

システムパーティション

メモリは、2つの領域に分割され、一つのプロセスが、我々はそれのためのメモリスペースのブロックを割り当てる必要がメモリに転送されたときに、ユーザ・プロセスを格納するために使用されるオペレーティングシステムを格納するために使用される、ここでの処理における連続メモリ我々が使用する割り当て、店ですメモリ空間の連続期間。
メモリ保護

メモリ保護は、オペレーティングシステムプロセスを妨げる、またはユーザープロセスに利用者に影響を与えることである移転レジスタと最小の物理アドレスが含まれている境界アドレスレジスタ、再配置レジスタを使用することによって、この保護を達成するために、オペレーティング・システムを他のプロセスに影響を与え、アドレスレジスタは、最小の部門が含まれています論理アドレスは、各プロセスの論理アドレスは、送信、より少ない境界アドレスレジスタ、動的論理アドレスとセクタアドレスが比較され、メモリ管理ユニット、そうでない場合はクロスボーダーの発生に加え、物理アドレスを見つけるために再配置レジスタアドレス値よりもなければなりませんメモリセルへ。
連続したメモリ割り当ての管理

メモリにプログラムすることができるように、メモリ空間は、一定量を割り当てられる必要があり、メモリの割り当ての連続割り当てである・最早、ユーザプログラムの分布、すなわち、連続したメモリ空間を割り当て、プログラムのコード又はデータの隣接する論理アドレス、物理アドレスに隣接するメモリ空間の割当てを反映します。連続割当は、4つのカテゴリに分けることができる:単一の連続固定パーティション割り当て、動的パーティション割り当ておよび割り当て再配置可能なパーティション(コンパクト)メソッドを4つの方法で:

单一连续分配。内存此时分为系统区和用户区,系统区只分配给操作系统使用,通常在低地址部分;用户区为用户提供。内存中只有一道程序,也无需进行内存保护。无外部碎片但是有内部碎片,且存储器效率低下。
固定分区分配。将内存空间划分为若干个固定大小的区域,每个分区只能装入一道作业。当有空闲分区时,便可以再从外存的后备作业队列中,选择适当大小的作业装入该区,分为(分区大小相等和分区大小不相等两种方式)无外部碎片但是有内部碎片(分区内部有空间的浪费),且存储器效率低下,但是可存在多道程序,是用于多道程序并发执行的最简单的内存分配方式。

动态分区分配。也成为可变分区分配,它不预先对内存进行划分,而是在进程装入内存时,根据进程的大小动态的建立分区,并使分区的大小正好适合进程的需要,其分区的数目和大小是可变的。但是随着时间的推移,很容易产生外部碎片,外部碎片指的是分区以外的存储空间被浪费
基于顺序搜索的动态分区分配算法:

首次适应算法,空闲分区以地址递增的方式链接,分配内存时顺序查找,找到大小满足要求的第一个空闲分区,通常该算法是最快最好的也是最简单的。http://www.daiqiyang.com
最佳适应算法,空闲分区以容量递增形成分区链,找到第一个满足要求的空闲分区,实际上新能不佳,因为每次最佳分配通常会留下很小的难以利用的内存块,产生外部碎片。
最坏适应算法,又称最大适应算法,空闲分区以容量递减形成分区链,找到第一个满足要求的空闲分区,也就是挑选出最大的分区性能较差,因为算法开销也是需要考虑的一部分
邻近适应算法,又称循环首次适应算法,也就是从首次适应算法中演变而来,不同的是,从上次查找结束的位置开始继续查找性能较差

セグメンテーションとページングメカニズム

セグメンテーションとページングを理解するために、我々は両方のセグメンテーションとページングの技術がある理由を知っている必要があります。

メモリ - 私たちは、セグメンテーションとページングを知っている必要がまず第一に、より良いコンピュータリソースを管理することです。

セグメント化技術が出ていない前に、プログラムは、連続したアドレス空間を見つけるために実行する前に、メモリ内のメモリを見て開始することで、私たちは宇宙A 10Mプログラムを必要とするような、我々は10Mのメモリ空間からアドレス空間を見つける必要がありますその後、にロードされ、連続したスペースを見つけられない場合は、それが割り当てられていません。

ここからは、以前のメモリ割り当ての欠点を見ることができます。

地址空间不隔离,假如我们两个程序A和B,A存放在0x000001~0x0000999这个内存空间,B存放在0X0001000~0x0001100这个空间里,那如果我们对A的操作地址0x0000500误写为0x0001050,那么我们不仅没有对A实施正确的操作,还影响了程序B的执行。
程序地址的不确定,因为我们现在都是对内存地址直接操作,所以我们程序需要写死要操作的某个内存的地址,但是如果我们想要操作地址0x0000001000,我们就必须写死我们要操作的地址为0x0000001000,但是这样问题来了,我们程序运行时在内存的地址在不同时候可能不一样,比如我们第一次可能在内存中的地址为0x0000000001~0x00000100000;那么我们第一次操作可能就没有问题,但是第二次运行时他在内存中的地址可能就变为0x000000100000~0x00000110000,那么我们第二次运行是我们想要操作的地址根本程序占有的内存里,我们可能又误操作其他程序的数据了。
内存使用率低,假如我们内存大小为70M,我们有A B C三个程序在内存中分别连续占20M  10M  30M的地址空间,当我们B运行完被置换出来时A和C中间就有10M的内存空间,然后我们有大小为11M的程序D想要装入内存,然后它从内存中寻找一个11M的连续地址空间,然后我找到了两个10M的地址空间,但是它们是不连续的,所以程序没办法装入内存中,只能等待A或者C运行完才能装入,这样这20M的内存空闲地址就没有被利用起来。

セグメンテーション技術が出てきたように、これらの問題を解決するために、人々は、それを解決する方法を探して行ってきました:

セグメンテーション技術を実現するためには、人と仮想アドレス空間の概念を導入し、何の実空間が存在しないこと、である仮想アドレス空間、コンセプトは何ですが、我々は短期的に、より良い対処するために、物理的およびリードを操作し、我々その操作を実行する前に、プログラムの仮想アドレスであり、例えば、仮想アドレス空間のプログラムAは〜0x100000200 0x00000100で、この場合には、我々は唯一格納するための連続した物理メモリを必要とし、また、仮想アドレスAにマッピングする必要があり物理アドレス空間、仮想アドレス空間は、物理アドレス空間〜0x00000100 0x00000000のに0x00000100〜0x100000200からにマッピングすることができます。

だから、何セグメンテーションのですか?

セグメンテーション機構は可変長セグメントと呼ばれるメモリユニットに編成する仮想メモリであり、セグメント・テーブルは、セグメントによって管理され、各セグメントは、情報の論理的なセットを定義し、各プログラムは、データのような複数のセグメントを有することができますセクション、他のコードセグメント、各セグメントは、各セグメントの長さは、変動プログラムのサイズによって決定される連続アドレス空間のセグメントの長さであるので、アドレス空間が最初のアドレスから二次元のセクション、段落であること長組成物。

セグメンテーションの役割は何ですか?

セグメントの共有と保護:ここでは、保護セグメントについて話す、セグメントは、境界チェック、チェックを確認し、承認するクロスボーダーの保護メカニズムに分かれているが、開始アドレスと段落を含みセグメントテーブル情報と、セグメント・テーブル・レジスタに格納されますメモリアクセス時の長さは、セグメントアドレスに続く最初のセグメント番号とセグメントテーブル数よりも大きいかまたは等しい長さが、割り込み信号範囲のアドレスを発行する場合、論理アドレス空間を比較することにより、セグメント・テーブルの長さは、また、チェックより大きいセグメント長は、セグメントの長さは、クロスボーダーの各プロセスは、独自のアドレス空間で実行できることを保証するために、割り込み信号を生成する場合よりも大きいです。パーミッションチェックは、各セグメント・テーブル・エントリである「アクセス制御」フィールドが設けられている、所定の期間のアクセスモード、通常は、読み取り/書き込みを行う、読み取り専用アクセスモードを有します。あなたは、セグメントによって保護し、共有するためのプログラムの他のプログラムに影響を与える問題を解決することができます。

アドレス変換メカニズムセグメント:セグメント管理は、アドレスマッピングテーブルによって物理アドレスに、物理アドレスに論理アドレスを論理アドレスを提供することができ、完全なので、唯一の仮想アドレスは変更されません、我々はプログラムメモリの物理アドレスを心配する必要はありませんですどのようなので、あなたは2つのアドレスマッピングメカニズムの種類別セグメントごとに問題を解決することができます。

3しかし、我々はページング管理をリードするように、私たちの問題は、メモリの使用率がまだ解決されていない、解決されません

ページング・スーパバイザは、メインメモリ空間が等しく、固定ブロックサイズに分割され、ブロックのサイズは、メインメモリの基本単位、これらのページのページテーブルは、基本的な情報、各プロセスに対応するページテーブル(プロセスとして、小さいですブロックと呼ばれるページ、フレームと呼ばれるブロック内のメインメモリは、外部メモリブロックと呼ばれる処理を行う場合、アプリケーションのメインメモリブロック、ページ・フレームのマッピング関係に生成されたページ)として図:

彼らは連続しかし、論理的に連続していないので、これは外部の物理的に効果的なソリューションである、のは、連続したリニア・アドレスにマッピングされた非連続した空きページフレームのグループにページングユニットを使用してみましょう、外部断片化を解消するために、ページングメカニズムを使用する方法断片化の問題。

外部断片化の問題を解決するためのLinuxアルゴリズムではよく知られているパートナーの使用。すべての空きページフレームリストは、最大要求対応するページフレーム1024のために、11個のブロック、各リストのサイズ1,2,4,8,16,32,64,128,256,512,1024隣接するページフレームを含むそれぞれにグループ化されます連続4メガバイトのRAM(4キロバイトのページサイズ)のサイズ、最初の物理ページ・フレームの各ブロックのアドレスが開始アドレスであるページ・フレーム16の例えば、ブロックサイズ、ブロックサイズの整数倍であります2 * 16 ^ 12の倍数。
次のように我々は、256ページボックス(1メガバイト)をブロックする要求になりましたと仮定すると、パートナーシップアルゴリズムの原理を説明するために例を使用して、アルゴリズムのステップは、次のとおりです。
•チェックリストでない場合は、無料の高速があるかどうかを256ページフレーム、要求を満たすために、もしあれば、次の大きなブロックを探します。
第1の要求を満たすために使用される512は、2つのフリーブロックに分割されるページ・フレームに空きブロック、もしあれば、ページ・フレームに第2リンク256があるか否かをリストページフレーム512を確認しますリスト。いいえ空きブロック場合は、次の大きなブロックを探し続けています。図:

上記のプロセスの逆のプロセスは、プロセスがページフレームブロックのリリースであり、このアルゴリズムは、名前の由来、Bは、単一のブロック図2(b)に合併ブロックの自由なパートナーのペアを入れしようとしているカーネルのサイズで、二つのブロックは、以下の基準を満たすと呼ばパートナーとして:
•二つのブロックは、同じサイズhttp://www.daiqiyang.com持つ
•それらの物理アドレスが連続している
最初のブロックの最初のページの物理ブロックアドレス2であるB 2 ^ 12である
再帰アルゴリズムをそれが成功したBを合併した場合、我々は再び大きなブロックを形成しようとする試みで、2Bをマージしようとします。

セグメンテーションとページングは​​との差です。

図1は、ページング機構は、固定サイズのメモリブロック、およびメモリ管理の可変サイズのブロックを使用して、セグメント管理を使用します。

図2に示すように、固定サイズのページング・ブロックの使用は、より適切な物理メモリ管理である、可変ブロックサイズを使用してセグメンテーション機構は論理的に分割複雑なシステムに適しています。

図3に示すように、セグメント・テーブルは、リニアアドレス空間に格納され、ページテーブルは、物理アドレス空間に格納されています。

4、丁合いアドレス空間は、文字メモリ(リニアアドレスの16進数)を使用する一次元、すなわちA単一線形空間、プログラマが必要であり、アドレスに示します。

セグメント化されたアドレス空間は(等、そのようなセクションデータとして、及びコードのスタックセグメント)指定されたセクション名の両方を必要とする二次元動作、プログラマ識別するアドレスであり、セグメントアドレスを与える必要があります。

おすすめ

転載: blog.51cto.com/6624835/2462933