<?xml version="1.0" encoding="SHIFT_JIS"?>
<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:admin="http://webns.net/mvcb/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
	xml:lang="ja">
	<channel rdf:about="https://mitsuki.engawa.org/index.rdf">
		<title>Mitsuki's Magic Laboratory</title>
		<link>https://mitsuki.engawa.org</link>
		<description>生温い技術屋がぼんやりする日々</description>
		<dc:creator>mitsuki</dc:creator>
		<admin:generatorAgent rdf:resource="http://www.blosxom.com/?v=2.1.2"/>
		<admin:errorReportsTo rdf:resource="mailto:mitsuki at engawa dot org"/>
		<items>
			<rdf:Seq>
				<rdf:li rdf:resource="https://mitsuki.engawa.org/OS/20051118_ipodlinux.html"/>
				<rdf:li rdf:resource="https://mitsuki.engawa.org/OS/20051108_himem.html"/>
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="https://mitsuki.engawa.org/OS/20051118_ipodlinux.html">
		<title>iPodLinux</title>
		<link>https://mitsuki.engawa.org/OS/20051118_ipodlinux.html</link>
		<description>　某#techでたいぷちゃんが楽しそうにしてるので、どんなものかと本家とかざっくり眺めてみる。Doomみたいなゲームや音楽・動画プレーヤーの他、シェルのみならずエディタ(vi)もあるらしい。最後の方は実用性は微妙そうだけど……（笑）。ベースになっているのはuCLinuxだそうなので、MMU周りの機能がサポートされていない関係で一部の機能に制限があるほかは、普通にLinuxとして使えるっぽい（mmap()は当然使えないし、メモリ保護もない。fork()も使えないけど、vfork()やexec()は使えるのでマルチタスク動作はできる）。開発環境は普通にgcc-arm。C++でSTLも（条件付きで）可。フレームバッファは液晶に内蔵されてる＆MMUがなくメモリマップされないので、アクセス方法が（Linuxとしては）若干特殊。解像度は機種によってバラバラ。リモートコントロール端子がシリアルデバイスとしてアサインされているので、変換コネクタを自作すれば普通のシリアルポートとして使えるっぽい。USB/IEE1394で母艦と接続した場合、母艦からはマスストレージデバイスとして見えるので、ファイルシステムに直接アクセスできるっぽい（ただし新しい機種では微妙に制限がある模様）。　……これって、UIやメモリ保護の面を除けば、PalmOSより素性よく使えるんじゃ？（苦笑）ちなみに、ARM自体はMMU持ってるので、その気になればメモリ保護も実装はできる。</description>
		<dc:subject><a href="/OS">OS</a></dc:subject>
		<dc:creator>mitsuki</dc:creator>
		<dc:date>2005-11-18T02:26+09:00</dc:date>
		<content:encoded><![CDATA[　某#techでたいぷちゃんが
&lt;a href=&quot;http://unknownplace.org/memo/2005/11/17#e006&quot;&gt;楽しそうにしてる&lt;/a&gt;
ので、どんなものかと
&lt;a href=&quot;http://ipodlinux.org/&quot;&gt;本家&lt;/a&gt;
とかざっくり眺めてみる。
&lt;a href=&quot;http://ipodlinux.org/Doom&quot;&gt;Doom&lt;/a&gt;
みたいなゲームや音楽・動画プレーヤーの他、
&lt;a href=&quot;http://ipodlinux.org/Sash&quot;&gt;シェル&lt;/a&gt;
のみならず
&lt;a href=&quot;http://ipodlinux.org/ViP&quot;&gt;エディタ(vi)&lt;/a&gt;
もあるらしい。最後の方は実用性は微妙そうだけど……（笑）。
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;
ベースになっているのは
&lt;a href=&quot;http://www.uclinux.org/&quot;&gt;uCLinux&lt;/a&gt;
だそうなので、MMU周りの機能がサポートされていない関係で一部の機能に制限があるほかは、普通にLinuxとして使えるっぽい（mmap()は当然使えないし、メモリ保護もない。fork()も使えないけど、vfork()やexec()は使えるのでマルチタスク動作はできる）。
&lt;li&gt;
開発環境は普通にgcc-arm。
&lt;a href=&quot;http://ipodlinux.org/CPP_Programming&quot;&gt;C++でSTL&lt;/a&gt;
も（条件付きで）可。&lt;br&gt;
&lt;li&gt;
フレームバッファは液晶に内蔵されてる＆MMUがなくメモリマップされないので、アクセス方法が（Linuxとしては）若干特殊。解像度は
&lt;a href=&quot;http://ipodlinux.org/images/c/cf/Genscreen.png&quot;&gt;機種によってバラバラ&lt;/a&gt;
。&lt;br&gt;
&lt;li&gt;
リモートコントロール端子がシリアルデバイスとしてアサインされているので、変換コネクタを自作すれば普通のシリアルポートとして使えるっぽい。&lt;br&gt;
&lt;li&gt;
USB/IEE1394で母艦と接続した場合、母艦からはマスストレージデバイスとして見えるので、ファイルシステムに直接アクセスできるっぽい（ただし新しい機種では微妙に制限がある模様）。
&lt;/ul&gt;
&lt;p&gt;
　……これって、UIやメモリ保護の面を除けば、PalmOSより素性よく使えるんじゃ？（苦笑）
&lt;p class=&quot;comment&quot;&gt;
ちなみに、ARM自体はMMU持ってるので、その気になればメモリ保護も実装はできる。
&lt;p&gt;]]></content:encoded>
		<trackback:ping rdf:resource="https://mitsuki.engawa.org/OS/20051118_ipodlinux.trackback"/>
	</item>
	<item rdf:about="https://mitsuki.engawa.org/OS/20051108_himem.html">
		<title>OSカーネルが高位メモリにある訳</title>
		<link>https://mitsuki.engawa.org/OS/20051108_himem.html</link>
		<description>　仕事がアレな感じでなかなか進まないながらも、先日買った悪魔本を読んでるわけですが、「5.3 カーネルにおけるメモリ管理」を読んで長年(?)の疑問が氷塊。もとい氷解。　FreeBSDといいWindowsといい、ユーザープロセスで使えるメモリ空間を減らしてまで、カーネルがユーザープロセス空間の高位（アドレス値の大きい端）を占めているのかずっと不思議だったのですが、どうもシステムコールの際のユーザー−カーネル間のデータコピーのコストを下げるためらしい。　両者が同じアドレス空間にあれば単なるメモリブロックコピーで済むところが、両者が違うメモリ空間にあると特殊な転送を行う必要があって遅くなるため……とのこと。カーネル時間の1/3はこの手のデータコピーに食われているそうなので、そりゃたしかに影響大きそうだなあ……。　まあ、x86ならカーネル空間とプロセス空間でセグメントを分ければ（ラージモデル）、セグメント間転送で済むのでそんなにコストもかからなそうな気もするけど、やっぱり案外コストがかかるのかもしれないし、移植性は確実に低くなるので避けたのかな。初期の386べったりな頃のLinuxとかMonaはどうしてる（た）んだろう。</description>
		<dc:subject><a href="/OS">OS</a></dc:subject>
		<dc:creator>mitsuki</dc:creator>
		<dc:date>2005-11-08T08:02+09:00</dc:date>
		<content:encoded><![CDATA[　仕事がアレな感じでなかなか進まないながらも、
&lt;a href=&quot;http://mitsuki.engawa.org/Diary/20051023_buy.html&quot;&gt;先日買った&lt;/a&gt;
悪魔本を読んでるわけですが、「5.3 カーネルにおけるメモリ管理」を読んで長年(?)の疑問が氷塊。もとい氷解。
&lt;p&gt;
　FreeBSDといいWindowsといい、ユーザープロセスで使えるメモリ空間を減らしてまで、カーネルがユーザープロセス空間の高位（アドレス値の大きい端）を占めているのかずっと不思議だったのですが、どうもシステムコールの際のユーザー−カーネル間のデータコピーのコストを下げるためらしい。&lt;br&gt;
　両者が同じアドレス空間にあれば単なるメモリブロックコピーで済むところが、両者が違うメモリ空間にあると特殊な転送を行う必要があって遅くなるため……とのこと。カーネル時間の1/3はこの手のデータコピーに食われているそうなので、そりゃたしかに影響大きそうだなあ……。
&lt;p&gt;
　まあ、x86ならカーネル空間とプロセス空間でセグメントを分ければ（ラージモデル）、セグメント間転送で済むのでそんなにコストもかからなそうな気もするけど、やっぱり案外コストがかかるのかもしれないし、移植性は確実に低くなるので避けたのかな。初期の386べったりな頃のLinuxとかMonaはどうしてる（た）んだろう。
]]></content:encoded>
		<trackback:ping rdf:resource="https://mitsuki.engawa.org/OS/20051108_himem.trackback"/>
	</item>
</rdf:RDF>
