Linux and real time - Linux

Yes, I know there are some distributions that support real time, but I want to come at this issue from a different angle. If you are not familiar with low levels of the Linux OS, please do NOT speculate ! If you are familiar and I am talking crazy, just say so !!
Back in the early 70s, there was a "load and go" OS for PDP-11 computers called RT-11. It was very simple. While you could develop real time "embedded" applications on the target machine, DEC wanted you you to buy a second system for development. The application was transferred to the target machine via paper tape or some other slow simple mechanism (DECtape ?). The target was rebooted into the now load application and off it went. Crude but effective. Thousand and thousand of system were built around this hardware and software.
Time went on and eventually another "layer" was add on top of RT-11 ( developed by S&H Computing) called TSX-11. It allowed the target application to run in the "foreground" while having a "background" for an interactive user to develop the application.
So here is my question
Seeing as most SOCs have 4 or more processors, is it possible for Linux to only use 3 of them ? The 4th processor would run the application in real time (foreground), implying it would have to handle interrupts for those devices it controled. Linux would be running in the "background" and handling all of the "standard" IO. Linux would talk to the foreground via shared memory (pipe).
The big challenges would be loading the foreground application, starting and stopping it.

Related

Memory boosting apps... real or fake

Everyone knows computers, phones, pda, slows as the memory fills. Now there are ssome apps on the market that say they speed up you phone. So far I count three
- Memory up Professional
- Memory up Personal
- Memory for Lemmings
Has anyone tried any of these? What do you have to say about them? Do they work? Are you to skeptical (scarred) to try them?
I tried memory up Professional but didn't seem to work also its shareware
Memory for lemming seemed more simple but memory number keep jumping around there should be a log/graph for memory usage like windows task manager (I probably should email him that)
Haven't tried mem up personal though,
To an extend they work but overall they have no use. Android OS is built around killing services after some time and keeping the phone running in top performance. Those memory programs might free up a few KB's but not much use on that part, unless you have a program that allows you to kill services and stuff, which might have a practical use. Overall my answer is they are pretty much fake!
Just look at the definition of Lemming...
Lemming
The act of following the crowd into an investment that will inevitably head for disaster.
The version Memory for Lemmings is essentially garbage as well. He only made it to prove a point that the effects of the other pay programs are useless.
I used Memory Up when my G1 was working (doing a warranty, still waiting for the mail). It did not appear to do anything. Some claimed it did, I claim placebo effect for them.
The first thing I checked when running it was whether or not it killed open apps, it did not. Useless in my opinion. Wait for a real task manager.
From what I understand it does the same thing Oxios Memory does for Windows Mobile... it merely compacts RAM by clearing up system memory providing a slight boost but non noticeable to the human eye or feel. Android system by default will keep up to 6 applications running in the background and closes the oldest app. when the 7th application is opened (hold down the home key and try it out yourself). From what I have noticed, (and there is not real way to track virtual/RAM memory in the G1, if you don't turn off your phone but every few days... then the memory programs WILL help (slightly) to avoid the inevitable power off to clear system RAM or cool off the circuit board.
Lol welcome to the land of the stupid. I explain not only WHAT the app MemoryForLemmings does , but also HOW it does it right in the description. Not only that but I also suggest a google search term which tells you ALL ABOUT Garbage collection. But for the Google inept here we go.
Every java program has variables and objects in it. These objectd consume memory - both on the java heap and also indirectly the system. Now Old School coders like myself who used C generally null out the variables when done with them - thus freeing memory off the heap.(I am not going to explain what the heap is ****ing look it up), we are used to C where every spec of memory had to be allocated and deallocated. Java on the other hand doesnt require you to be so fussy, It keeps a running log of variables etc and whether they are being used or not and periodically it will go through and run .... wait for it ... garbage collection. It does this at a set time or at a set memory level of the heap.
But guess what, Sun in their infinite wisdom provide a way to ask the system to run garbage collection early. This is not a forced suggestion merely a hint to the OS, the OS can choose to ignore this. Guess what my app does? Can you guess? Thats right it merely suggests to the OS to finalize items thats may be running but are old and to run garbage collection. Thats it. The whole damn program is maybe 40 lines long and that includes the Dialog code.
There is nothing like a bunch of non coders getting together on a forum to write up some of the least correct assumptions I have ever seen about code.
Android does not close apps on a First in First out basis. You cannot rely on that when coding apps, Androids program management is more sophisticated than that. You cannot "compact RAM" it is not disk. Any clearing of the system memory is a crap shoot, I Included it on the app for ****s and giggles. It may speed up your system as the heap/system memory clear, but again that's a crap shoot.
I only wrote the app at all so the idiot charging 15 bucks for app wouldn't be able to scam people for something the OS would do anyway (Which by the way is ALSO in the description). I didn't even post it to the market to start just the androidcommunity boards, but they encouraged me to list it.
I really suggest you actually USE google (Golly where would you find a google search bar), before you go off half cocked.
Bratag said:
I really suggest you actually USE google (Golly where would you find a google search bar), before you go off half cocked.
Click to expand...
Click to collapse
I don't think half the visitors to xda-dev Dream understood what you wrote above. And that's why people will continue to buy these apps (on this and other platforms). Right now the Android Market is still not as bad as the iPhone App Store, where exploitation and ridiculously pointless apps hit truly saddening new plateaus.
I think i'll go write a "cell phone radiation reducer" app right now and charge twenty bucks for it.
jashsu said:
I don't think half the visitors to xda-dev Dream understood what you wrote above. And that's why people will continue to buy these apps (on this and other platforms). Right now the Android Market is still not as bad as the iPhone App Store, where exploitation and ridiculously pointless apps hit truly saddening new plateaus.
I think i'll go write a "cell phone radiation reducer" app right now and charge twenty bucks for it.
Click to expand...
Click to collapse
Sweet Ill totally buy it
I sometimes feel I am one man trying hold back the tide of stupid armed only with a soggy celery stalk.
Java?
Bratag said:
But guess what, Sun in their infinite wisdom provide a way to ask the system to run garbage collection early. This is not a forced suggestion merely a hint to the OS, the OS can choose to ignore this. Guess what my app does? Can you guess? Thats right it merely suggests to the OS to finalize items thats may be running but are old and to run garbage collection. Thats it. The whole damn program is maybe 40 lines long and that includes the Dialog code.
Click to expand...
Click to collapse
Bratag: All of the apps on my system run in Linux, not Java. So your program wouldn't really do anything for me or the 90% of android users that don't do Java? I'm not sure about the Linux/Java connection you are making. Please elaborate.
The dalvik vm is basically a tweaked java vm. With some very limited exception, almost all the code in the available apks are all java classes.
Bratag said:
There is nothing like a bunch of non coders getting together on a forum to write up some of the least correct assumptions I have ever seen about code.
Click to expand...
Click to collapse
You must be new here.
texasaggie1 said:
Bratag: All of the apps on my system run in Linux, not Java. So your program wouldn't really do anything for me or the 90% of android users that don't do Java? I'm not sure about the Linux/Java connection you are making. Please elaborate.
Click to expand...
Click to collapse
Actually all the apps on your system run In a Java Runtime Environment called Dalvik which is a virtual machine which has been optimized to efficiently run multiple instances efficiently. So everything you run is a java app and that includes the desktop.
Now this all runs on TOP of a linux KERNEL.
EDIT: damn someone beat me to it
Bratag - you rock.
Bratag said:
Actually all the apps on your system run In a Java Runtime Environment called Dalvik which is a virtual machine which has been optimized to efficiently run multiple instances efficiently. So everything you run is a java app and that includes the desktop.
Now this all runs on TOP of a linux KERNEL.
EDIT: damn someone beat me to it
Click to expand...
Click to collapse
The very reason an emulater like Smartgear, Pocketnes or MAME is impossible on Android. A black & white Gamboy emu would kill the 7201a with sound and 30fps.
Java sucks for these type of apps having to emulate the game system and be interpreted through two layers.
rushless said:
The very reason an emulater like Smartgear, Pocketnes or MAME is impossible on Android.
Click to expand...
Click to collapse
Not at all impossible if you use JNI to hook to a compiled c++ or asm library for the main engine. Heck, it's not even "impossible" to do in Java-- merely unfeasible.
Stay on topic.
Apps on Android can't touch anything outside their own sandbox due to the security model (unless the other app gives you a way to access it's data, but even then, you can't touch it's memory). I feel sorry for the poor sod who pays for these apps.

