Curso de C: Aula 4 - Conceituações necessárias
Autor: Zainer Araujo | Publicado: 2009-09-22T21:41:00-07:00

Como foram de descanso? Semana passada realmente estava meio sem tempo, e resolvi aumentar o nível esta semana. Vamos ver a opinião de vocês no final, vou adiantando que hoje muita coisa é referência e de cultura geral, mas tem muitos conceitos novos e necessários.Falamos de alguns conceitos de Sistemas Operacionais, características poderosas herdadas dos velhos e robustos sistemas Unix e várias outras coisas.Caso tenham problemas para entender de primeira, releiam o texto, é sempre o recomendado. Muitos não fazem isso, me mandam e-mail, sem problemas.Vale ressaltar que dúvidas são comuns e sempre nos depararemos com elas, mas transpassaremos e chegaremos ao nosso objetivo.Então...mãos na massa!Quem realmente controla os programas?Quem controla as ações mais básicas de um computador, é o Sistema Operacional. É o que podemos chamar de camada de software, que faz a interface (comunicação) entre os usuários e o Hardware(parte física da máquina, placas, circuitos, memórias). O objetivo básico é controlar as atividades do Hardware e prover um ambiente agradável para o usuário do sistema, que ele possa trabalhar com maior grau de abstração(se preocupar menos com problemas relativos ao tipo de máquina, como ela funcione e pensar mais no problema real que tem de ser resolvido).O Sistema Operacional(SO), tem dois componentes básicos importantes para o usuário : sistema de arquivos e interpretador de comandos. O SO é que coordena todo tráfego de saída e entrada de informações. 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 interação com o usuário, e faz todo trabalho de gerenciamento, analisando o que vem do usuário, por exemplo, e entregando para o SO de forma que ele entenda. Ele é uma interface, digamos assim, entre usuário e SO. Faz com que eles falem a mesma língua, para simplificar a história.O interpretador de comandos é conhecido no mundo Linux como SHELL (pode variar para outros sistemas).Interfaces GráficasUma questão interessante é separarmos os termos, Back-end e Front-end. Back-end, é a parte core(a parte interna, o código que executa realmente as tarefas). A parte gráfica é conhecida como Front-end, é uma capa, como se fosse a casca, embalagem, a apresentação do trabalho. Não há dúvidas, que situações existam que essa "cara bonita" necessariamente deve aparecer.As linguagens de programação e o CQuando várias das linguagens de programação antigas foram desenvolvidos, elas foram criados para rodar em computadores de grande porte(grandes máquinas de tamanhos de prédios, depois andares, depois salas...), Sistemas Multi-Usuários(vários operadores usando o sistema ao mesmo tempo), time-sharing((tempo compartilhado), todos esses usuários dividiam uma fração(parte) da unidade de processamento) e eram incapazes de interagir diretamente com o usuário(vários detalhes técnicos são citados meramente como curiosidades para aprendizado histórico, não se preocupe caso tenha fugido algo).O C é diferente de tudo isso pois possui um modelo de implementação de forma bem definida, e melhor desenhado. Podemos dizer que o C é um primor em termos de design. Todos mecanismos de entrada/saída de dados não são definidos como partes fixas da linguagem, imutáveis e embutidos no código. Existe um arquivo padrão, que deve ser declarado(explicaremos, mas podemos entender como chamado, utilizado) no começo do programa, que ensina ao C como ele deve se comportar em situações de entrada/saída, no computador que ele está rodando. Quando mudamos de arquitetura, é só mudar este arquivo. Ele é conhecido como Biblioteca C padrão(ainda explicaremos melhor isso tudo). Ela é padrão no sentindo de implementar(ter para executar) um conjunto de instruções que todos os computadores e SO's devem implementar, mas são especialmente adaptados ao seu sistema atual. Basicamente, ela existe em todos os tipos de sistemas, funciona de forma padrão, mas, é internamente escrita para a arquitetura de computador que você está utilizando(arquitetura == tipo). Lembre-se, não se vive simplesmente da arquitetura Intel, i386. Existem diversas outras por aí, uma característica marcante do C é sua portabilidade(capacidade de rodar em múltiplas plataformas). Dispositivos de Entrada/SaídaO Sistema de Arquivos do Linux pode ser considerado parte ativa do Sistema de Entrada/Saída, fluxo de dados, em sistemas Unix-Like(Linux também). Em vários SO's, ele próprio coordena os recursos/movimentação entre entrada/saída, isso tudo através de arquivos ou fluxo de dados.O C faz isso tudo implícito (herdado dos Unix). O arquivo de onde o C geralmente pega a entrada, chama-se stdin, que quer dizer Standard Input(ou entrada padrão). Ele geralmente costuma ser o Teclado. O arquivo correspondente para saída, é conhecido como stdout, ou Standard Output (saída padrão). O monitor de vídeo faz esse papel.É importante deixar claro, que o monitor e nem o teclado, são arquivos. Eles são periféricos reais(não é possível reler algo que foi enviado ao monitor ou rescrever para o teclado).Devemos representa-los através de arquivos, mas devemos entender, que o arquivo de entrada padrão, teclado, serve apenas para leitura. Já o monitor, de saída padrão, simplesmente trabalha com escrita. Nota-se, características de escrita e leitura bem definidos.Porque utilizá-los ?Uma boa explicação para utilizarmos os tais arquivos é nos abstermos de como funcionam a fundo, é realmente essa "camada" de abstração. Pensarmos simplesmente em utiliza-los (tudo ficará claro com o tempo). Com isso criamos essa camada que pode ser utilizado com diversos outros tipos de periféricos, de forma igualmente transparente e fácil.Os nomes do arquivos de dispositivos, em geral são conhecidos por abreviaturas de seus nomes originais. A impressora, por exemplo, é conhecida como LP, ou Line Printer.Por hoje é só. O que acharam ? Espero que tenham gostado, aguardo o feedback. Até a próxima !