Como foram de descanso? Semana passada realmente estava meio sem tempo, e resolvi aumentar o nivel esta semana. Vamos ver a opiniao de voces no final, vou adiantando que hoje muita coisa e referencia e de cultura geral, mas tem muitos conceitos novos e necessarios.Falamos de alguns conceitos de Sistemas Operacionais, caracteristicas poderosas herdadas dos velhos e robustos sistemas Unix e varias outras coisas.Caso tenham problemas para entender de primeira, releiam o texto, e sempre o recomendado. Muitos nao fazem isso, me mandam e-mail, sem problemas.Vale ressaltar que duvidas sao comuns e sempre nos depararemos com elas, mas transpassaremos e chegaremos ao nosso objetivo.Entao...maos na massa!Quem realmente controla os programas?Quem controla as acoes mais basicas de um computador, e o Sistema Operacional. E o que podemos chamar de camada de software, que faz a interface (comunicacao) entre os usuarios e o Hardware(parte fisica da maquina, placas, circuitos, memorias). O objetivo basico e controlar as atividades do Hardware e prover um ambiente agradavel para o usuario do sistema, que ele possa trabalhar com maior grau de abstracao(se preocupar menos com problemas relativos ao tipo de maquina, como ela funcione e pensar mais no problema real que tem de ser resolvido).O Sistema Operacional(SO), tem dois componentes basicos importantes para o usuario : sistema de arquivos e interpretador de comandos. O SO e que coordena todo trafego de saida e entrada de informacoes. Por exemplo, ele que determina o que vai para a tela, o que vem do teclado, movimentos do mouse, etc...O Interpretador de comandos aceita toda interacao com o usuario, e faz todo trabalho de gerenciamento, analisando o que vem do usuario, por exemplo, e entregando para o SO de forma que ele entenda. Ele e uma interface, digamos assim, entre usuario e SO. Faz com que eles falem a mesma lingua, para simplificar a historia.O interpretador de comandos e conhecido no mundo Linux como SHELL (pode variar para outros sistemas).Interfaces GraficasUma questao interessante e separarmos os termos, Back-end e Front-end. Back-end, e a parte core(a parte interna, o codigo que executa realmente as tarefas). A parte grafica e conhecida como Front-end, e uma capa, como se fosse a casca, embalagem, a apresentacao do trabalho. Nao ha duvidas, que situacoes existam que essa "cara bonita" necessariamente deve aparecer.As linguagens de programacao e o CQuando varias das linguagens de programacao antigas foram desenvolvidos, elas foram criados para rodar em computadores de grande porte(grandes maquinas de tamanhos de predios, depois andares, depois salas...), Sistemas Multi-Usuarios(varios operadores usando o sistema ao mesmo tempo), time-sharing((tempo compartilhado), todos esses usuarios dividiam uma fracao(parte) da unidade de processamento) e eram incapazes de interagir diretamente com o usuario(varios detalhes tecnicos sao citados meramente como curiosidades para aprendizado historico, nao se preocupe caso tenha fugido algo).O C e diferente de tudo isso pois possui um modelo de implementacao de forma bem definida, e melhor desenhado. Podemos dizer que o C e um primor em termos de design. Todos mecanismos de entrada/saida de dados nao sao definidos como partes fixas da linguagem, imutaveis e embutidos no codigo. Existe um arquivo padrao, que