[*WORKING*] **Ubuntu on Vibrant** UPDATE:11/05/10

UPDATE: So here is the link to a better version of Ubuntu running on your Vibrant. I do not have much time yet to edit the original post, but take a look at the this. You should be able to get it to work.
http://forum.xda-developers.com/showthread.php?t=823370
OLD:
DISCLAIMER: I AM NOT RESPONSIBLE FOR ANY LOSS OR DAMAGE TO YOUR PHONE!! YOU ARE DOING THIS AT YOUR OWN RISK.
Ok, so for those who like to push the limits with their phones I don't think it gets better then this
I would like to thank everyone who has contributed to making this possible. We had gotten a lot of good posts.
But a big thanks goes out to danielmid84, he provided me with the link http://nexusonehacks.net/nexus-one-hacks/how-to-install-ubuntu-on-your-nexus-oneandroid/ and a custom modified script to work with our phones, thank you!!
UBUNTU on Vibrant
INSTRUCTIONS
Prerequisites:
Root
Latest version of BusyBox
Android SDK ( and knowledge of how to use the tools, adb shell, etc... )
Understanding of Linux commands ( but not necessary )
Files needed are located here: http://www.megaupload.com/?d=FALJFT3L
BootUbuntu script modded by danielmid84 here: http://forum.xda-developers.com/attachment.php?attachmentid=385853&stc=1&d=1282503588 NOTE: This file replaces the BootUbuntu file located in the archive above.
VERY IMPORTANT!!!
Step 1:
Connect your phone to the computer and mount your internal storage sdcard (Not your external sdcard).
Step 2:
Now create a new folder under sdcard named "ubuntu" for instance "/sdcard/ubuntu/" and copy ALL of the files in the "ubuntu.zip" archive over to this newly created folder EXCEPT the BootUbuntu file. You will be copying over the BootUbuntu file over from the additional BootUbuntu file link provided above.
Step 3:
Now that we have all of the files in place, make sure to "Turn off USB storage" on your phone to be able t access the SD card from ADB Shell. Also make sure your "USB Debugging Mode" is check under "Settings>Applications>Developement".
Step 4:
We are going to want a windows terminal open and we are going to "cd" into your "/tools" folder, wherever that may be located. For example " cd c:\android\sdk\tools".
Once you are in the "tools" folder, issue this command "adb shell". And for linux users, you will be issuing the command as "./adb shell".
Step 5:
Once you are in ADB Shell, you should see a "#" symbol now.
You are then going to type "su" to enter superuser mode.
Step 6:
We are going to cd into the ubuntu folder by issuing the command "cd /sdcard/ubuntu".
Now that we are located in "/sdcard/ubuntu" we will issue the command "sh ./ubuntu.sh"
This command only needs to be entered once, or if you ever change the file "bootubuntu".
Step 7:
Once that is completed, issue the command "bootubuntu".
If you get the "localhost" prompt, you have just successfully installed UBUNTU onto your Vibrant. Congratulations!!!
Now mind you, this is not with a Graphical User Interface yet and but you can access the power of Linux and Ubuntu by using a Terminal Emulator.
But if you want a running Graphical User Interface to play with, keep in mind that is uses a lot of memory and continue reading and I will have that updated here shortly.
Step 8:
We are now going to install a GUI.
While still being in Ubuntu with the "localhost" prompt, issue the command "apt-get update".
Then issue the command "apt-get install tightvncserver".
Step 9:
Once that is complete, you are going to want to issue the command "apt-get install lxde". This will take a few minutes so let it do its thing.
Step 10:
Next we are going to type:
"export USER=root" then
"vncserver -geometry 1024x800" but you can change the display size to what you prefer.
You will be asked to set a password at this time for login.
Step 11:
Next we are going to add the following commands to /root/.vnc/xstartup.
Now type:
"cat > /root/.vnc/xstartup" it will seem like it is hanging after you push enter, but it is only waiting for additional input. So continue by entering
"#!/bin/sh"
"xrdb $HOME/.Xresources"
"xsetroot -solid grey"
"icewm &"
"lxsession"
Then hit Ctrl+D twice and Enter key.
Step 12:
Now open the Android VNC app on your phone with "localhost" as "address" and "5901" as "port". Enter your password as well and connect!! You will now have a GUI for your Ubuntu!
REMEMBER: EACH TIME YOU WANT TO LOGIN TO YOUR UBUNTU, YOU DON'T NEED TO BE CONNECTED TO YOUR COMPUTER. YOU CAN USE TERMINAL EMULATOR.
This is only for full phone reboots to set up Ubuntu again.
Start Terminal Emulator and cd into "/sdcard/ubuntu"
Then issue these commands:
"su"
"export USER=root"
"vncserver -geometry 1024x800"
and you should be able to log back into the GUI with Android VNC again.
I'm surprised that not one person is interested in this...
I think debian on the vibrant would be sick!
sadly I don't dev
Can I ask what "debain" is? For all of us new guys..
Sent from my Vibrant using XDA App..
Typos/Nonsense due to Swype!
Stock Root + RyanZA LagFix + Captive Camera MOD
itsjusttim said:
Can I ask what "debain" is? For all of us new guys..
Sent from my Vibrant using XDA App..
Typos/Nonsense due to Swype!
Stock Root + RyanZA LagFix + Captive Camera MOD
Click to expand...
Click to collapse
Google is your best friend. http://en.wikipedia.org/wiki/Debian
yeah man, I'm pretty surprised too that no one else is interested in this! I would love to see debian get ported to work on our phones
For those who are asking, debian is a version of desktop Linux. When it works on our phones, it will essentially allow you to do almost anything you can normally do on a desktop computer.
Thanks for the link! This looks luke it would be amazing.. I hope we can eventually get this...
Sent from my Vibrant using XDA App..
Typos/Nonsense due to Swype!
Stock Root + RyanZA LagFix + Captive Camera MOD
post videos.
freekyfrogy said:
It will essentially allow you to do almost anything you can normally do on a desktop computer.
Click to expand...
Click to collapse
You mean, it'll allow you to do almost anything you can normally do on a tiny format linux desktop computer
It's all good and dandy, someone has ported Ubuntu to N1 back in a day, but the question remains:
Why would you want to run a full fledge Linux OS on your phone?
I am a linux user, and have been for quite some time, I do enjoy it on my work laptop with 14.1" of real estate, but I fail to see a huge benefit of running a complete OS on the phone.
And before everyone starts with "you know android is linux" I know that, and it is stripped down linux OS for portable devices like phones, etc. It is as good as it gets, and suits the portable device market well.
Please feel free to address my question:
Why would you want to run a full fledge Linux OS on your phone?
How about we get a port of WINE on android...
lqaddict said:
It's all good and dandy, someone has ported Ubuntu to N1 back in a day, but the question remains:
Why would you want to run a full fledge Linux OS on your phone?
I am a linux user, and have been for quite some time, I do enjoy it on my work laptop with 14.1" of real estate, but I fail to see a huge benefit of running a complete OS on the phone.
And before everyone starts with "you know android is linux" I know that, and it is stripped down linux OS for portable devices like phones, etc. It is as good as it gets, and suits the portable device market well.
Please feel free to address my question:
Why would you want to run a full fledge Linux OS on your phone?
Click to expand...
Click to collapse
I was thinking the same thing. Its kinda a party piece. Look at what my phone can do. You know. I had it on my N1 and i never used it. Just like we could have windows 95 on the HD2. The only good thing i used it for on the N1 was air-crack, and i never got it to work right.
So you can compile android source on your phone, duh!
Sent from my SGH-T959 using XDA App
Yeah, I find it a shame that some people think debian on a phone is simply a party peice. There are too many useful reasons to list, especially the reason to have a smart phone is to expand the abilities past just "a cellphone"
lqaddict said:
It's all good and dandy, someone has ported Ubuntu to N1 back in a day, but the question remains:
Why would you want to run a full fledge Linux OS on your phone?
I am a linux user, and have been for quite some time, I do enjoy it on my work laptop with 14.1" of real estate, but I fail to see a huge benefit of running a complete OS on the phone.
And before everyone starts with "you know android is linux" I know that, and it is stripped down linux OS for portable devices like phones, etc. It is as good as it gets, and suits the portable device market well.
Please feel free to address my question:
Why would you want to run a full fledge Linux OS on your phone?
Click to expand...
Click to collapse
The real question is why not....
I'm sick and tired of all the negative posts in the xda forums.
why would you want camera on a phone?
why would you play games on a phone?
why would you read webpages on a phone?
why would you text on a phone?
why would you listen to music on a phone?
why would you want to go to the moon?
Is it affecting you in some way?
does someone sacrifice a kitten somewhere when someone wants to use a device for something it was not intended to?
do you enjoy stifling development?
jzero88 said:
Yeah, I find it a shame that some people think debian on a phone is simply a party peice. There are too many useful reasons to list, especially the reason to have a smart phone is to expand the abilities past just "a cellphone"
Click to expand...
Click to collapse
good man
scrizz said:
The real question is why not....
I'm sick and tired of all the negative posts in the xda forums.
why would you want camera on a phone?
why would you play games on a phone?
why would you read webpages on a phone?
why would you text on a phone?
why would you listen to music on a phone?
why would you want to go to the moon?
Is it affecting you in some way?
does someone sacrifice a kitten somewhere when someone wants to use a device for something it was not intended to?
do you enjoy stifling development?
good man
Click to expand...
Click to collapse
Agreed, why not explore the possibilities...
Sent from my SGH-T959 using XDA App
And why drive the nails down with a screwdriver?
There is no negativity coming from my question, I just needed to hear the reason people choose to run linux on their phones.
Developing a code for android phones on the phone running full linux, ok I failed to see the benefit, unless you get a hard-on from running a compiler on your phone while on a crapper. I would see how I might benefit from using some of the linux commands on my phone, like tcpdump, etc. but running a full raw OS on it is just overkill in my opinion.
And why drive the nails down with a screwdriver?
There is no negativity coming from my question, I just needed to hear the reason people choose to run linux on their phones.
Developing a code for android phones on the phone running full linux, ok I failed to see the benefit, unless you get a hard-on from running a compiler on your phone while on a crapper. I would see how I might benefit from using some of the linux commands on my phone, like tcpdump, etc. but running a full raw OS on it is just overkill in my opinion.
Click to expand...
Click to collapse
To probably sum it all up... MOBILITY.
First, I am sure you have several games on your phone which you play frequently. Some of those which you could play on your computer, and some maybe only on the device. If you could play games on your computer, why would you want to play them on your phone?
Virtually everything you can do on your phone you can do on your computer, ten times better. The reason we have Office Suites, Calendars that sync, Games, CAMERA!!!!, Photo Editing Tools, etc. etc. etc... the list goes on and on, is to do it mobile.
No offense, but your question is pretty ignorant.
"I just needed to hear a reason people choose to run linux on their phones"
Click to expand...
Click to collapse
as an answer is funny as hell if you ask me,lol.
I think if you have nothing productive to contribute other than asking meaningless questions which is plainly obvious, especially in a forum like this, then don't post anything at all.
Only my $0.02
jzero88 said:
To probably sum it all up... MOBILITY.
First, I am sure you have several games on your phone which you play frequently. Some of those which you could play on your computer, and some maybe only on the device. If you could play games on your computer, why would you want to play them on your phone?
Virtually everything you can do on your phone you can do on your computer, ten times better. The reason we have Office Suites, Calendars that sync, Games, CAMERA!!!!, Photo Editing Tools, etc. etc. etc... the list goes on and on, is to do it mobile.
No offense, but your question is pretty ignorant.
as an answer is funny as hell if you ask me,lol.
I think if you have nothing productive to contribute other than asking meaningless questions which is plainly obvious, especially in a forum like this, then don't post anything at all.
Only my $0.02
Click to expand...
Click to collapse
Why my question is ignorant? I am coming from a development stand point, what android (a linux port for smartphones and mobile tablets) does not do well that the full linux OS can address? I am curious... I've seen some embeded linux systems that are running the OS that requires to complete the task - packet sniffers for instance - I am pretty sure you can run the full OS on it, but it is overkill. I understand that the smartphones are our mobile gateways when we are away from computers, and as they stand right now I failed to see what the full OS can contribute to the whole mobile experience. Games? Well, now you have the whole android community asking when the cadega becomes available on android so that you can run Call of Duty, etc. on your phone.
And as far as me not contributing and asking the meaningless questions - when you come to the development board and demand that something needs to be ported on your device a developer will ask you my question:
Why do you need it? What benefits are you looking for?
So, I still to hear the answer to these questions besides the fun factor to show your co-workers look I have a penguin on my boot screen.
Look at it from this standpoint, every major phone release has hardware that can rival netbooks and ultra-portables, when the dual-core snapdragons hit later on, they may even be on par with low end notebooks. They contain cellular modems as well as wifi so you're constantly connected on a device that can fit in your pocket.
On the software side every major mobile operating system out there is constantly evolving and adding more and more features of that you can find on any PC/Linux/OSX box in the world. Albeit they're slimmed down versions, designed to be lightweight and functional on a smaller sized screen.
Add in google voice, a service that you can have your cell phone calls funneled into a single number or have your google voice number funneled into any other phone number you tell it to, plus you have skype. Installing Debian on a mobile device doesnt change the fact its still a cell phone the only it changes is how much this cell phone can do without restrictions.
Its the people who push software and hardware to there limits and into places they were never designed to be, that push the technology world and push the companies to do new things. There the pioneers who are trying to marry the inevitable before anyone else is ready. Those are the people who make companies like Google, Nokia, Intel, etc etc realize that there is potential in a risk, when there is a community ready to back them up. If it wasn't for the indie developers out there trying to minimalize linux to be used on cell phones we wouldn't have our beloved Android today.
You ask why, I'll answer because its inevitable. You can join the front lines or you can wait.

