How you would implement a file manager, resource manager, log manager, etc without singletons.
By not making them singletons and passing them down the call-tree and object-nets as parameters and references instead.
As a general rule: If you only need n instances, then create just n instances.
Or: If two instances of a well-designed class do not clash without breaking the class' contract, do not make it a singleton.