0

本当に答えられない質問があるので、誰かがここで光を当てることができるのだろうか.

基本的に、アプリを実行する前と実行中に iOS で何が起こっているかを知りたいのですが、OS の観点からです。

ユーザーがメイン画面でアプリをタップするとどうなるかについて多くの投稿を見てきましたが、アプリが制御を取得し、メインが UIApplication のシングルトンを実行する前に、基本的に舞台裏で何が起こるかを知りたいと思っています。また、アプリが実行されると、アプリのメイン実行ループで OS 全体がブロックされますか、それとも何か他のことが起こっていますか?

特に、UIApplication が実行されるプロセスを誰が作成したかを理解したいと思います (したがって、アプリ全体がそのプロセス内で実行されると思います)。

また、たとえば、アプリで接続を開いたときに OS が何をしているのかを知りたいです...新しいスレッドが作成されていることがわかります (クラッシュレポートを見ると、メインのもの)、しかし、どこで誰がそれらを作成したのかわかりません(UIApplication自体?、アプリを起動する前にすでに実行されている場所?)。

質問が明確であることを願っています。情報を見つけるためにあちこち検索しましたが、アプリをタップすると、main() が実行され、制御を取得し、デリゲートやビューなどを処理する UIApplication が呼び出されるだけです...しかし、何が起こっているのかOSは謎です。

iOS 部分に関連するリソースはありますか? ありがとう!

4

1 に答える 1

0

iPhoneのオペレーティングシステムは、他の最新のオペレーティングシステムと非常によく似ています。低レベルの機能を提供するカーネル、高レベルの機能を提供するAPI(アプリケーションまたはOS自体のいずれか)などがあります。

OS自体には常に生きているプロセスがたくさんあります。デバイスが通知を受信したり、通話を受信したり、接続を管理したり、実行する必要があるものは何でもできるという事実を考えてみてください。

アプリケーションを起動するときに変更されるのは、プロセスが起動され、その制御がアプリケーションに与えられることだけです。

また、アプリが実行されると、OS全体がアプリのメイン実行ループでブロックされますか、それとも何か他のことが起こっていますか?

OS全体がブロックされることはなく、起動されるプロセスは、常に実行される他の多くのプロセスと一緒にスケジュールされるだけです。これは、マルチタスクによって実現されます。

特に、UIApplicationが実行されるプロセスを誰が作成するのかを理解したいと思います(したがって、アプリ全体がそのプロセス内で実行されると思います)。

プロセスはOS自体によって作成されます。これは、起動されたばかりのアプリケーションを管理してスケジュールするための新しいプロセス構造を示します(フォアグラウンドで実行されるため、優先度が高くなります)。

(UIApplication自体?、アプリを起動する前にすでに実行されていますか?)。

スレッドは、コードがあり、実際に何かを実行するという意味でプロセスに似ていますが、多くのスレッドは1つのプロセスで管理できるため、スレッドは軽量です。つまり、アプリケーション(またはAPI呼び出し)は、アプリケーションのメインスレッドと一緒に実行され、それらの操作を管理するスレッドを作成できますが、これらのスレッドはすべて、同じCPU割り当て時間と同じメモリスペースなどを共有します。実際、Cocoaは開発者の観点から詳細の多くを隠しているため、アプリケーションによって自動的に開始されるスレッドを正確に気にする必要はありません。オブジェクト間でメッセージをディスパッチしたり、管理したりするために使用されます。非同期イベントなど。

しかし、これは氷山の一角にすぎません。iOSがどのように機能するかを理解する前に、低レベルのインフラストラクチャがどのように機能するかを学ぶ必要があります。たとえば、iOSが動作しているカーネルであるDarwinの祖先の1つであるBSDUnixなどですそれがどのように機能するかを理解した後、それを超えるインフラストラクチャ(iOSとそのAPI)がどのように機能するかについても理解します。

于 2012-09-19T23:36:25.063 に答える