mozilla

Compare Revisions

Firefox OS architecture

Change Revisions

Revision 484213:

Revision 484213 by kscarfone on

Revision 508615:

Revision 508615 by gsvelto on

Title:
Firefox OS architecture
Firefox OS architecture
Slug:
Mozilla/Firefox_OS/Platform/Architecture
Mozilla/Firefox_OS/Platform/Architecture
Tags:
"IPC", "B2G", "IPDL", "Firefox OS", "Architecture", "Guide"
"Guide", "Firefox OS", "B2G", "Architecture", "IPDL", "IPC"
Content:

Revision 484213
Revision 508615
tt716    <h2 id="Processes_and_threads">
717      Processes and threads
716    <p>718    </h2>
717      &nbsp;
718    </p>719    <p>
720      Firefox OS uses POSIX threads to implement all application 
 >threads, this includes the main thread of each application as wel
 >l as Web workers and helper threads. Nice values are used priorit
 >ize process and thread execution thus relying on the standard Lin
 >ux kernel scheduler. Depending on the status of a process we assi
 >gn it a different nice level. We've currently got 7 levels:
721    </p>
722    <table class="standard-table" summary="Process priority level
 >s">
723      <caption>
724        Process priority levels
725      </caption>
726      <thead>
727        <tr>
728          <th scope="col">
729            Priority
730          </th>
731          <th scope="col">
732            Nice
733          </th>
734          <th scope="col">
735            Used for
736          </th>
737        </tr>
738      </thead>
739      <tbody>
740        <tr>
741          <td>
742            <code>MASTER</code>
743          </td>
744          <td>
745            0
746          </td>
747          <td>
748            main b2g process
749          </td>
750        </tr>
751        <tr>
752          <td>
753            <code>FOREGROUND_HIGH</code>
754          </td>
755          <td>
756            0
757          </td>
758          <td>
759            applications holding a CPU wakelock
760          </td>
761        </tr>
762        <tr>
763          <td></td>
764        </tr>
765        <tr>
766          <td>
767            <code>FOREGROUND</code>
768          </td>
769          <td>
770            1
771          </td>
772          <td>
773            foreground applications
774          </td>
775        </tr>
776        <tr>
777          <td>
778            <code>FOREGROUND_KEYBOARD</code>
779          </td>
780          <td>
781            1
782          </td>
783          <td>
784            keyboard application
785          </td>
786        </tr>
787        <tr>
788          <td>
789            <code>BACKGROUND_PERCEIVABLE</code>
790          </td>
791          <td>
792            7
793          </td>
794          <td>
795            background applications playing audio
796          </td>
797        </tr>
798        <tr>
799          <td>
800            <code>BACKGROUND_HOMESCREEN</code>
801          </td>
802          <td>
803            18
804          </td>
805          <td>
806            homescreen applocation
807          </td>
808        </tr>
809        <tr>
810          <td>
811            <code>BACKGROUND</code>
812          </td>
813          <td>
814            18
815          </td>
816          <td>
817            all other applications running in the background
818          </td>
819        </tr>
820      </tbody>
821    </table>
822    <p>
823      Some levels share the same nice values, that's because thos
 >e levels currently differ in the way they're treated by the out-o
 >f-memory killer. All priorities can be adjusted at build time via
 > preferences; the relevant entries can be found in the <code>b2g/
 >app/b2g.js</code> file.
824    </p>
825    <p>
826      Within a process the main thread inherits the nice value of
 > the process whilst web worker threads are given a nice value tha
 >t is one point higher than the main thread thus running at lower 
 >priority. This is done in order to prevent CPU-intensive workers 
 >from excessively slowing down the main thread. Processes prioriti
 >es are changed whenever a major event happens such as an applicat
 >ion is sent into the background or foreground, a new application 
 >is started up or an existing application grabs a CPU wake-lock. W
 >henever a process priority is adjusted all its threads' prioritie
 >s will also be adjusted accordingly.
827    </p>
828    <div class="note">
829      <p>
830        <strong>Note:</strong> cgroups are not currently used for
 > resource management as they've proven unreliable on certain devi
 >ces and kernels.
831      </p>
832    </div>

Back to History