<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/tonosama_cs/">
    <title>Love the kernel</title>
    <link>http://w.atwiki.jp/tonosama_cs/</link>
    <atom:link href="https://w.atwiki.jp/tonosama_cs/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>Love the kernel</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-11-17T00:37:45+09:00</dc:date>
    <utime>1226849865</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/13.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/12.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/11.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/10.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/9.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/8.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/tonosama_cs/pages/7.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/16.html">
    <title>財務諸表論</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/16.html</link>
    <description>
          </description>
    <dc:date>2008-11-17T00:37:45+09:00</dc:date>
    <utime>1226849865</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/15.html">
    <title>ハードウェア割り込み</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/15.html</link>
    <description>
      実行中のプロセスと非同期的に発生。（プロセスとは無関係に発生）

***クロック割り込み
-クロックは一定時間ごと（PCでは毎秒100回）に割り込みを行う。これをティックと呼ぶ。
-ティックごとに、システムは現在時刻を更新し、ユーザプロセスとシステムのタイマを計算する。
--クロックデバイスプロセスが起動されると、hardclock()が実行される。
---hardclock()が1ティック以上動作すれば、次のクロック割り込みを取りこぼすため、極めて高い優先度が設定される。
---hardclock()には極めて高い優先度が設定されるため、ほぼ全ての他の処理は停止する。
---より重要度の低い時刻関連のソフトウェア処理は、ソフトウェア割り込みハンドラであるsoftclock()により実行する。    </description>
    <dc:date>2008-09-12T08:56:36+09:00</dc:date>
    <utime>1221177396</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/14.html">
    <title>トラップ</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/14.html</link>
    <description>
      ***トラップ
プロセスと同期的に発生。（プロセスが原因で発生）
-プロセスがトラップ発生に気づくケース。
--システムコール発効。
--ゼロによる除算や不正なポインタ参照など。
---プロセスはシグナルを受け取るか、強制終了されることで、そのことに気づく。
-プロセスがトラップ発生に気づかないケース。
--ページフォルトにより発生するケース。
---システムはそのページを利用可能にしてプロセスを再開するが、プロセスはそのことに気づかないまま動作を続ける。    </description>
    <dc:date>2008-09-12T08:42:03+09:00</dc:date>
    <utime>1221176523</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/13.html">
    <title>syscall()</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/13.html</link>
    <description>
      *システムコールハンドラ

***input/output
-input:システムコール番号
-output:システムコール結果値（成功:0、失敗:-1）

***システムコールハンドラである[[syscall()]]の動作手順。
+システムコールパラメタがユーザアドレスに存在するか確認し、存在すればパラメタをカーネルアドレスにコピー。
+パラメタを元に、システムコールを実装するカーネル関数を呼び出す。
+処理結果をユーザプロセスに渡す。

