Segundo Tanenbaum (2002) um sistema operacional tem duas funções não relacionadas: estender a máquina e gerenciar recursos.
Como máquina estendida, o sistema operacional oculta a verdade do programador sobre o hardware e apresenta uma visão simples e agradável. Ele protege o programador do hardware do disco e apresenta uma interface orientada a arquivos simples, e também oculta muitos detalhes desagradáveis relacionados ao nível inferior O sistema operacional fornece uma variedade de serviços que os programas podem obter usando instruções especiais conhecidas como ao sistema. Como gerenciador de recursos, o sistema operacional controla de forma ordenada o uso dos dispositivos físicos entre os vários programas que competem por eles. Esse gerenciamento é feito através de compartilhamento no tempo e no espaço. Quando compartilhado no tempo, cada programa ou usuário aguarda a sua vez de usar o recurso. Quando compartilhado no espaço, cada programa ou usuário ocupa uma parte do recurso.