第2開発室プログラミングで学んだことの覚書やら、考察ネタやら、なんでもありこの広告は、90日以上更新していないブログに表示しています。数あるデレマス曲の中でも「絶対特権主張しますっ!」という曲は、そのキャッチーなメロディとは対照的に、「『あの女、あの人に優しくされて調子に乗っているけど本命は私なんだからあんまり馴れ馴れしくするな。あの人に近づいて良いのは自分だけ』というようなある種のヤンデレっぽさが垣間見える」曲で知られています。その歌詞の持つ意味自体は、おおよそ他の2次元アイドルソングでもありそうな内容ではあるのですが、「特権」や「越権」というあまり日常生活では使われない単語がとにかく連発されるため、かなり頭の中に残ります...そんな感じに頭の中に残った状態で、コンピュータアーキテクチャについて調べていたら「もしかしたら『絶対特権主張しますっ!』でメモリ保護を説明できるんじゃね?」という発想が浮かび、その勢いで家にあった「Linuxのブートプロセスをみる」(KADOKAWA/アスキー・メディアワークス)を読んで、無理やりエントリに落とし込んでみました。それでは、本題に入ってみます。CPU上のLinuxについて説明します。腕組んだりその類い絶対!絶対!絶対!絶対!絶対特権主張しますっ!(ますっ!)おそらく、「特権レベル」のことですね。「CPUモード」とも呼ばれます。プログラムが実行できるCPU命令の種類やアクセス可能なメモリの範囲、I/Oポートへのアクセスの可否を制御します。複数の特権レベルの階層構造を概念的に表したものを「リングプロテクション」といいます。3が一番権限が制限されます。3ではユーザーが起動するプログラムのプロセスが動作します。VTという技術が利用されています。Level:現行特権レベル)」といいます。Fault)」を発生してOSに通知します。0~2のいずれかの特権レベルで動作しているとき、この状態を「スーパーバイザー・モード」といいます。3の状態を「ユーザーモード」といいます。No!)メモリ保護の主な実現方法として、「セグメント方式」と「ページング方式」があります。Linuxではメモリ保護を実現するためにセグメント方式は利用していません。Descriptor)を作成しています。セグメントの機能をメモリ保護には利用していないため、論理アドレスのオフセットとリニアアドレス(仮想アドレス)は等価となります。メモリ保護の方法として採用しているページング方式とは、ページと呼ばれる小さな単位に仮想記憶を分割して割り当てる方式のことです。ページングを行うページング回路は、(物理)アドレス空間を4KBまたは4MBの固定長のブロックに分割し、ブロック単位でアドレスの変換を行います。Frame)と呼びます。論理アドレスを物理アドレスに変換する際、CPUは論理アドレスと物理アドレスとが対応付けられたテーブル(表)を参照します。Table)」と呼びます。ページディレクトリの大きさは4KBで、ひとつ4バイトの大きさのPDE(ページディレクトリ・エントリ)が1024入っています。ページテーブルの大きさも4KBで、ひとつ4バイトの大きさのPTE(ページテーブル・エントリ)が1024入っています。PDEの2ビット目には「U/Sフラグ(ユーザー/スーパーバイザー・フラグ)」というフラグが設定されています。U/Sフラグを0にセット(リセット)すると、ページフレームにアクセス可能な特権レベルはスーパーバイザー・モードのみとなり、ユーザーモードではアクセスが拒否されます。32bit版Linuxのカーネルはリニアアドレスの0xC0100000に配置されます(64bit版は0xffffffff80000000)。0xC0000000以降1GBの、「システム領域を指すPDE」のすべてのU/Sフラグをリセットし、ユーザーモードでのアクセスを拒否します。U/Sフラグが0だったので、CPUが「許しません」と怒ったわけですね。ここから先も歌詞があるのですが、主に僕が力尽きたのという理由と、歌詞全文を載せると某団体から使用料を請求されそうという理由から、引用に留まる範囲で締めたいと思います。»プロフィールid:skypenguinsプログラミング、アイマスネタをつらつらと書いています。参加グループプログラミングはてなブログをはじめよう!skypenguinsさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。