Arrange the following operating system components from lowest to highest in terms of abstraction (from hardware to user-level):
1️⃣ Kernel
2️⃣ User Interface (Shell)
3️⃣ Application Programs
4️⃣ Hardware