You can’t
> partition different applications off from each other, and carefully control how they can communicate.
without
> provide access to hardware resources
That’s still definitely what an OS does. The application model is often very loosely coupled. See web browsers.
A difference between embedded systems and operating systems is the ability to provide access to hardware (in such a way as to isolate and dictate communication) _dynamically_ with a-prior unknown requests.