セルフ・プログラミング方法:オペレーティングシステムを学ぶためにどのように

元の文

著者:黄斜め

復刻版は、資料の冒頭にソースと作者を明記してください。

この記事マインドマッピング

画像

簡単な紹介

学習プログラム、オペレーティングシステムは、それが何であるかを最終的に、あなたがマスターに必要な知識の基礎、オペレーティングシステムですか?

それは、どのようなオペレーティングシステムは、Windows、Linux、Macの、IOS、Androidは、IOS、そのような私たちは毎日それを使用していないされているものは言うまでもないですか?

それは事実ですが、コンピュータサイエンスなどのオペレーティングシステムは、右、ポイントに背の高いトータルのコンセプトに、あなたがそれを怖がらどのように地球にダウン確かに、基本的な規律ではありません。

導入Baiduの百科事典によると、オペレーティングシステムは、コンピュータプログラムのコンピュータのハードウェアおよびソフトウェアリソースを管理することですが、また、コアとコンピュータシステムの礎石。オペレーティングシステムの必要性が優先順位メモリ管理および構成として対処する、システムは、電源とリソースの要求、制御入力デバイスと出力デバイス、トランザクション・ファイル・システムのネットワークと管理の基本的な動作を決定します。オペレーティングシステムは、ユーザがシステムと対話できるようにユーザーインターフェースを提供します。

その上でこのプレゼンテーション背の高い十分には、その後、最終的にそれは簡単な言葉で、オペレーティングシステムは、ソフトウェアの一部のコンピュータのハードウェアおよびソフトウェアリソースの管理、コンピュータのハードディスク、キーボード、マウス、モニタ、その他の機器は、それを作ってきている、されているオペレーティングシステム管理するために、あなたはこのゲームを開いて、ブラウザや映画鑑賞を開いて、だけでなく、オペレーティングシステムによって実行されます。

オペレーティングシステムがなければ、コンピュータはその魂、ハードウェアのみのちょうど束を失うことになります。

なぜオペレーティングシステムを学びます

オペレーティングシステムの基本的な概念を理解した後、我々は、我々は、オペレーティングシステムを学ばなければならない理由を見て?

まず、当然の、インタビューはそれをテストすることですので。

第二に、あなたは、Javaを学ぶなど、マルチスレッド技術を使用してプログラミングするどのような言語あなたが学ぶ、およびオペレーティングシステムを扱う避けることができない、に関係なく、実際には、オペレーティング・システムはプロセスとスレッドの管理を担当して、Javaでスレッドので、多くの場合、 OSのスレッドやプロセス-1対応。

また、あなたは、そのようなあなたが直接メモリのセクションを割り当てることができ、C ++など、メモリ割り当てに学びます、この時点では、実際のオペレーティングシステムのメモリ割り当てが提供するAPIを呼び出しています。

オペレーティングシステムは、プロセスとスレッドのスケジューリング、メモリ割り当てと管理を管理し、同様に処理し、IOデバイス、だけでなく、ファイルシステムやネットワークの管理を担当するだけでなく。

最も重要なのは、オペレーティングシステムがハードディスクからメモリにロードするコードを担当し、その後、すべてのコンピュータの基礎が実行されているコードを、読み取るためにCPUのメモリを教えてください。

如果不懂操作系统,你在未来学习编程语言的高级特效,涉及到线程进程调度,内存分配,或者是学习Linux相关的知识时,都会一头雾水,所以,只有学会了操作系统,我么才能够更好地学习其他语言和技术。

如何学习操作系统

第一次接触

第一次接触操作系统同样是在我研究生的时候,当时自学计算机网络已经受到了惊吓(被大部头教科书劝退),于是学习操作系统时也更加的小心翼翼,当时我找了一本体量稍微小一点的《操作系统》教科书来学习。

用了大概一周左右的时间,我把这本书翻了一遍,隐隐约约还记得一些概念,进程和线程,进程调度算法、内存管理的分页和分段,页面置换算法,但其实当时压根没有理解这些东西,再过了一周之后也就忘得差不多了。

由于我当时找的多是Java方面的实习,很多公司对于操作系统的考察并不多,偶尔就问问线程和进程的区别,

