- 締切済み
コンピュータ/OS の原理を知るための勉強方法は?
こんにちわ。 パソコンとOSの内部的な事(低級な事)に興味があり、勉強を始めた者です。 今現在は、CASL2で基本中の基本を勉強しています。 この次の目標としては、現在自分が使用している環境で、より奥深いところまで研究したいと考えています。 単なるOSの操作方法ではなく、内部的にどの様な動きをしているかに興味があります。 (たとえば、フォーム上のコマンドボタンがクリックされたときには、イベントが発生しますが、その割り込み機能のメカニズムであるとか、CPU上のレジスタ構成がどのようになっているかなど。) そのための勉強方法・参考資料など、お勧めありましたら教えてください。 現在の環境は下記です。 DELL INSPIRON 5100 Windows XP Home Edition よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- khurata
- ベストアンサー率40% (54/134)
低級な事と OSの事とは、まずは分離して学ぶのが良いと思います。と言いますのも、低級な事をきちんとやりたいならば、OSレベルの話は邪魔になってしまうからです。 私がもし質問者や、それ以外の方に、低級な事を教えるとするならば、次のような筋道で教えていくと思います。 (1)論理値と論理演算 (2)2進数と2進の加減乗除、および補数による減算 (3)論理演算回路 (4)2進数のビットと論理値の対応付け (5)組み合わせ回路による加算器 (6)順序回路によるFF、レジスタ、およびメモリ (7)クロックパルス、カウンタ、シフトレジスタ、バス (8)仮想CPUによる紙上実験 (9)機械語によるプログラミング (10)アセンブリ言語 (11)サブルーチン呼び出しと帰還 (12)ソフトウェアとハードウェア (13)アセンブラ、コンパイラ OSの話っぽいのは、(11)あたりでやっと出てきます。上記に示した用語を頼りに検索していくだけでも、かなりの情報が得られると思います。 これらの「基礎」を修得してから OSを勉強すると、身に付く速度と理解度が断然違ってきます。大変な道ですが、頑張って頂きたいと思います。
- はなおか じった(@Jitta)
- ベストアンサー率42% (69/161)
- terra5
- ベストアンサー率34% (574/1662)
かなり広範囲ですから、もう少し区切って学んだ方がいいと思います。 特にOSとしてWindows全体となるとそう簡単にはいかないでしょう。 >フォーム上のコマンドボタンがクリックされたときには、イベントが発生します WindowsではOSの一部になるかも知れませんが,GUIというかウインドウシステムに関する内容になります。 実際,以下の項目とは分けて考え、理解した方がいいと思います。 >割り込み機能のメカニズム 実際のCPUレベルの割り込みのことでしょうか。 OSでは利用していますが、どちらからと言えばCPUの理解に近いと思います。 >CPU上のレジスタ構成がどのようになっているか これは、OSは直接は関係無いですね。 OSは本来CPUが何であるかとは別物です。 実際,以前のWindows NTはPowerPCとかAlphaでも動いていましたし、 今でも組み込み機器用のWindowsは数種のCPUで動いています。 CASL2から考えた場合,まずはx86系のCPUに関する勉強と、 アセンブラレベルでのプログラミング、割り込み処理などに絞ってやるのがいいように思います。 また、この段階ではOSについては考えない方がいいと思います。 逆に「フォーム上のコマンドボタンがクリック」あたりの動きを知りたい場合は,CPUレジスタがどうこうとか割り込みがどうこうはひとまず忘れて、 その動きに関してWindowsに関して勉強した方がいいと思います。 OS本来(?)の基本的機能を知るという意味では, #1方の紹介のMINIX本なんかもいいと思います。 どれをやるにせよ一度にまとめてできる内容では無いと思いますので,まずはある程度絞った方がいいと思いますし、 特に特定のCPU,OSにこだわらない方がいいかも知れません。
- uyama33
- ベストアンサー率30% (137/450)
MINIX の本が私には役にたちました。 アスキーから昔出ていました。
お礼
回答ありがとうございます。 当初Linuxの勉強からはじめようと考えていたのですが、敷居が高く感じてしまい躊躇していました。 MINIXをキーワードとして調査してみます。 貴重な情報ありがとうございました。
お礼
回答・アドバイスありがとうございます。 >CASL2から考えた場合,まずはx86系のCPUに関する勉強と、 >アセンブラレベルでのプログラミング、割り込み処理などに絞ってやるのがいいように思います。 現在の環境から考えて、MSCあたりを使用して、インラインアセンブラで勉強してみます。 その後、MINXで、OSの基本原理を研究してみます。 ありがとうございました。