Depends on which platform (iOS\Android and the GPU model) is, in principle, iOS devices video memory and RAM are combined in one chip, because if you map\unmap get a pointer through which you can safely write. You can try to just do in the forehead: two contexts, the Atlas between them which first draws, the second one updates its data. It can be a little more complicated: using GL_APPLE_sync to create a synchronization point when the Atlas we have drawn, and to fill the data only when not in use. Or even clumsy solution: make two copies of the Atlas to draw first, pour the second, then swap them.
ps. Can I have a texture which is read from a flash drive to read via memory mapping file, it usually gives the increase in IO and no need to allocate a temporary buffer, only the texture on the flash drive should be in RAW format. The more I painted on another online