Tasks, Services, Threads (multi?), RAM

cobii

cobii

Neues Mitglied
4
Hallo Ihr Androiden,

seit 10 Tagen spiele ich nun mit einem G1 rumm und weiß immer noch nicht ob ich es behalten will. Egal!

Zum Thema:

Ich habe mit dem Service Viewer mir versucht einen Überblick über die laufenden Anwendungen zu verschaffen. Kann mir vielleicht noch einmal jemand genau aufdröseln was

Prozesse,Tasks und Services sind. Welche Aufgaben sie im OS übernehmen, wem sie "gehören", wie man sie stoppen kann wenn es die "eigenen" sind.

Ob der Android nun wirklich voll Multitasking fähig ist und wenn ja:

Wie kommt es, dass ich zum Beipiel K-9 Anweise 25 Kopfzeilen zu laden, dann mittels langem Druck auf den Hausknopf zu einem andern Programm wechsele, um nach einem erneuten zurückwechseln festzustellen, dass K-9 pausiert zu haben scheint?

Was heißt es genau wenn in der Produktbeschreibung steht "192MB RAM intern / 256 Flash Speicher".
Ist der "RAM" ein echter flüchtiger RAM? Wo ist das OS gespeichert? Ist das OS nicht auf einem ROM gespeichert? Werden von den 256MB schon Teile für das OS angeknapst?
Hat Android ein "Auslagerungsdatei"?

Ich weiß das viele dieser Fragen an einzelnen Stellen im Forum mehr oder weniger genau beantwortet werden. Ich würde mich einfach freuen, wenn jemand der sich gut mit dem Betriebssystem und der Hardware auskennt einfach nocheinmal eine Beschreibung des Systems schreiben könnte. Muss ja auch nicht gleich heute Abend sein!

Als bald liebste Grüße aus Hamburg
Christian

Ach ja ich habe ein Standrt G1 mit Telekomvertrag. Und an alla Aachener: Es tut mir nicht leid, dass Ihr gestern 1:3 gegen St.Pauli verloren habt, auch wenn Ihr ein nettes Stadion habt!
 
Prozesse gehören dem Betriebssystem und können nur den root user beendet werden. Die Aufgabe in Android eines Prozesses ist eine Anwendung von anderen zu kapseln.

Tasks ist ein allgemeiner Begriff und hat m.E. keine spezielle Bedeutung in Android.

Ein Service ist ein Teil einer Android Anwendung. Ein Service hat keine UI und kann im Hintergrund laufen.

Multitask? Kommt darauf an, was Du darunter verstehst. Zum einen kann kann immer nur eine Anwendung im Vordergrund sein, zum anderen können beliebig viele Threads gleichzeitig laufen.
Es gibt aber eine Logik zubeachten, wenn Threads die UI ansprechen. Threads haben in Android im Gegensatz Services keine definierten Lebenszyklus. Deshalb ist in den meisten Fällen ein Service vorzuziehen.

Friedger
 
Ganz zuvorderst: Ich bin in Linux ziemlich versiert, aber ich bin kein Programmierer.

cobii schrieb:
Prozesse,Tasks und Services sind. Welche Aufgaben sie im OS übernehmen, wem sie "gehören", wie man sie stoppen kann wenn es die "eigenen" sind.

Ein Prozess unter Linux ist dasselbe wie ein Task unter Windows.

Ein Service ist ein Android-Prozess der im Hintergrund läuft.

Ein Prozess unter Linux gehört dem User, der ihn gestartet hat. Die Zugehörigkeit eines Prozesses zu einem User wird über die UID geleistet. Wenn du einen Prozess auf dem Desktop startest, ist das immer der Anwender (UID 10001 glaub ich). Wenn das System selbst einen Prozess ausführt, wird dieser mit der UID 0 (die User-ID des root-Users) ausgeführt.

In Android gibt es verschiedene User (Oder echte Usergruppen? Ich hab das noch nicht ganz durchschaut) die verschiedene Rechte haben, z.B. Rechte Sound auszugeben etc. Dieses UNIX-Permissions (= UNIX-Rechte) Modell erlaubt die eleganten, transparenten Angaben in der Art "Diese Anwendung will folgendes mit deinem Telefon machen: SMS verschicken...". (siehe auch die Datei /system/etc/permissions.xml im Anhang)


cobii schrieb:
Ob der Android nun wirklich voll Multitasking fähig ist und wenn ja:

Oh ja! Die Anwendung muss aber explizit einen Service starten, um im Hintergrund tätig sein zu dürfen, sonst kriegt sie vom System das Signal STOP (offizielle UNIX-Signale - möglicherweise nicht alle von Android unterstützt) ). Wenn man sie wieder in den Vordergrund nimmt, kriegt sie das Signal CONT.

cobii schrieb:
Wie kommt es, dass ich zum Beipiel K-9 Anweise 25 Kopfzeilen zu laden, dann mittels langem Druck auf den Hausknopf zu einem andern Programm wechsele, um nach einem erneuten zurückwechseln festzustellen, dass K-9 pausiert zu haben scheint?

Es hat pausiert. :) Weil K-9 nicht als Service implementiert ist.

cobii schrieb:
Was heißt es genau wenn in der Produktbeschreibung steht "192MB RAM intern / 256 Flash Speicher".
Ist der "RAM" ein echter flüchtiger RAM?

Ja, SDRAM. (Softpedia: G1)


cobii schrieb:
Wo ist das OS gespeichert? Ist das OS nicht auf einem ROM gespeichert? Werden von den 256MB schon Teile für das OS angeknapst?

In den 256 MB Flash (NAND) Speicher. EEPROMs haben zu langsamen Zugriff - da hätte der Androide 10 Minuten bis er gebootet wäre.


cobii schrieb:
Hat Android ein "Auslagerungsdatei"?

Es gibt ein Verzeichnis /cache wo sich so allerlei ansammelt...

cobii schrieb:
Ich weiß das viele dieser Fragen an einzelnen Stellen im Forum mehr oder weniger genau beantwortet werden. Ich würde mich einfach freuen, wenn jemand der sich gut mit dem Betriebssystem und der Hardware auskennt einfach nocheinmal eine Beschreibung des Systems schreiben könnte. Muss ja auch nicht gleich heute Abend sein!

Mit dem OS kenn ich mich aus - Linux-user seit 2001. :D

cobii schrieb:
Als bald liebste Grüße aus Hamburg
Christian

Ach ja ich habe ein Standrt G1 mit Telekomvertrag. Und an alla Aachener: Es tut mir nicht leid, dass Ihr gestern 1:3 gegen St.Pauli verloren habt, auch wenn Ihr ein nettes Stadion habt!

Fussball interessiert mich nicht. :D Ich hoffe mein Beitrag hat dir geholfen und auch dass ich meinem Vorredner nicht zu heftig widersprochen habe. :p
 

Anhänge

  • permissions.xml.txt
    6,4 KB · Aufrufe: 171
Ich kann keine Widerspruch finden, oder habe ich was falsch verstanden?

Zu k9 kann ich noch sagen, dass es zwar einen MailService gibt, der aber nicht aktiviert ist.
 
friedger schrieb:
Ich kann keine Widerspruch finden, oder habe ich was falsch verstanden?

Zu k9 kann ich noch sagen, dass es zwar einen MailService gibt, der aber nicht aktiviert ist.


Vor allem hab ich das gesagt, weil ich absichtlich ohne deinen Beitrag zu lesen gepostet habe.

Mal gucken...


friedger schrieb:
Prozesse gehören dem Betriebssystem und können nur den root user beendet werden.

Hm, nicht alle Prozesse gehören dem Betriebssystem und auch nicht alle gehören dem root-User. Wenn man auf dem G1 "ps" eingibt, sieht man in der ersten Spalte welchem Benutzer die Anwendung zuzuordnen ist. Nur die ganz basalen Betriebssystemtasks gehören root.



friedger schrieb:
Die Aufgabe in Android eines Prozesses ist eine Anwendung von anderen zu kapseln.

Tasks ist ein allgemeiner Begriff und hat m.E. keine spezielle Bedeutung in Android.

Stimme zu.


friedger schrieb:
Ein Service ist ein Teil einer Android Anwendung. Ein Service hat keine UI und kann im Hintergrund laufen.

Stimme zu.


friedger schrieb:
Multitask? Kommt darauf an, was Du darunter verstehst. Zum einen kann kann immer nur eine Anwendung im Vordergrund sein, zum anderen können beliebig viele Threads gleichzeitig laufen.

Genauso wie in Windows und UNIX auch immer nur ein Fenster das vorderste sein kann. In dem Sinne stimme ich zu.



