5日目の記事でもあります。Aizuの方に登録してたのですが、ネタ的に自作OSだし、自作OSカレンダーの方は空きが激しいので、まとめて登録してしまいました。Calendar的に先日の記事の続きみたいなものです。ALTで話した内容をもっとわかりやすく書いたものです。(次回のALTもあるらしいので興味のある人はぜひに)この記事では、もぷりんOSの現在の実装における観点から話を進めていきますので、LinuxなどのOSとは異なることもあると思いますので注意してください。ぷりんOSは権限周りなどがまだまだですし、私もよくわかって無いことが多いです。それだと危なくない?みたいなことがめっちゃ有ります(つまり、吹けば飛ぶ)それに、趣味で楽しいからやっていることです。(だからといってセキュリティを軽視しているわけではないです。安心安全もぷりんOSを目指しますよ)なので、あんまり細かいことは言わず、こんな風に書いてれば動くんだふーん程度の気持ちでお願いしたいです。何より自作OSを作ってる人、少し興味を持ってる人が見て、こんなの俺でもできるじゃねーかと感じて、自作OS作成してくれればなあと思いつつ書いていきます。本題に入るその前に、通常話しているプロセスについていくつか事前知識として、さらっと話そうと思います。詳しいことはプロセス-Wikipediaにどうぞ大雑把に言うと、プロセスは実行されているあるプログラムのことです。ぷりんOSは一応?UNIX系のOSなので、ここでいうプロセスはUNIX系のプロセスを指しています。UNIX系プロセスは親子関係を持ちます。この親子関係というのはデータ構造で言うところの木構造で、大体こんな感じです。数字はプロセスID(pid)を表します。プロセス0がルートプロセス、その子プロセスがプロセス1この時、プロセス1から見れば親はプロセス0になります。当たり前ですが、プロセスの生成と削除はOSでは頻繁に行われます。目の前のターミナルでlsコマンドを実行したとしましょう。その瞬間、シェルが子プロセスlsを生成し、lsが実行されます。表示した後に、lsは終了し、プロセスは削除され、元のシェルに戻るというわけです。ここで、シェルのプロセスの親は何でしょうか、更にその親は?それのまた更に親は?という疑問が湧いてきます。上図のルートプロセスであるプロセス0とその子であるプロセス1の話です。特別なタスクを指している。呼ばれ、ページングを担当している。これは実はカーネルの一部であり、ユーザーモードのプロセスではない。プロセスで、主にシステムの立ち上げとシャットダウンを担当している。ぷりんOSでもプロセス0はOSカーネル自体の事を指します。ハードウェア(CPU,ディスク,マウス,キーボードなど)の初期化を主に行っています。それらの初期化を終えた後に初めてのユーザプロセスであるプロセス1を立ち上げるわけです。ここで、ユーザモードという言葉が出てきました。