2016-04-30 16 views
0

2つのアプリケーションAとBが開いているとします。Bは、ローカル環境の呼び出しを使用してユーザーに通知を表示します(例:displayNotification("Hello."))。しかし、システムは、タイトル「アプリケーションBが言う」に表示され、その後、所望のテキストが表示される。オペレーティングシステムは、その関数を呼び出したアプリケーションの名前をどのように知っていますか?彼らはどのようにこれを扱うのですか?オペレーティングシステムは、どのプロセスが関数を呼び出すのかをどのように知っていますか?

もう1つの例はマルチタスクです。両方のアプリケーションが同じインターバル期間を持つタイマーを開始すると決めたとしましょう。しかし、フォアグラウンドにないアプリケーションの間隔を一時停止して、デバイスのリソースを節約し、アプリケーションがフォアグラウンドに戻されたときに再開するだけです。繰り返しますが、このケースはどのように処理されますか?

私はこれらの質問が良い読書を頼むかもしれないことを実感しています。だから誰もこのトピックに関する良い本を教えてくれますか?ありがとうございました。

答えて

1

オペレーティングシステムはすべてを管理しています。アプリがフォアグラウンドで実行されている場合は、OSがそれを指示したためです。だから、何が起こっているのか知っている。現代のCPUハードウェアでは、OSはのリングで実行されるので、CPUは他のコードを中断して他の処理を行うことができます。

内部的には、OSはプロセス制御ブロックと呼ばれる構造でマルチタスクを追跡します。プロセス名、プロセスID、メモリ割り当て、タイマーなどを追跡します。 PCBは、OSがプロセスについて知る必要があるすべてを記録するスクラッチペーパーの大きな断片のようなものです。

インターバルタイマは、通常、オペレーティングシステム自体によって管理されるため、OSがプロセスのタイマを一時停止したい場合は、プロセス制御ブロックを調べて割り当てられたタイマーを確認し、一時停止します。

オペレーティングシステムの詳細については、Silberschatz、Gagne、Galvinのオペレーティングシステムの概念(「The Dinosaur Book」)の古いコピーを検索することをおすすめします。新版は、より複雑な最新のオペレーティングシステムをカバーしており、教科書なので多額の費用がかかります。 Tannenbaumの最新のオペレーティングシステムもお勧めします。

+0

こんにちはDaveは、このためにどうもありがとうございました! – lmenus

+1

こんにちはデイブ、私はあなたの答えをもう一度あなたに感謝するためにここに来た!お勧めの本は、私がOSについて持っていたすべての質問に完全に答えるものです。それだけでなく、便利なことに、他のボイドを埋めることができ、私はまったく期待していなかったOSとは関係のないコンピューティングに関する私の質問に答えます!さらに、よく書かれていますが、これはまれなことです。多くの人がこのように良い方法で書くことができないので、私はさらに読むことに興味を持っています。私はあなたのためにこの1つを借りています!あなたが助けを必要とするなら、私はおそらくどこでも同じハンドルと名前でどこでもオンラインですから、連絡を取って自由にお気軽にしてください。 – lmenus

0

オペレーティングシステムは、この関数を呼び出したアプリケーションの名前をどのように知っていますか?彼らはどのようにこれを扱うのですか?

これは技術的にはオペレーティングシステムの機能ではありません(オペレーティングシステムをカーネルとみなす場合)。アプリケーションの名前を知っているグラフィカルユーザーインターフェイス(X、UIS、Windozeなど)です。典型的には、アプリケーション名等を与えるGUIの初期化機能がある。

たとえば、両方のアプリケーションが同じインターバル期間を持つタイマーを開始するとします。しかし、フォアグラウンドにないアプリケーションの間隔を一時停止して、デバイスのリソースを節約し、アプリケーションがフォアグラウンドに戻されたときに再開するだけです。繰り返しますが、このケースはどのように処理されますか?

オペレーティングシステムのタイマーは、バックグラウンドで動作します。バックグラウンドアプリケーションのタイマーを一時停止したい場合は、プログラムでそれを行います。アプリケーションは独自のカウンタを持つ必要があり、タイマーを2秒程度かけるように設定します。タイマーがオフになると、カウンターをインクリメントして新しいタイマーを設定します。あなたがバックグラウンドにいるときにタイマーが消えたら、新しいタイマーを設定しません。アプリケーションは、フォアグラウンドにあることの通知を受け取ると、新しいタイマーを設定します。

あなたはより多くの情報を検索したい場合は、はあなたが興味のあるものは何でもシステムのためのユーザインタフェースのドキュメントを見て必要があると思いますが。

+0

こんにちは、ありがとうございました!正直言って、私は自分のOSを実装することにもっと興味があります。つまり、私が作成しようとしているわけではありませんが、私が試みた場合、そのような堅牢なシステムを構築する背後にある論理が何であるかを知りたがっています。もう一度ありがとう – lmenus

関連する問題