Programação Sistemas Computacionais LEE - 2013/14 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 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 mp Intel Core usado em computadores pessoais, mp 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 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 1-15 Inscrições entregar folha com foto e o número de aluno na primeira aula pratica! Grupos de 3 alunos. Turnos limitados a 24 alunos. Aulas de laboratório iniciadas na semana 2. Semanas reservadas Entrega de uma ficha semanal na própria aula pratica. Ultima semana 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 Rui Ferreira Neves [rui.neves@ist.utl.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 [3 valores] Ficha semanal entregue na própria aula. Enunciado sai uma semana antes. 1+7 fichas para entregar. O número pode vir a ser alterado. Grupos de 3 alunos, iguais aos alunos do projecto. Programação de Sistemas Introdução : 11/22
Avaliação (2) B. Projecto [7 valores] Grupo de 3 alunos. Enunciado previsto ser afixado na semana de 14 de Outubro (semana 5). Relatório final, entregue no dia 12 de Dezembro (semana 13) com defesa na semana 14. Em caso de pendura avaliado a 0. C. Teórica [10 valores] 2 exames Datas de exame: 1ª época 14 Janeiro, 2ª época 29 Janeiro Programação de Sistemas Introdução : 12/22
Avaliação (3) Notas mínimas no laboratório: 9,5 v Nota mínima no exame 8v. Dos exames e projecto dos anos anteriores são recuperados os resultados positivos. Alunos nessa situação enviar um email ao docente da cadeira. 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 Defesa projecto 1º 2º Semanas 2 5 13 14 14J 29J Dias Projecto/Laboratórios Exames 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 3 valores Projecto (grupo de 3 alunos) 7 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ª Electronica: 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