friedger schrieb:
Es gibt aber eine Logik zubeachten, wenn Threads die UI ansprechen. Threads haben in Android im Gegensatz Services keine definierten Lebenszyklus.

Hier muss ich ergänzen:

Ein Thread ist ein Task (oder Prozess in UNIX-Sprache), der für sich allein nicht existieren kann. Ein Thread ist immer einem Mutterprozess untergeordnet.

In einem UNIX-System (wie Android) ist ein Thread keine deklarierte Eigenschaft eines Prozesses. Ein Prozess der von einem anderen Prozess aufgerufen wird, kann man als Thread ansehen. Denke ich.

Ich glaube, du wolltest eigentlich Task schreiben - das war ein Tippfehler. :) Denn Tasks werden vom Betriebssystem nach einem Force Close automatisch wieder gestartet - sie haben dann aber eine andere Prozess-ID (PID) und liegen an einem anderen Ort im Speicher. Man kann also unter Android nicht damit rechnen, dass die Anwendung mit der man eben "gesprochen" hat, noch am selben Ort ist. Bei einem Absturz der Anwendung gibt es nämlich eben keinen Fehler, sondern sie wird einfach neu gestartet.

friedger schrieb:
Deshalb ist in den meisten Fällen ein Service vorzuziehen.

Services haben auch nachteile - besonders auf mobilen Geräten, und besonderes auf dem G1: Sie verbrauchen nämlich CPU-Leistung und damit auch wertvolle Akku-Leistung, auch wenn sie unter Umständen gar nicht benötigt werden. Deshalb sollte man mit Services so sparsam wie möglich umgehen.

:)
 
der Entwickler von K-9 wird das einfach so gebaut haben.

um den programm lifecycle kümmert sich android selber, nicht der programmierer. der kann nur sagen, was passieren soll, wenn android das programm pausiert oder schließt. er wird das halt eben nicht im hintergrund als service laufen lassen.
 
Android hat ein ganz witziges Konzept zur Ressourcenverwaltung. Programme/Dienste/leere Prozesse können beendet werden wenn Ressourcen angefordert werden, aber nicht verfügbar sind. Daher sind alle Android-Anwendungen angehalten, ihren Status immer speichern zu können, für den Fall dass sie mal über den Jordan gehen.

Dass nur der root-user Prozesse beenden kann liegt nicht daran, dass sie ihm gehören, sondern dass Android ein Sicherheitskonzept implementiert hat, der Anwendungen nur durch APIs aufeinander zugreifen lässt. Der Task Manager kann ohne root-Berechtigungen andere Tasks nciht beenden weil Androids Sicherheitsmodell das verbietet.

Ansonsten, natürlich richtiges Multitasking (ggü vielen vielen anderen Geräten). Services sind alle die Prozesse die nach dem killen automatisch neu starten :) man kann also kaum was falsch machen beim Prozesse killen (wobei ich mich erinnern kann man einen zuviel beendet zu haben, das war aber nicht in einem Android-App sondern im Debian...)
 
ikarusx3 schrieb:
Android hat ein ganz witziges Konzept zur Ressourcenverwaltung. Programme/Dienste/leere Prozesse können beendet werden wenn Ressourcen angefordert werden, aber nicht verfügbar sind. Daher sind alle Android-Anwendungen angehalten, ihren Status immer speichern zu können, für den Fall dass sie mal über den Jordan gehen.

Cool, das wusste ich nicht.

ikarusx3 schrieb:
Dass nur der root-user Prozesse beenden kann liegt nicht daran, dass sie ihm gehören, sondern dass Android ein Sicherheitskonzept implementiert hat, der Anwendungen nur durch APIs aufeinander zugreifen lässt. Der Task Manager kann ohne root-Berechtigungen andere Tasks nciht beenden weil Androids Sicherheitsmodell das verbietet.

Eigentlich ist es weder das Android- noch das Linux-Sicherheitsmodell sondern das UNIX Sicherheitsmodell.

ikarusx3 schrieb:
Ansonsten, natürlich richtiges Multitasking (ggü vielen vielen anderen Geräten). Services sind alle die Prozesse die nach dem killen automatisch neu starten :) man kann also kaum was falsch machen beim Prozesse killen (wobei ich mich erinnern kann man einen zuviel beendet zu haben, das war aber nicht in einem Android-App sondern im Debian...)

