Programação Sistemas MEAer, MEEC - 2011/12 http://comp.ist.utl.pt/ec-ps Os acetatos foram escritos de acordo com a ortografia antiga Programação de Sistemas Introdução : 1/22 Enquadramento Disciplina no semestre de primavera dos seguintes cursos: LEE [Licenciatura Engª Electrónica], 1º ciclo - 3º ano, semestre inverno MEEC [Mestrado Integrado Engª Electrotécnica e Computadores], 1º ciclo - 3º ano MEAer [Mestrado Integrado Engª Aeroespacial], 2º ciclo - ramo Aviónica Precedência: Programação (1º ano) Programação de Sistemas Introdução : 2/22
Objectivos Apresentar conceitos de Programação de Sistemas Interacção directa com o sistema operativo da máquina Aumentar conhecimentos sobre o funcionamento, organização e interface do sistema Fomentar o desenvolvimento de projectos de índole sistémica. Explorar ferramentas e funcionalidades do sistema para boas prácticas de desenvolvimento e gestão de projectos. Programação de Sistemas Introdução : 3/22 Sistemas e Sistema Operativo [Def] Sistema: conjunto de partes dependentes umas das outras*. A disciplina aborda as seguintes partes, nos pontos de vista de arquitectura e de programação Sistema operativo do computador. Dispositivos de acesso ao exterior do computador. [Def] Sistema operativo: plataforma de software (conjunto de programas) de baixo nível que gere todas as aplicações (programas de utilizador) e implementa interface entre as aplicações e todos os componentes de hardware (discos, memória volátil RAM, monitor, portas de acesso à rede, ) * dicionário Porto Editora Programação de Sistemas Introdução : 4/22
Sistema Operativo/SO O SO é todo o código que o utilizador não necessita de escrever para desenvolver a aplicação. Melhor ainda, o utilizador não tem que se preocupar com os bits de controlo do hardware! Aplicação Aplicação Sistema operativo Hardware Máquina virtual Máquina física O SO pode ser visto como o código que transforma uma máquina física numa máquina virtual (i.e., independente do hardware) que disponibiliza recursos lógicos básicos ao desenvolvimento de aplicações. Programação de Sistemas Introdução : 5/22 Critérios e Objectivos para o SO Principais critérios a atingir na construção de um sistema operativo Desempenho: a utilização dos recursos físicos (CPU, memória, discos, ) que suportam os recursos lógicos (processos, ficheiros, ) deve eficiente. Segurança: utilizadores devem poder trabalhar isoladamente, mas os recursos lógicos devem poder ser partilhados. Facilidade: interface de programação deve ser simples para os utilizadores dos recursos lógicos Portabilidade: a máquina virtual deve poder ser instalada em máquinas físicas distintas. Por exemplo, o sistema operativo Linux é portado para µp Intel Core usado em computadores pessoais, µp ARM usado em telemóveis, e computadores de grande porte IBM, dedicados a cálculo numérico. Programação de Sistemas Introdução : 6/22
Programa-tópicos (1) Programa indicativo, que pode sofrer alterações pontuais (consultar planeamento e enunciados de laboratório) A. História e tipos de sistemas operativos [Cap. 1] B. Desenvolvimento e Teste de programas [Cap. 2] C. Processos e fluxos de execução ( threads ) [Cap. 3] D. Comunicação entre processos [Cap. 4] E. Sincronização de processos [Cap. 5] F. Sistema de ficheiros [Cap. 7] G. Gestão de memória e de dispositivos [Cap. 6 e 8] Programação de Sistemas Introdução : 7/22 Programa-tópicos (2) As aulas teóricas incluem componentes de programação. Alguns acetatos listam programas exemplo. Em 6 aulas teóricas os docentes orientam a resolução, por parte dos alunos, de exercícios. Nenhum aluno é avaliado e é normal que alunos proponham ideias incorrectas: o erro faz parte da aprendizagem! Calendário previsto: 1) Sem 3/2ª aula : lançamento/terminação processos. 2) Sem 4/2ª aula: lançamento/parâmetros/terminação threads. 3) Sem 5/2ª aula: criação e comunicação por tubos. 4) Sem 6/1ª aula: sinais e alarmes. 5) Sem 7/2ª aula: envio de uma mensagem entre 2 PCs por sockets. 6) Sem 9/2ª aula: sincronização de produtor/consumidor. Programação de Sistemas Introdução : 8/22
Laboratórios Decorrem no SCDEEC-LP2 Inscrições no Fenix entre 15:00 do dia 16 Fev. (5ª feira) e as 18:00 do dia 17 (6ª feira) datas a confirmar! Grupos de 2 alunos. Nota: as inscrições atómicas (apenas grupo completo): alunos desacompanhados serão inscritos posteriomente pelos docentes entre as vagas disponíveis. Turnos limitados a 28 alunos. Aulas de laboratório iniciadas na semana 2. Semanas reservadas 7 e 12 dedicadas a avaliação laboratorial. 14 dedicada à defesa do trabalho. O sistema operativo adoptado é o Linux No laboratório usada a distribuição Ubuntu 10.4 Outras distribuições (RedHat, ) podem ser usadas sem problemas de maior. Programação de Sistemas Introdução : 9/22 Docentes Alexandra Sofia Carvalho [alexandra DOT carvalhoat inesc-id DOT pt] Rui Gustavo Crespo docente responsável [rgc AT comp DOT ist DOT utl DOT pt] Nota: horários de dúvidas a afixar mais tarde na página da disciplina. Programação de Sistemas Introdução : 10/22
Avaliação (1) A. Laboratorial [5 valores] Nas semanas 7 e 12, cada uma avaliada a 2.5 valores, sobre implementação individual entre 3 e 5 funcionalidades básicas. Efectuada no turno de inscrição (noutro turno o aluno sujeita-se às vagas disponíveis) durante 60 minutos. Notas importantes: Aluno apenas pode levar identificação e caneta. Implementar e testar cada funcionalidade, uma a uma! Programas que não compilem são avaliados, no máximo, a 1 valor (40%). Acesso à Internet é desligado, apenas podem ser consultadas as man pages. Programação de Sistemas Introdução : 11/22 Avaliação (2) B. Projecto [5 valores] Grupo de 2 alunos, versão simplificada em relação aos anos anteriores. Enunciado previsto ser afixado na semana 2 de Abril (semana 8). Relatório final, entregue na semana 14 de Maio (semana 13) com defesa na semana 14. Em caso de pendura avaliado a 0, podendo ser aplicado processo disciplinar e o que trabalha arrisca reprovação, sendo no máximo avaliado a 2.5 val. Trabalho não uniforme, com reflexo na avaliação, aceite desde que declarado no relatório do projecto. C. Teórica [10 valores] 2 exames Datas de exame: 1ª época 5 Junho, 2ª época 25Junho Programação de Sistemas Introdução : 12/22
Avaliação (3) Notas mínimas no exame e no projecto: 35% 3.5 valores no exame 1.8 valores no projecto Dos exames e projecto de 2010/11 são recuperados os resultados positivos. Nota: datas sujeitas a confirmação no Fenix. Programação de Sistemas Introdução : 13/22 Avaliação (4) Calendário previsto Enunciado projecto 1ºLab Rel projecto 2ºLab Defesa projecto 1º 2º Semanas 7 12 13 14 Projecto/Laboratórios 5J 25J Exames Dias Programação de Sistemas Introdução : 14/22
Avaliação (5) Importante: Cerca de ¾ da avaliação incide sobre os capítulos 3,4 e 5: Totalidade do projecto. Totalidade da avaliação laboratorial. Parte muito significativa do exame [cerca de 6 valores]. Avaliação final cai nas seguintes gamas: NA : não avaliado nas duas componentes essenciais (exame e projecto). RE : não obteve nota mínima nas duas componentes. 5-20 : obteve nota mínima nas duas componentes. Programação de Sistemas Introdução : 15/22 Avaliação (6) Em PSis é essencial o conhecimento aprofundado de programação em C! PSis tem precedência de Programação. Muitos alunos também já frequentaram Algoritmos e Estruturas de Dados. ⅔ da avaliação foca na programação. Avaliação laboratorial (individual) 5 valores Projecto (grupo de 2 alunos) 5 valores Pergunta de desenvolvimento no exame (individual) 3.5 valores Programação de Sistemas Introdução : 16/22
Honestidade Académica (1) Nesta disciplina, espera-se de cada aluno que subscreva os mais altos padrões de honestidade académica. Isto significa que cada ideia que não seja do aluno deve ser explicitamente acreditada ao respectivo autor. O não cumprimento disto constitui plágio. O plágio inclui a utilização de ideias, código ou conjuntos de soluções de outros alunos ou indivíduos, ou quaisquer outras fontes para além dos textos de apoio à disciplina, sem dar o respectivo crédito a essas fontes. Nesta disciplina, o método de avaliação inclui vários testes, trabalhos, relatórios, etc. Os alunos são encorajados a discutir os problemas com outros alunos e devem mencionar essa discussão quando submetem os resultados. Essa menção NÃO influenciará a nota. Mas os alunos não deverão copiar código de outros alunos, ou dar o seu próprio código a outros em qualquer circunstância. De facto, não devem sequer deitar listagens fora sem primeiro as destruir, nem deixar o código desenvolvido em computadores de uso partilhado. Programação de Sistemas Introdução : 17/22 Honestidade Académica (2) A desonestidade académica inclui também a cópia em testes e exames. Nesta disciplina, estes devem ser feitos sem consulta, nem de qualquer texto, nem de outros colegas. Receber ou dar ajuda durante estas provas é um acto de desonestidade académica. Devem ser evitadas situações que possam dar azo a suspeitas de desonestidade (abrir as mochilas para buscar papel, olhar para todos os lados em vez de se concentrar na folha do exame, etc.). Nesta disciplina, a desonestidade académica é considerada fraude, com todas as consequências legais que daí advêm. Qualquer fraude terá como consequência imediata a reprovação de todos os alunos envolvidos (incluindo os que possibilitaram a ocorrência). Qualquer suspeita de desonestidade académica será relatada aos órgãos superiores da escola para instauração de um processo disciplinar. Este poderá resultar em reprovação à disciplina, reprovação de ano, suspensão temporária ou definitiva do IST ou mesmo da UTL. Programação de Sistemas Introdução : 18/22
Bibliografia (1) Advanced Programming in the UNIX Environment ; W. Richard Stevens, Stephen A. Rago; Addison-Wesley Preferencialmente usado nos laboratórios e no projecto. Programação de Sistemas Introdução : 19/22 Bibliografia (2) Modern Operating Systems; A.S. Tanenbaum; Prentice-Hall Particularmente útil na descrição dos conceitos base e seus enquadramentos. Programação de Sistemas Introdução : 20/22
Observações (1) Programação de Sistemas dá formação base em campos diversos de Engª Electrotécnica e Computadores: Redes de computadores. Interface entre computador e sistemas externos, estudada em maior profundidade nas AEs de Computadores, Controlo, Electrónica, Energia e Telecomunicações. Conteúdo extenso, abordando em simultâneo elementos distintos. Programação de Sistemas Introdução : 21/22 Observações (2) Acompanhe assiduamente a matéria teórica e laboratorial. Limitar-se ao download e olhar por cima não é suficiente, a assiduidade é fundamental! Leia acetatos antes das aulas teóricas e laboratoriais: provavelmente só vai perceber⅓, mas vai-se mais longe partindo de ⅓, do que partindo de 0 ( candeia que vai à frente alumia duas vezes! ) e aprende a estudar por si, o que é muito vantajoso: na sua vida profissional não terá sempre um docente ao seu lado para explicar a matéria! a tese de mestrado (enquadramento, trabalho propriamente dito, conclusões e escrita da dissertação) será feita exclusivamente por si e não pelo seu orientador! Dúvidas melhor esclarecidas em horário de dúvidas, o mais próximo possível da sua geração (não apenas na véspera de provas ). Programação de Sistemas Introdução : 22/22