Consider the following statements:
S1 : Multiprogramming is used to increase CPU utilization, while time-sharing is used to increase CPU responsiveness in interacting with user.
S2 : If a user-level thread is blocked for I/O operation, then kernel of operating system will perform context switching to run another user-thread which is not blocked.
S3 : Many-to-One is the most efficient model of multi-threading because it allows several userlevel threads to be assigned to different processors in a multi-processor computer system.
Which of the following is true?