サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
2: 2008-09-08 (月) 15:28:00 ソース 現: 2024-01-08 (月) 12:58:54 k-tan ソース
Line 1: Line 1:
-* .bss領域のゼロクリアについて+TITLE:x 
 +* .bss領域のゼロクリアについて [#hbb7fb13]
-(by [[K]], 2008.09.08) -(by [[K]], 2008.09.08)
-*** (0)+*** (0) [#e96d4084]
-たいていOSのアプリケーション形式には、.textセクションと.dataセクションと.bssセクションがある。このうち.bssというのは、初期値のない(=つまりどんな値であっても構わない)メモリ領域のことで、たとえばファイルI/Oのためのバッファなどのために使うのにはちょうどいい(事前にサイズが決まっているのならmallocするよりもいい、なぜならmallocをCALLするコードがいらないし、領域を確保できなかった場合のエラー処理がいらないから)。 -たいていOSのアプリケーション形式には、.textセクションと.dataセクションと.bssセクションがある。このうち.bssというのは、初期値のない(=つまりどんな値であっても構わない)メモリ領域のことで、たとえばファイルI/Oのためのバッファなどのために使うのにはちょうどいい(事前にサイズが決まっているのならmallocするよりもいい、なぜならmallocをCALLするコードがいらないし、領域を確保できなかった場合のエラー処理がいらないから)。
-*** (1)+*** (1) [#a783cf0e]
-.bssセクションというのはそういう性質のものなのに、gccの最新版はデフォルトではひどいことをする。というのは、.dataセクション内の変数うちで初期値がゼロのものを.bssに割り付けようとするのである。.bssは本来ゼロクリアすることを保証してはいないのにだ。 -.bssセクションというのはそういう性質のものなのに、gccの最新版はデフォルトではひどいことをする。というのは、.dataセクション内の変数うちで初期値がゼロのものを.bssに割り付けようとするのである。.bssは本来ゼロクリアすることを保証してはいないのにだ。
-ただしこれにはもちろん理由がある。実はLinuxにしてもWindowsにしても、.bssがゼロクリアされることを保証しているのだ(MS-DOSは保証してない)。だからgccのこの方針は実害がないばかりか、.dataのセクションバイナリイメージが小さくなり、実行ファイルが小さくなる、アプリケーションのロードが速くなるというメリットがある。 -ただしこれにはもちろん理由がある。実はLinuxにしてもWindowsにしても、.bssがゼロクリアされることを保証しているのだ(MS-DOSは保証してない)。だからgccのこの方針は実害がないばかりか、.dataのセクションバイナリイメージが小さくなり、実行ファイルが小さくなる、アプリケーションのロードが速くなるというメリットがある。
--しかしOSASKではそんなことは保証してない。OSASK-HBでも保証してない。「はりぼてOS」でも保証してない。そもそもそんなことを保証する必要がどこにあるのか。セクション本来の意味としては、ゴミデータで埋まっていていいと言っているのになんで数千、数万クロックを費やしてゼロクリアするのか。そのままでいいじゃないか。OSASKやOSASK-HB、そして「はりぼてOS」でさえもtek圧縮をサポートしているので、.data内のゼロの塊やゼロ以外の一定値の連続は数バイトに圧縮されてしまうので、アプリのサイズやロード時間は負けない。+-しかしOSASKではそんなことは保証してない。OSASK-HBでも保証してない。「はりぼてOS」でも保証してない。そもそもそんなことを保証する必要がどこにあるのか。セクション本来の意味としては、ゴミデータで埋まっていていいと言っているのになんで数千、数万クロック(.bss領域の大きさによってはこれをはるかに超える)を費やしてゼロクリアするのか。そのままでいいじゃないか。OSASKやOSASK-HB、そして「はりぼてOS」でさえもtek圧縮をサポートしているので、.data内のゼロの塊やゼロ以外の一定値の連続は数バイトに圧縮されてしまうので、アプリのサイズやロード時間では負けない。むしろ格段に有利だ。
-実はLinuxやWindowsが本来初期化する必要のないはずの.bssをゼロクリアするようになったのには、ちゃんとした理由がある。それは、セキュリティのためだ。たとえばパスワードなどを管理するアプリが走って終了したとしよう。そうするとそのアプリが使ったメモリにはパスワードの残骸が残っているだろう。このメモリをそのまま他のアプリの.bssとして割り当ててしまったら、そしてそのアプリがいきなり自分の.bss領域を覗き込むようなアプリだったら、パスワードが見えてしまうかもしれないわけだ。これはまずい。こういうことが起こらないようにするために、LinuxやWindowsでは.bssはゼロクリアするという方針を決めたということだ。 -実はLinuxやWindowsが本来初期化する必要のないはずの.bssをゼロクリアするようになったのには、ちゃんとした理由がある。それは、セキュリティのためだ。たとえばパスワードなどを管理するアプリが走って終了したとしよう。そうするとそのアプリが使ったメモリにはパスワードの残骸が残っているだろう。このメモリをそのまま他のアプリの.bssとして割り当ててしまったら、そしてそのアプリがいきなり自分の.bss領域を覗き込むようなアプリだったら、パスワードが見えてしまうかもしれないわけだ。これはまずい。こういうことが起こらないようにするために、LinuxやWindowsでは.bssはゼロクリアするという方針を決めたということだ。
-*** (2)+*** (2) [#q7504bc7]
-理由はなるほどもっともだけど、それでも.bssのゼロクリアは本質的には無駄だと思う。問題はそういう悪さを出来なくすることであって、必要も危険もないのに毎回わざわざゼロクリアすることではないはずだ。まず、ゼロクリアする必要のない場合というのが存在する。たとえば、同じタスクの別のメモリ領域がスワップアウトされて、それをそのまま渡された場合だ。これはどうせ読めるものが読めているだけになるから問題ない。 -理由はなるほどもっともだけど、それでも.bssのゼロクリアは本質的には無駄だと思う。問題はそういう悪さを出来なくすることであって、必要も危険もないのに毎回わざわざゼロクリアすることではないはずだ。まず、ゼロクリアする必要のない場合というのが存在する。たとえば、同じタスクの別のメモリ領域がスワップアウトされて、それをそのまま渡された場合だ。これはどうせ読めるものが読めているだけになるから問題ない。
-またたとえ元が別タスクのメモリであっても、それが.textセクションだったものであれば(市販されているコピー禁止のソフトでないかぎり)、読めても問題ない。というのは.textセクションは書き換え禁止なのでロードの時のままだし、そんな情報はわざわざ盗み見なくてもダウンロードすればいいだけなのだ。ただしマルチユーザで動いているときは、ゼロクリアする必要があるかもしれない。そうでないと、「えー誰だか知らないけどいまだにこんな古いソフト使っているやつがいるのかよ、だせー」なんていう話が起こりかねない。.bssに書いてあった情報をインターネット上に送りつけたり、ファイルに保存したりして他のユーザの見える位置におく危険もあるので、ネットワークアクセスするアプリや、タスクディレクトリ・ユーザディレクトリを越えてアクセスするアプリに対しても注意は必要だ。 -またたとえ元が別タスクのメモリであっても、それが.textセクションだったものであれば(市販されているコピー禁止のソフトでないかぎり)、読めても問題ない。というのは.textセクションは書き換え禁止なのでロードの時のままだし、そんな情報はわざわざ盗み見なくてもダウンロードすればいいだけなのだ。ただしマルチユーザで動いているときは、ゼロクリアする必要があるかもしれない。そうでないと、「えー誰だか知らないけどいまだにこんな古いソフト使っているやつがいるのかよ、だせー」なんていう話が起こりかねない。.bssに書いてあった情報をインターネット上に送りつけたり、ファイルに保存したりして他のユーザの見える位置におく危険もあるので、ネットワークアクセスするアプリや、タスクディレクトリ・ユーザディレクトリを越えてアクセスするアプリに対しても注意は必要だ。
-こんなふうに、問題ある条件を絞っていけばいいと思う。またシェルの設定で、このアプリはそういういかがわしいことはしないので信用していい、というフラグをたてられるようにしてもいいだろう。さらにアプリ側から、この領域には絶対に他のタスクに見られたくない情報を含んでいるので、スワップアウトするときはゼロクリアしてくれって指定できるようにもしたい。これをちゃんと設定すれば、シェルの設定をいじってもコピー禁止の市販ソフトの.text域などを無事に守れる(まあOSを改造して、そのAPI要求を無視するようにしたら突破されちゃうんだけど、そもそもOS改造を許せばなんでも出来ちゃうし、オープンソースOSでは改造を禁止することは出来ない)。 -こんなふうに、問題ある条件を絞っていけばいいと思う。またシェルの設定で、このアプリはそういういかがわしいことはしないので信用していい、というフラグをたてられるようにしてもいいだろう。さらにアプリ側から、この領域には絶対に他のタスクに見られたくない情報を含んでいるので、スワップアウトするときはゼロクリアしてくれって指定できるようにもしたい。これをちゃんと設定すれば、シェルの設定をいじってもコピー禁止の市販ソフトの.text域などを無事に守れる(まあOSを改造して、そのAPI要求を無視するようにしたら突破されちゃうんだけど、そもそもOS改造を許せばなんでも出来ちゃうし、オープンソースOSでは改造を禁止することは出来ない)。
-* こめんと欄 +* こめんと欄 [#z22e29fe] 
-#comment+//- f9bPmo  <a href="http://qwfwghfddrmd.com/">qwfwghfddrmd</a>, [url=http://vpfxpmjgdglk.com/]vpfxpmjgdglk[/url], [link=http://useladraikcq.com/]useladraikcq[/link], http://bveiyvovguni.com/ -- ''vcfdpwqbdf'' &new{2009-12-20 (日) 18:07:29}; 
 +//- comment6, http://eckmansselfdefense.com/ viagra sale online, http://footpaincontrol.com/ order cialis, http://fashionboobies.com/ nolvadex, http://noirebelle.com/ klonopin, http://chihuahuasdogs.info/ albumin lasix, http://filemylogo.com/ buy propranolol, http://dontquityrdayjob.com/ cialis generic, -- ''key-pred sp'' &new{2009-12-21 (月) 04:19:12}; 
 +//- comment1, http://eckmansselfdefense.com/ usa pharmacy viagra, http://buzzleonardparts.com/ online viagra, http://mulhollandscrapmetals.com/ loss medication meridia weight, http://noirebelle.com/ klonopin shaking, http://917web.com/ order skelaxin, http://teatromutisporelforo.com/ bob's smokes cigars, http://filemylogo.com/ propranolol prescription, http://panamcheer.com/ adipex diet pills, -- ''cheap cigarettes'' &new{2009-12-21 (月) 05:10:44}; 
 +//- comment4, http://tinkerbellhilton.info/ montecristo cigar, http://parishiltonchihuahua.info/ alprazolam generic xanax, http://badmusic.org/ levaquin, http://p-mlandscaping.com/ zolpidem, http://teatromutisporelforo.com/ romeo y julieta cigars, http://tcfmby.com/ cuban cigars online, http://olympicdestiny.com/ reductil slimming pill, -- ''pharmacy zolpidem'' &new{2009-12-21 (月) 06:10:45}; 
 +//- comment4, http://fashionboobies.com/ effects gh nolvadex, http://gamersinaction.org/ order viagra, http://noirebelle.com/ buy klonopin, http://chihuahuasdogs.info/ lasix for horse, http://tcfmby.com/ henri wintermans cigars, http://panamcheer.com/ order adipex, http://dontquityrdayjob.com/ cialis cheap original, -- ''affect levaquin side'' &new{2009-12-21 (月) 07:15:21}; 
 +//- comment6, http://footpaincontrol.com/ cialis, http://fashionboobies.com/ nolvadex steroid, http://gamersinaction.org/ buy viagra, http://noirebelle.com/ klonopin overdose, http://badmusic.org/ buy levaquin antibiotic on line, http://917web.com/ side effects of skelaxin, http://tcfmby.com/ bob's smokes cigars, http://grandredenka.com/ pred-ject-50, http://filemylogo.com/ propranolol side effects, -- ''prednisolone online'' &new{2009-12-21 (月) 08:06:08}; 
 +//- comment2, http://gamersinaction.org/ viagra internet orders, http://ephs.info/ zoloft, http://p-mlandscaping.com/ zolpidem addiction, http://917web.com/ buy skelaxin, http://teatromutisporelforo.com/ romeo y julieta cigars, http://grandredenka.com/ prednisolone acetate ophthalmic suspension, http://filemylogo.com/ propranolol inderal side effects, http://olympicdestiny.com/ reductil depression, -- ''meridia'' &new{2009-12-21 (月) 08:58:06}; 
 +//- comment2, http://starryowldesign.com/ cigarettes, http://elesperma.com/ order tetracycline, http://onurkok.com/ phentermine, http://buzzleonardparts.com/ viagra, http://p-mlandscaping.com/ zolpidem online mx, http://panamcheer.com/ adipex, http://tcfmby.com/ whats in cigars, -- ''zolpidem online'' &new{2009-12-21 (月) 20:16:55}; 
 +//- comment1, http://eckmansselfdefense.com/ viagra overnight shipping, http://tinkerbellhilton.info/ find montecristo cigars, http://footpaincontrol.com/ cialis comment info personal remember, http://tarchon.net/ roll your own tobacco, http://badmusic.org/ order levaquin, http://chihuahuasdogs.info/ blood2badministration lasix, http://p-mlandscaping.com/ zolpidem side affects, http://tcfmby.com/ women smoking cigars, http://filemylogo.com/ propranolol, -- ''antabuse herb like that work'' &new{2009-12-21 (月) 21:11:35}; 
 +//- comment3, http://buzzleonardparts.com/ online viagra, http://noirebelle.com/ klonopin withdrawal, http://mulhollandscrapmetals.com/ no rx meridia, http://badmusic.org/ levaquin leva-pak, http://917web.com/ skelaxin, -- ''buy nolvadex'' &new{2009-12-21 (月) 22:03:42}; 
 + 
 +//#comment

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。