Uhm, dann gib mal auf einem gerooteten (logisch) Telefon folgendes ein:

Code:
su
kill `pidof zygote`

Und schon raucht das Telefon mit einem Reboot ab. :D (Keine Angst, es kommt wieder, aber erstmal PIN eingeben ;))

Tasks abschiessen ist gefährlich. root ist mächtig. Mit root Tasks abschiessen ist mächtig gefährlich! :cool:

P.S.: Für die, die es ausprobieren wollen: Darauf achten dass der Teilbefehl pidof zygote in Gravis-Akzenten ` und nicht in Apostroph ' gesetzt ist. Für die Shell ist das nämlich ganz was anderes. :)
 
Autarkis schrieb:
Eigentlich ist es weder das Android- noch das Linux-Sicherheitsmodell sondern das UNIX Sicherheitsmodell.
Es ist doch bei android so, dass jede Anwendung in einer eigenen Dalvik VM ausgeführt wird. Wenn ich unter linux 2 Anwendungen starten können die durchaus interagieren, wenn beide als user gestartet sind...z.b. kill einer App im Terminal.

Autarkis schrieb:
kill `pidof zygote`
Genau das app wars :D Klang irgendwie nicht als gehörts zu Android...falsch gedacht.

Und was heißt gefährlich...systemfreeze ist wahrlich nicht schlimm, nur annoying...gefährlicher wird mit einem system-remount und dann da drin rumbasteln. Da hilft nämlich auch neustarten nimmer.
 
ikarusx3 schrieb:
Es ist doch bei android so, dass jede Anwendung in einer eigenen Dalvik VM ausgeführt wird. Wenn ich unter linux 2 Anwendungen starten können die durchaus interagieren, wenn beide als user gestartet sind...z.b. kill einer App im Terminal.

Ja stimmt. Also, wenn beide dieselben User hätten, könnten sie sich gegenseitig killen. Aber auch dann: Systemprozesse könnten sie nicht killen! So ist es unter UNIX generell. Unter Android gibt es eben diese "virtuellen user" namesn app_032, app_152 und so weiter. Diese können sich dann gegenseitig nicht mehr tun.

ikarusx3 schrieb:
Genau das app wars :D Klang irgendwie nicht als gehörts zu Android...falsch gedacht.

Biologie für Einsteiger :D:

http://de.wikipedia.org/wiki/Zygote schrieb:
Eine Zygote ist eine befruchtete Eizelle (diploid), die durch Verschmelzung zweier haploider Geschlechtszellen (Gameten) entsteht – meistens aus einer Eizelle (weiblich) und einem Spermium (männlich).

Quasi der Ursprung des Systems. ;)


ikarusx3 schrieb:
Und was heißt gefährlich...systemfreeze ist wahrlich nicht schlimm, nur annoying...gefährlicher wird mit einem system-remount und dann da drin rumbasteln. Da hilft nämlich auch neustarten nimmer.

War ja nur ein Beispiel. Einen anderen Prozess zu killen, während er in Arbeit ist, z.B. pdflush kann dich ein paar Dateien und ein fsck.vfat über deine SD-Karte kosten. Bitte nicht ausprobieren. ;)
 
Autarkis schrieb:
Biologie für Einsteiger :D:

Zitat von Zygote ? Wikipedia
Eine Zygote ist eine befruchtete Eizelle (diploid), die durch Verschmelzung zweier haploider Geschlechtszellen (Gameten) entsteht – meistens aus einer Eizelle (weiblich) und einem Spermium (männlich).

Quasi der Ursprung des Systems. ;)
Passt ja irgendwie. Killst du sie, muß man(n) wieder von vorne anfangen ^^
 
mcules schrieb:
Passt ja irgendwie. Killst du sie, muß man(n) wieder von vorne anfangen ^^

Gelle? Ich finds super. Linux-Hacker haben einfach Humor. :)
 
Ich glaub in der Branche mußt du den Humor auch haben, ansonsten kann man uns nach spätestens einem Jahr in schicken weißen Jacken besuchen ^^
 

Ähnliche Themen

J
  • jakbold
Antworten
5
Aufrufe
1.718
DiSa
D
T
  • Timuuh
Antworten
4
Aufrufe
1.408
Timuuh
T
k3v.4
Antworten
13
Aufrufe
2.182
k3v.4
k3v.4
Zurück
Oben Unten