于是对于操作系统的学习我当时并没有多大的重视,毕竟还有一堆Java的书要啃呢,先都啃到位再说。

入门学习阶段

就这样,我一直保留着只看过一本教科书的操作系统水平,全情投入到复习Java的伟业中了,然而当我学到Java并发编程和JVM的时候,总感觉有哪里不对劲:Java中的线程和操作系统的线程是什么关系,JVM的内存管理和操作系统的内存管理又是什么关系。

我抱着这个疑问学完了Java并发原理和JVM,当然也是一知半解的那种。事后证明,在没有操作系统基础的情况下,越往上层学,摔得越惨,勿用浮沙筑高台,说的便是这个道理,底子打好了,才能往上爬,否则都是浮云。

我在百度实习的那段时间里,再次意识到了操作系统这门课程的重要性,于是我找来了某乎强烈推荐的《深入理解计算机系统》这本史诗级大部头,这本书其实并不是一本纯粹的操作系统书籍,而是结合了计算机组成原理和操作系统两方面的内容,基本上把计算机内部工作的那些原理都给讲清楚了。

第一次看这本书的时候,我坚持了不到三天就放弃了,于是第二次看这本书,我在公司花了快一个月的时间才总算看得差不多。

過去には、私はこの本を読んだ後、どのような結果、私はなど、いくつかのCPU、メモリ、ハードワークの内容の理解、およびプロセッサと仕事を持って、言っているか、確認のx64 x86のも、何ではありませんされませんでしたドアへのオペレーティングシステムとして考え、この時間I。

学習フェーズを強化

光読み取りがインタビューのメーカーに対処するのに十分ではない、システムを動作させる大企業の審査は、百度、テンセントや見出しなど、非常に厳格で、オペレーティングシステムの要件は比較的高いままです。

このプロセスのスレッドと最も簡単なインタビューの質問の違いに加えて、「メモリのページングとセグメンテーション何、「FIFOとLRUアルゴリズムについての話、スケジューリングアルゴリズムのプロセスは何ですか」など、より複雑な問題のいくつかがあるでしょう、LRU「は、デッドロックを解決するために、デッドロックのために必要な条件」「達成するためにどのように具体的にどのように使用することに、あるかとの間の通信のスレッドやプロセス間で通信する」方法ですページ置換アルゴリズムの違い、ページネーション"

このような問題は、より一般的なオペレーティングシステムの顔の質問と考えられるが、明確に答えるために、そして、まだ特定のスキルを必要とすることができます。

私は基本的にブラシ面を通過して戻って深いなかったものを理解することの原理の多くに答えて、このような問題に対処しなければならなかったが、任意の解決策を見つけることができませんでした。

スプリント

彼は結果が悪い、長い時間を学んだので、私は、主要なブログ、技術コミュニティ公衆番号を削除し、オペレーティング・システムに関する多くの記事を読んで、見つかったので、ギャングがそれを直接学ぶこと優れていることは良い話をたくさんコンテンツは、彼らの丸暗記学習よりも信頼性が高いと思われます。

高品質のコンテンツを初めて目には、彼は、メモリ、ハードドライブ、スレッドの話、CPUから始まる、ダースの記事は、オペレーティングシステムに専念している以上持って、本当に逢びきある記事の劉新先生の「コード農民はターンオーバー」でありますこのプロセスは、各記事は、これらのコンピュータは、テキストの物語で最もハードコア概念で導入し、巧みに質問を偏向しているということができます。

システム、オペレーティング・システムを操作するこの一連の記事を読んだ後、私はいくつかの疑問を持っている基本的に排除し、その後、戻って、それらのインタビューの質問を見て、それほど複雑ではないことです。

もちろん、我々はまだターンで表面の入念な準備のための顔の質問に持ってオンにし、財団が前に持っていた後、見逃すことはない顔の質問を知るため、顔の質問にはるかに簡単にそれらを知るために行きます、そしてこれまでのところ、私は学習のオペレーティングシステムは、最後に来ていると思います。

推奨リソース

図書

「コンピュータシステムの深い理解、」
「オペレーティングシステムの概要」

おすすめ

転載: blog.51cto.com/14006572/2470706