Android Memory Management - in detail for all those questions regarding task killing

This is now android works. The way I see this, this is very much similar to "pre-fetch" concept in windows 7.
I have a 6 GB RAM laptop. Base OS uses less than 1.5 GB of RAM. But like an hour or so when I see my RAM usage, its to the tune of 3-4 GB. What I have noticed is that my most frequently/recently used apps are loaded to RAM and kept there idle. Some amount of RAM is always kept free instead of using up all RAM. This way apps start faster. When I load a different memory heavy program, it pushes the existing one out and loads this.
More or less the same in android too. When u go to any task manager app n see the running apps, u'll notice that many of the apps loaded are the ones u use frequently.
These apps do NOT use any CPU. They are just loaded to memory and kept there for quick access.
When I boot up my phone I have like 190+ MB free RAM. Though left in standy mode, within an hour, I see my free RAM fall to 80-120 MB range. I never saw it go less than 80 MB. And the apps in memory are the ones I used the last time, and the ones I use all the time.
Even if u use a task killer to kill these "inactive" apps at intervals, they would be loaded again sooner or later. That's the principle of android. So by using task killers, though u feel u r freeing up memory, in fact, u r only draining ur battery. What's the use of memory if u r not using it effectively.
Don't worry abt free RAM amount. Let android manage it. Systems are intelligent enough these days.
Hope this helps. Below is more about the same in detail.
Android Memory Management
Android is a Linux based OS with 2.6.x kernel, stripped down to handle most tasks pretty well. It uses native open source C libraries that have powered Linux machines for years. All the basic OS operations like I/O, memory management, and so on, are handled by the native stripped-down Linux kernel.
How to use memory for each application
Android’s process and memory management is a little unusual. Like Java and .NET, Android uses its own run time and virtual machine to manage application memory. Unlike either of these frameworks, the Android run time also manages the process lifetimes. Android ensures application responsiveness by stopping and killing processes as necessary to free resources for higher-priority applications.
Each Android application runs in a separate process within its own Dalvik instance, relinquishing all responsibility for memory and process management to the Android run time, which stops and kills processes as necessary to manage resources.
Dalvik and the Android run time sit on top of a Linux kernel that handles low-level hardware interaction including drivers and memory management, while a set of APIs provides access to all of the under- lying services, features, and hardware.
Dalvik Virtual Machine Dalvik is a register-based virtual machine that’s been optimized to ensure that a device can run multiple instances efficiently. It relies on the Linux kernel for threading and low-level memory management.
The Dalvik Virtual Machine
One of the key elements of Android is the Dalvik virtual machine. Rather than use a traditional Java virtual machine (VM) such as Java ME (Java Mobile Edition), Android uses its own custom VM designed to ensure that multiple instances run efficiently on a single device.
The Dalvik VM uses the device’s underlying Linux kernel to handle low-level functionality including security, threading, and process and memory management.
All Android hardware and system service access is managed using Dalvik as a middle tier. By using a VM to host application execution, developers have an abstraction layer that ensures they never have to worry about a particular hardware implementation.
The Dalvik VM executes Dalvik executable files, a format optimized to ensure minimal memory foot- print. The .dex executables are created by transforming Java language compiled classes using the tools supplied within the SDK.
Understanding Application Priority and Process States
The order in which processes are killed to reclaim resources is determined by the priority of the hosted applications. An application’s priority is equal to its highest-priority component.
Where two applications have the same priority, the process that has been at a lower priority longest will be killed first. Process priority is also affected by interprocess dependencies; if an application has a dependency on a Service or Content Provider supplied by a second application, the secondary application will have at least as high a priority as the application it supports.
All Android applications will remain running and in memory until the system needs its resources for other applications.
It’s important to structure your application correctly to ensure that its priority is appropriate for the work it’s doing. If you don’t, your application could be killed while it’s in the middle of something important.
The following list details each of the application states shown in Figure (see the attached image) explaining how the state is determined by the application components comprising it:
Active Processes Active (foreground) processes are those hosting applications with components currently interacting with the user. These are the processes Android is trying to keep responsive by reclaiming resources. There are generally very few of these processes, and they will be killed only as a last resort.
Active processes include:
* Activities in an “active” state; that is, they are in the foreground and responding to user events. You will explore Activity states in greater detail later in this chapter.
* Activities, Services, or Broadcast Receivers that are currently executing an onReceive event handler.
* Services that are executing an onStart, onCreate, or onDestroy event handler.
Visible Processes Visible, but inactive processes are those hosting “visible” Activities. As the name suggests, visible Activities are visible, but they aren’t in the foreground or responding to user events. This happens when an Activity is only partially obscured (by a non-full-screen or transparent Activity). There are generally very few visible processes, and they’ll only be killed in extreme circumstances to allow active processes to continue.
Started Service Processes Processes hosting Services that have been started. Services support ongoing processing that should continue without a visible interface. Because Services don’t interact directly with the user, they receive a slightly lower priority than visible Activities. They are still considered to be foreground processes and won’t be killed unless resources are needed for active or visible processes.
Background Processes Processes hosting Activities that aren’t visible and that don’t have any Services that have been started are considered background processes. There will generally be a large number of background processes that Android will kill using a last-seen-first-killed pat- tern to obtain resources for foreground processes.
Empty Processes To improve overall system performance, Android often retains applications in memory after they have reached the end of their lifetimes. Android maintains this cache to improve the start-up time of applications when they’re re-launched. These processes are rou- tinely killed as required.
How to use memory efficiently
Android manages opened applications which are running in the background, so officially you shouldn’t care about that. This means that it closes the applications when the system needs more memory. However, most android users are not very satisfied with how it does its things because sometimes it leaves too many processes running which causes sluggishness’ in everyday performance. We can use advanced task killer/task manager and it does its job very well.
Source:
Code:
http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/
NICE!!
diablo009 said:
This is now android works. The way I see this, this is very much similar to "pre-fetch" concept in windows 7.
I have a 6 GB RAM laptop. Base OS uses less than 1.5 GB of RAM. But like an hour or so when I see my RAM usage, its to the tune of 3-4 GB. What I have noticed is that my most frequently/recently used apps are loaded to RAM and kept there idle. Some amount of RAM is always kept free instead of using up all RAM. This way apps start faster. When I load a different memory heavy program, it pushes the existing one out and loads this.
More or less the same in android too. When u go to any task manager app n see the running apps, u'll notice that many of the apps loaded are the ones u use frequently.
These apps do NOT use any CPU. They are just loaded to memory and kept there for quick access.
When I boot up my phone I have like 190+ MB free RAM. Though left in standy mode, within an hour, I see my free RAM fall to 80-120 MB range. I never saw it go less than 80 MB. And the apps in memory are the ones I used the last time, and the ones I use all the time.
Even if u use a task killer to kill these "inactive" apps at intervals, they would be loaded again sooner or later. That's the principle of android. So by using task killers, though u feel u r freeing up memory, in fact, u r only draining ur battery. What's the use of memory if u r not using it effectively.
Don't worry abt free RAM amount. Let android manage it. Systems are intelligent enough these days.
Hope this helps. Below is more about the same in detail.
Android Memory Management
Android is a Linux based OS with 2.6.x kernel, stripped down to handle most tasks pretty well. It uses native open source C libraries that have powered Linux machines for years. All the basic OS operations like I/O, memory management, and so on, are handled by the native stripped-down Linux kernel.
How to use memory for each application
Android’s process and memory management is a little unusual. Like Java and .NET, Android uses its own run time and virtual machine to manage application memory. Unlike either of these frameworks, the Android run time also manages the process lifetimes. Android ensures application responsiveness by stopping and killing processes as necessary to free resources for higher-priority applications.
Each Android application runs in a separate process within its own Dalvik instance, relinquishing all responsibility for memory and process management to the Android run time, which stops and kills processes as necessary to manage resources.
Dalvik and the Android run time sit on top of a Linux kernel that handles low-level hardware interaction including drivers and memory management, while a set of APIs provides access to all of the under- lying services, features, and hardware.
Dalvik Virtual Machine Dalvik is a register-based virtual machine that’s been optimized to ensure that a device can run multiple instances efficiently. It relies on the Linux kernel for threading and low-level memory management.
The Dalvik Virtual Machine
One of the key elements of Android is the Dalvik virtual machine. Rather than use a traditional Java virtual machine (VM) such as Java ME (Java Mobile Edition), Android uses its own custom VM designed to ensure that multiple instances run efficiently on a single device.
The Dalvik VM uses the device’s underlying Linux kernel to handle low-level functionality including security, threading, and process and memory management.
All Android hardware and system service access is managed using Dalvik as a middle tier. By using a VM to host application execution, developers have an abstraction layer that ensures they never have to worry about a particular hardware implementation.
The Dalvik VM executes Dalvik executable files, a format optimized to ensure minimal memory foot- print. The .dex executables are created by transforming Java language compiled classes using the tools supplied within the SDK.
Understanding Application Priority and Process States
The order in which processes are killed to reclaim resources is determined by the priority of the hosted applications. An application’s priority is equal to its highest-priority component.
Where two applications have the same priority, the process that has been at a lower priority longest will be killed first. Process priority is also affected by interprocess dependencies; if an application has a dependency on a Service or Content Provider supplied by a second application, the secondary application will have at least as high a priority as the application it supports.
All Android applications will remain running and in memory until the system needs its resources for other applications.
It’s important to structure your application correctly to ensure that its priority is appropriate for the work it’s doing. If you don’t, your application could be killed while it’s in the middle of something important.
The following list details each of the application states shown in Figure (see the attached image) explaining how the state is determined by the application components comprising it:
Active Processes Active (foreground) processes are those hosting applications with components currently interacting with the user. These are the processes Android is trying to keep responsive by reclaiming resources. There are generally very few of these processes, and they will be killed only as a last resort.
Active processes include:
* Activities in an “active” state; that is, they are in the foreground and responding to user events. You will explore Activity states in greater detail later in this chapter.
* Activities, Services, or Broadcast Receivers that are currently executing an onReceive event handler.
* Services that are executing an onStart, onCreate, or onDestroy event handler.
Visible Processes Visible, but inactive processes are those hosting “visible” Activities. As the name suggests, visible Activities are visible, but they aren’t in the foreground or responding to user events. This happens when an Activity is only partially obscured (by a non-full-screen or transparent Activity). There are generally very few visible processes, and they’ll only be killed in extreme circumstances to allow active processes to continue.
Started Service Processes Processes hosting Services that have been started. Services support ongoing processing that should continue without a visible interface. Because Services don’t interact directly with the user, they receive a slightly lower priority than visible Activities. They are still considered to be foreground processes and won’t be killed unless resources are needed for active or visible processes.
Background Processes Processes hosting Activities that aren’t visible and that don’t have any Services that have been started are considered background processes. There will generally be a large number of background processes that Android will kill using a last-seen-first-killed pat- tern to obtain resources for foreground processes.
Empty Processes To improve overall system performance, Android often retains applications in memory after they have reached the end of their lifetimes. Android maintains this cache to improve the start-up time of applications when they’re re-launched. These processes are rou- tinely killed as required.
How to use memory efficiently
Android manages opened applications which are running in the background, so officially you shouldn’t care about that. This means that it closes the applications when the system needs more memory. However, most android users are not very satisfied with how it does its things because sometimes it leaves too many processes running which causes sluggishness’ in everyday performance. We can use advanced task killer/task manager and it does its job very well.
Source:
Code:
http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/
Click to expand...
Click to collapse
Sweet!! Good Info.. But wrong Section. You should port this in the General Section to help all!
rickysa2000 said:
Sweet!! Good Info.. But wrong Section. You should port this in the General Section to help all!
Click to expand...
Click to collapse
Oh. I thought this belongs to Q&A.
Any mods here who can move this to "General" please.
This would be why when you open the built in task manager nothing or only your launcher shows up but when you open ATK multiple other programs are shown open, correct?
I found similar information while researching battery saver programs. I keep ATK when I have stubborn apps that are stuck because it is easier to get through than Android Task Manager but the auto-kill feature is always disabled. Good coverage of this info.
bclark said:
This would be why when you open the built in task manager nothing or only your launcher shows up but when you open ATK multiple other programs are shown open, correct?
Click to expand...
Click to collapse
Exactly! If all programs/processes show up, like they do in ATK, it could cause instabilities in the system when the user kills any important process knowingly/unknowingly.
trekie86 said:
I found similar information while researching battery saver programs. I keep ATK when I have stubborn apps that are stuck because it is easier to get through than Android Task Manager but the auto-kill feature is always disabled. Good coverage of this info.
Click to expand...
Click to collapse
Thanks you. Saw too many threads/posts with questions about ATK and killing tasks. So compiled this so they could all be directed to this thread.
I don't mean to go digging up old threads, but I just wanted to post my opinion here on this memory clearing ordeal.
After reading the entire thread, I am even MORE inclined to want to use ATK or something similar...
At the very bottom of the post, last paragraph, it reads -
How to use memory efficiently
Android manages opened applications which are running in the background, so officially you shouldn’t care about that. This means that it closes the applications when the system needs more memory. However, most android users are not very satisfied with how it does its things because sometimes it leaves too many processes running which causes sluggishness’ in everyday performance. We can use advanced task killer/task manager and it does its job very well.
Click to expand...
Click to collapse
Here's my take -
While there is no way to override Dalviks operations for application retention, at least while you're operating the device you can keep the memory clear by monitoring and assisting in clearing it out, manually; Which will in fact yield a performance boost for a duration of time. Based on the description of how Dalvik operates, this is true.
Exactly how long of a duration I don't know. But it is as obvious as it gets that while Dalvik memory management is indeed cool, it is far from perfect and definitely induces low memory situations that CAN in fact cause sluggish performance. That much is already known.
So, in my opinion, if you enjoy the absolute maximum performance out of your device, ATK or something similar is definitely NOT a bad idea. Though it has to be done manually and after a period of time applications are brought back into memory, clearing the memory before opening an application allows full memory access to that application and also inevitably reduces CPU load as it removes the requirement for Dalvik to "shove" other applications on idle off the memory to make room for the active applications.
Personally, I just use Task Manager. It seems much more effective at clearing the memory.
Well, there are times when my phone is on for abt a week or so without turning off or rebooting (the times when I resist flashing roms or kernels or modems) and still I hardly feel any sluggishness. And I do NOT use any task killers. I let android handle everything its way.
And there is a difference between cleaning up memory say once every couple days, and having ATK set up to free up memory every hour or two. The first one could be helpful while the second is a battery killer.
rickysa2000 said:
Sweet!! Good Info.. But wrong Section. You should port this in the General Section to help all!
Click to expand...
Click to collapse
why quote such a big post to tell this
come on
regards
strategist99 said:
why quote such a big post to tell this
come on
regards
Click to expand...
Click to collapse
^
Why necropost ?!? Come on !
(just messin with ya)
Sent from my SGH-I897 using xda premium
how about file expert's memory management options?
ok - i get what's being written at the top of this. however, i do wonder about being able to tweak things some, mainly because on file expert's memory manager there's several memory config options: gamer, multi-tasker, light user, whatnot.
i got a phone to fit in my pants pocket, so it doesn't come with tons of RAM. and it freezes quite a bit when swapping between apps. of course there could be many other reasons, but still...
file expert's options don't seem to be persistent, so it's hard to get a handle on which setting would work best. now - would there be a way of making persistent memory optimization changes? if, how?
what is an amount of free memory that would need to be there for things to be smooth? by ATK, i get south of 50Mb quite often, which seems low.
i don't really like ATK's auto-kill - don't know what it will kill, and it seems that a free memory kill-threshold would be better than one based on time.
zdoe said:
ok - i get what's being written at the top of this. however, i do wonder about being able to tweak things some, mainly because on file expert's memory manager there's several memory config options: gamer, multi-tasker, light user, whatnot.
i got a phone to fit in my pants pocket, so it doesn't come with tons of RAM. and it freezes quite a bit when swapping between apps. of course there could be many other reasons, but still...
file expert's options don't seem to be persistent, so it's hard to get a handle on which setting would work best. now - would there be a way of making persistent memory optimization changes? if, how?
what is an amount of free memory that would need to be there for things to be smooth? by ATK, i get south of 50Mb quite often, which seems low.
i don't really like ATK's auto-kill - don't know what it will kill, and it seems that a free memory kill-threshold would be better than one based on time.
Click to expand...
Click to collapse
Auto-kill is quite bad as the it kills processes that always reset.
As for your ram, you could run a Bigmem kernel. 50ram is fairly normal with regular processes and a couple extras. It all depends on what you use/run.
I would need your phone's setup to help you more towards it though.
xperia ray, snapdragon, 512Mb of RAM
don't know what bigmem kernel is or would do. i'm a noob.
the phone as above. list of installed apps courtesy titanium attached - except i've since killed ATK and now trying autokiller, which is good at least for the SD-card parameter tweaks it gives. not sure about its memory management aspects, but at least they're persistent.
list of apps
here's the list - the forum didn't take .htm
and i'm on CM7.2.
EDIT/UPDATE: unrelated to killer apps, but for those of you who came to this thread to find remedies for RAM shortage - my observation currently is that the best thing you can do to yourself is to enable swap. that, and taking out the "play store" took me from 5 crashes a day to 1 - and after half a day of multi-tasking apps i can see up to 80Mb of swap in use, with 60Mb of RAM free, and the phone still running smoothly.
How to detect if an app is in background
In the above article it is said that the memory management is completely under control of Dalvik VM and Android runtime.
Is it not possible for a device driver to intelligently check if any app in background and release memory (allocated inside driver).
onStop(): All the rendering is stopped.
Is it possible to check some app state value to see if app in background or minimized?
This is not the explanation of memory management but process management

