O objetivo da multiprogramação é ter sempre algum processo em execução para maximizar a utilização da CPU. Para um sistema singlecore, só haverá um processo em execução. Se houver mais processos, o restante terá que esperar na fila de pronto até que a CPU esteja livre. Nesse caso, como as tarefas são executadas em ordem de chegada, cada programa é executado dentro do seu tempo (time sharing – tempo compartilhado). Os dados e programas em "espera" ficam armazenados na memória, enquanto outro programa está em "execução". Logo, devemos ter pelo menos dois modos de operação.