Entwickler unterscheiden zwischen Systemanwendungen und Benutzeranwendungen, da diese Anwendungen für unterschiedliche Verwendungszwecke ausgelegt sind. Im Zusammenhang mit WinEC7-Geräten bezieht sich der Begriff Systemanwendung auf eine Anwendung, die eine Schnittstelle zwischen dem Benutzer und dem System bildet. Im Gegensatz dazu ist eine Benutzeranwendung ein Programm, das eine Schnittstelle zwischen dem Benutzer und den anwendungsspezifischen Daten bereitstellt. Wie Benutzeranwendungen können Systemanwendungen eine Benutzeroberfläche oder Eingabeaufforderung umfassen. Benutzeranwendungen werden üblicherweise vom Bedienpersonal gestartet, während Systemanwendungen automatisch mit dem Betriebssystem starten.
Auch Benutzeranwendungen können so konfiguriert werden, dass sie automatisch während des WinEC7-Initialisierungsprozesses gestartet werden. Dieses Verhalten kann so angepasst werden, dass die Anwendungen entweder vor oder nach dem Laden der Benutzeroberfläche starten. Eine Methode zum Festlegen des Verhaltens ist das Ändern mehrerer Registrierungseinstellungen, die das Startverhalten der Anwendung steuern. Eine andere Methode ist das Erstellen einer Verknüpfung zur Anwendung im Ordner „Autostart“, damit die Anwendung von Anfang an startet.
Die WinEC7-Registrierung enthält mehrere Einträge zum Starten der Betriebssystem-Komponenten und -anwendungen, beispielsweise des Geräte-Managers und des GWES (Graphical Windows Event System). Diese Registrierungseinträge befinden sich unter dem Registrierungsschlüssel HKEY_LOCAL_MACHINE\INIT.
Thread-Scheduling: alles der Reihe nach
Windows Embedded Compact 7 ist ein Multithread-Betriebssystem. Eine Anwendung »Hello.exe« (Bild 2) wird als Prozess bezeichnet. Ein Prozess ist eine Instanz einer Anwendung. Der Verarbeitungskontext eines Prozesses kann einen virtuellen Adressraum, ausführbaren Code, Handles für Systemobjekte, einen Sicherheitskontext, eine eindeutige Prozess-ID und Umgebungsvariablen umfassen. Außerdem ist möglicherweise ein primärer Ausführungs-Thread vorhanden. Ein Thread ist die Basisausführungseinheit, die vom Scheduler verwaltet wird. In einem Windows-Prozess kann ein Thread weitere Threads erstellen. Es ist keine maximale Thread-Anzahl pro Prozess festgelegt. Die maximale Anzahl hängt von den verfügbaren Speicherressourcen ab, da der von einem Thread belegte Speicher begrenzt ist. Die Anzahl der Prozesse in Windows Embedded Compact 7 ist auf maximal 32 000 beschränkt.
Windows Embedded Compact unterstützt das präemptive Multitasking, um mehrere Threads von verschiedenen Prozessen gleichzeitig auszuführen. WinEC7 bringt die Threads abhängig von ihrer Priorität zur Ausführung. Jedem Thread im System ist eine Priorität zwischen 0 und 255 zugeordnet. 0 ist die höchste Priorität. Der Scheduler verwaltet eine Prioritätsliste und wählt den nächsten auszuführenden Thread entsprechend der Priorität in einem »Round Robin«-Verfahren aus. Threads mit der gleichen Priorität werden willkürlich der Reihe nach ausgeführt. Das Thread-Scheduling wird durch einen Zeitintervall-Algorithmus gesteuert. Jeder Thread kann nur für eine begrenzte Zeitdauer ausgeführt werden. Das maximale Zeitintervall für die Thread-Ausführung wird als Quantum bezeichnet. Nachdem das Quantum abgelaufen ist, unterbricht der Scheduler den Thread und fährt mit dem nächsten Thread in der Liste fort.