[Q] Compilation in the cloud (really?)

Hello,
I have a simple question about the compilation in the cloud for wp8 apps. As detailed on the MS Blog post titled Compile in the Cloud with WP8, when a developer submits an WP8 (only) app to the store, the app is compiled in MDIL in order to optimize the subsequent execution.
Despite this, on my unlocked Samsung Ativ S I experienced that even in the case of wp8 app - and I mean, apps that target ONLY the WP8 platform - the DLLs are still in CIL and not MDIL, and so they can be easily decompiled with tool such as dotPeak.
My question is: where am I wrong?
Thanks,
Sandro.
.NET binaries have multiple pieces. One of them is the CIL, which is what something like dotPeek decompiles. There's also an area where JIT output can be stored, to speed up future execution. It sounds like what the Store is doing is JITing the apps for ARM processors, to reduce load time after installing (otherwise, JITing a large app on the phone can take a while; you can see this yourself if you ever sideload a large app). This slightly increases the size of the binaries, but improves performance. The CIL isn't removed though, either because they want to allow the phone to make different optimizations (for example, different amounts of CPU cache can effect when you would want to unroll loops or inline function calls vs. when you wouldn't) or just because the format of a .NET binary *expects* there to be CIL there.
GoodDayToDie said:
.NET binaries have multiple pieces. One of them is the CIL, which is what something like dotPeek decompiles. There's also an area where JIT output can be stored, to speed up future execution. It sounds like what the Store is doing is JITing the apps for ARM processors, to reduce load time after installing (otherwise, JITing a large app on the phone can take a while; you can see this yourself if you ever sideload a large app). This slightly increases the size of the binaries, but improves performance. The CIL isn't removed though, either because they want to allow the phone to make different optimizations (for example, different amounts of CPU cache can effect when you would want to unroll loops or inline function calls vs. when you wouldn't) or just because the format of a .NET binary *expects* there to be CIL there.
Click to expand...
Click to collapse
Can you please point me to any documentation that describes the .NET binaries format, in order to better understand the CIL and MDIL section and .NET binary structure in general ?
Thanks, Sandro
The ones I found were all pre-MDIL, I'm afraid. There's plenty of documentation of the general format of a PE binary - it's a public standard - but I'm not sure where the MDIL is stored, actually. I was mistaken about the normal JIT output; it's either stored in memory only for that process execution, or in an assembly cache (as when you run ngen.exe on a managed assembly).

[Q] how to run lumia 535 rom om laptom

i intend to run lumia 535 on my laptop can anyone guide me and give me the required details
I'm tempted to start this comment with a snarky suggestion about seeing your psychiatrist... The short version is that what you are asking for is not really possible. First of all, nearly all phones (including Lumias) run on an ARM processor, which executes ARM instructions; PCs run on x86/AMD64 processors, which execute x86 instructions. The two are completely incompatible; the CPU in a computer will have no idea how to execute code from a phone ROM. Next, phone ROMs are carefully customized for their target platforms, and don't include drivers for anything not present on the phone in question (this saves storage space and boot time, among other advantages); even if you could get the OS to begin booting, it wouldn't know how to drive your PC's display, or read from its USB ports or touchscreen (if it has one), or access its network card, or... you get the idea. There are probably other issues you'd run into, but those should be quite enough to demonstrate the problem.
Now, if you just want to test out WP8 apps and make sure web sites will render correctly on a Lumia 535, you can do that using the WP8/WP8.1 emulator that comes with the Windows Phone Development Kit (free download from Microsoft via http://msdn.com). The emulator is actually running x86 code, nor ARM code, so it runs at native speed on a PC, and it's only *most* of the WP8 OS (some stuff, like the ability to download Store apps, is missing), but it works well enough for the purposes it's intended for. If you just want to run WP8.x apps on your PC (the way Bluestacks lets you do with Android apps), you may need to wait for Windows 10; Windows 8.1 can run PC/tablet *versions* of some recent WP8 apps (and if you buy the app on either platform, you can access it on both) but most phone apps, especially the older ones, don't have a PC/tablet version yet.
Doesnt he mean project my screen?
Then he just need to download this aplication
http://www.microsoft.com/en-us/download/details.aspx?id=42536
https://www.youtube.com/watch?v=T1GzY4evB5M

Categories

Resources