1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Tasks, Services, Threads (multi?), RAM

Dieses Thema im Forum "T-Mobile G1 Forum" wurde erstellt von cobii, 16.03.2009.

  1. cobii, 16.03.2009 #1
    cobii

    cobii Threadstarter Junior Mitglied

    Beiträge:
    26
    Erhaltene Danke:
    4
    Registriert seit:
    05.03.2009
    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!
     
  2. friedger, 16.03.2009 #2
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    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
     
  3. Autarkis, 16.03.2009 #3
    Autarkis

    Autarkis Android-Lexikon

    Beiträge:
    1,016
    Erhaltene Danke:
    49
    Registriert seit:
    28.02.2009
    Ganz zuvorderst: Ich bin in Linux ziemlich versiert, aber ich bin kein Programmierer.

    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)


    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.

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

    Ja, SDRAM. (Softpedia: G1)


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


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

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

    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:

  4. friedger, 16.03.2009 #4
    friedger

    friedger Erfahrener Benutzer

    Beiträge:
    175
    Erhaltene Danke:
    15
    Registriert seit:
    15.01.2009
    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.
     
  5. Autarkis, 16.03.2009 #5
    Autarkis

    Autarkis Android-Lexikon

    Beiträge:
    1,016
    Erhaltene Danke:
    49
    Registriert seit:
    28.02.2009

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

    Mal gucken...


    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.



    Stimme zu.


    Stimme zu.


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



    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.

    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.

    :)
     
  6. kanzlr, 17.03.2009 #6
    kanzlr

    kanzlr Android-Hilfe.de Mitglied

    Beiträge:
    80
    Erhaltene Danke:
    10
    Registriert seit:
    02.03.2009
    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.
     
  7. ikarusx3, 17.03.2009 #7
    ikarusx3

    ikarusx3 Fortgeschrittenes Mitglied

    Beiträge:
    449
    Erhaltene Danke:
    516
    Registriert seit:
    03.02.2009
    Phone:
    Z5C & M7
    Wearable:
    LG GWR
    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...)
     
  8. Autarkis, 17.03.2009 #8
    Autarkis

    Autarkis Android-Lexikon

    Beiträge:
    1,016
    Erhaltene Danke:
    49
    Registriert seit:
    28.02.2009
    Cool, das wusste ich nicht.

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

    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. :)
     
  9. ikarusx3, 17.03.2009 #9
    ikarusx3

    ikarusx3 Fortgeschrittenes Mitglied

    Beiträge:
    449
    Erhaltene Danke:
    516
    Registriert seit:
    03.02.2009
    Phone:
    Z5C & M7
    Wearable:
    LG GWR
    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.

    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.
     
  10. Autarkis, 17.03.2009 #10
    Autarkis

    Autarkis Android-Lexikon

    Beiträge:
    1,016
    Erhaltene Danke:
    49
    Registriert seit:
    28.02.2009
    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.

    Biologie für Einsteiger :D:

    Quasi der Ursprung des Systems. ;)


    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. ;)
     
  11. mcules, 18.03.2009 #11
    mcules

    mcules Junior Mitglied

    Beiträge:
    31
    Erhaltene Danke:
    4
    Registriert seit:
    24.02.2009
    Passt ja irgendwie. Killst du sie, muß man(n) wieder von vorne anfangen ^^
     
  12. Autarkis, 18.03.2009 #12
    Autarkis

    Autarkis Android-Lexikon

    Beiträge:
    1,016
    Erhaltene Danke:
    49
    Registriert seit:
    28.02.2009
    Gelle? Ich finds super. Linux-Hacker haben einfach Humor. :)
     
  13. mcules, 18.03.2009 #13
    mcules

    mcules Junior Mitglied

    Beiträge:
    31
    Erhaltene Danke:
    4
    Registriert seit:
    24.02.2009
    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 ^^
     

Diese Seite empfehlen