参考（[[引用元&gt;http://d.hatena.ne.jp/naoya/20071008/1191824562]]）
#blockquote(){システムコール呼び出し(ソフトウェア割り込み発生 → 特権モード切り替えが伴う)の引数がどう渡されるか、というところ。
-特権モードが切り替わる際にスタックがカーネルスタックに切り替わると、システムコール呼びだし時にもスタックが切り替わることになる
-従ってユーザーモードのスタックにシステムコールの引数を積んでも、カーネルからは直接それを取り出すことができない。
-そのため、システムコールへの引数はレジスタ経由で渡される
--eflags, cs, eip, ss, esp はハードウェアによって例外(割り込み) 発生時にカーネルスタック上に退避される
--system_call() および sysenter_entry() 関数は SAVE_ALL マクロにより汎用レジスタおよび gs, es, ds, ebp 等をカーネルスタックに積む
--システムコールへの引数は ebx、ecx、edx、esi、edi、ebp の 6 つのレジスタによって渡される、のでここからそれらの引数を取り出して処理する
-なお、Linux のシステムコールは int 0x80 のソフトウェア割り込みまたは sysenter 命令によって実現されており、コールゲートは使われていない
-またレジスタ経由で引数を渡すので、ゲートディスクリプタのコピーカウントも利用しない
-この方法でユーザーモードからの引数渡しを実現することで、システムコールハンドラをほかの例外ハンドラと同じような構造にできるという利点が得られる。
}

***システムコール処理失敗時の動作。    </description>
    <dc:date>2008-09-12T01:17:43+09:00</dc:date>
    <utime>1221149863</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/12.html">
    <title>カーネルサービス</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/12.html</link>
    <description>
      *カーネル構成

カーネルは上部と下部に分けられる。
-カーネル上部
--システムコールに反応しサービスを提供する。カーネルのデータ構造及びユーザプロセスのコンテクストにアクセス可能。
-カーネル下部
--[[ハードウェア割り込み]]を処理する関数群で構成される。

*システムエントリ

システムエントリの方法は3種類しかない。
-[[ハードウェア割り込み]]
-[[ハードウェアトラップ&gt;トラップ]]
-[[ソフトウェアトラップ&gt;トラップ]]

システムエントリのハンドラには3種類しかない。
-[[syscall()]]
-[[trap()&gt;トラップ]]
-ハードウェア割り込みを処理するデバイスドライバの割り込みハンドラ。

コンテキストスイッチの手順。
+HWがカーネルモードに移行。これによりメモリアクセスが特権モードで行われる。
+HWがプログラムカウンタ、プロセッサ状態ロングワード、[[トラップ]]の種類を示す情報をプロセスごとのカーネルスタックに保存。
+アセンブラ関数により、HWが保存しなかった情報（汎用レジスタ、ユーザスタックポインタ）をカーネルスタックポインタに保存。
-[[参考&gt;http://d.hatena.ne.jp/naoya/20070924/1190653790]]
- &amp;color(red){HWが保存する情報と、アセンブラ関数が保存する情報の違いはなに？何故HWが全部保存してしまわないの？}    </description>
    <dc:date>2008-09-12T08:40:25+09:00</dc:date>
    <utime>1221176425</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/11.html">
    <title>テスト</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/11.html</link>
    <description>
      *テスト

-&amp;u(){リスト}
-&amp;bold(){リスト}
+番号リスト
+番号リスト
-&amp;color(red){リスト}

----
----
----
#blockquote(){引用文を表示します。
引用文を表示します。
引用文を表示します。
}    </description>
    <dc:date>2008-09-11T23:51:58+09:00</dc:date>
    <utime>1221144718</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/10.html">
    <title>プラグイン/コメント</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/10.html</link>
    <description>
      * コメントプラグイン
@wikiのwikiモードでは
 #comment()
と入力することでコメントフォームを簡単に作成することができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_60_ja.html


-----
たとえば、#comment() と入力すると以下のように表示されます。

- てすと  -- てすと  (2008-09-11 15:09:10)
#comment    </description>
    <dc:date>2008-09-11T15:09:10+09:00</dc:date>
    <utime>1221113350</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/9.html">
    <title>プラグイン/関連ブログ</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/9.html</link>
    <description>
      * 関連ブログ
@wikiのwikiモードでは
 #bf(興味のある単語)
と入力することで、あるキーワードに関連するブログ一覧を表示することができます

詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_161_ja.html

-----


たとえば、#bf(ゲーム)と入力すると以下のように表示されます。


#bf(ゲーム)
    </description>
    <dc:date>2008-09-11T15:02:11+09:00</dc:date>
    <utime>1221112931</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/8.html">
    <title>プラグイン</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/8.html</link>
    <description>
      @wikiにはいくつかの便利なプラグインがあります。

-----


#ls

-----

これ以外のプラグインについては@wikiガイドをご覧ください
=&gt;http://atwiki.jp/guide/
    </description>
    <dc:date>2008-09-11T15:02:11+09:00</dc:date>
    <utime>1221112931</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/tonosama_cs/pages/7.html">
    <title>プラグイン/動画(Youtube)</title>
    <link>https://w.atwiki.jp/tonosama_cs/pages/7.html</link>
    <description>
      * 動画(youtube)
@wikiのwikiモードでは
 #video(動画のURL)
と入力することで、動画を貼り付けることが出来ます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_209_ja.html

また動画のURLはYoutubeのURLをご利用ください。
＝＞http://www.youtube.com/

-----


たとえば、#video(http://youtube.com/watch?v=kTV1CcS53JQ)と入力すると以下のように表示されます。


#video(http://youtube.com/watch?v=kTV1CcS53JQ)

    </description>
    <dc:date>2008-09-11T15:02:11+09:00</dc:date>
    <utime>1221112931</utime>
  </item>
  </rdf:RDF>
