course 2012-2013

Enginyeria Tècnica de Telecomunicació (especialitzada en Telemàtica)

Programació de Sistemes II (12627)

Nombre de crèdits: 4.5 Nombre ECTS: 3.6
Nombre total d'hores de dedicació: 90
Temporalització:
Curs:Segundo
Tipus:Teorico y practico
Període:Juny

Presentació de l'assignatura

•· Ámbitos y conocimientos previos del estudiante:

Esta asignatura del tercer trimestre del segundo curso esta situada dentro del ámbito de la informática y parte de los conocimientos que el estudiante tiene del manejo de sistemas que obtuvo en Programación de Sistemas I

•· ¿Qué se pretende conseguir en la asignatura?:

La asignatura se centra en el estudio de nociones fundamentales en programación concurrente. A partir de la noción de proceso se exploran los mecanismos de comunicación y sincronización entre procesos, para culminar con las nociones de cliente/servidor, esto basado en la estrecha relación entre el lenguaje C y las llamadas a sistemas operativos de la familia de Unix. Como consecuencia, el estudiante obtiene los fundamentos teóricos y prácticos de programación concurrente, hilos de ejecución y mecanismos de sincronización.

•· Límites de la asignatura:

Los límites de los contenidos descritos anteriormente tienen en cuenta que el enfoque es informático y algorítmico. No se pretende que el estudiante programe desarrolle un sistema operativo que soporte programación concurrente, pero que pueda describir y comprender que esta ocurriendo cuando se hacen estas llamadas al sistema para gestionar procesos.. Además se pretende que el estudiante debe poder programar y desarrollar programas ilustrativos concurrentes de cada uno de los mecanismos de comunicación y sincronización en el lenguaje C.

•· Contextualització:

La asignatura se encuentra entre las asignaturas que estudian el funcionamiento de los sistemas operativos y las funcionalidades básicas de los ordenadores para realizar sistemas informáticos sofisticados.

•· Tipologia i enfocament de l'assignatura

Esta es una asignatura que avanza sobre el material de Programación de Sistemas I, por lo que no es una materia introductoria, ofrece una especialización hacia el entendimiento de la relación entre programas, y su manejo como procesos en un sistema operativo.

•· Aspectes clau de l'assignatura.

La asignatura se fundamenta en la ilustración de conceptos mediante su programación en el lenguaje de programación C y en las llamadas a sistema de la familia de sistemas operativos UNIX.

•· Recomanacions generals.

La materia tiene un componte practico importante, por lo que el examen final tiene una parte practica.

Prerequisits per al seguiment de l'itinerari formatiu

Pre-requisitos para cursar la asignatura:

•· Haber cursado Programacion de Sistemas I y las asignaturas de primer curso de los estudios de Ingeniería Técnica de Telecomunicación (especializada en Telemática).

•· Incompatible para todos los estudiantes de Ingeniería en Informática y de Ingeniería técnica en informática de sistemas.

Conocimientos previos:

•· Saber escribir programas en C aunque no sean concurrentes.

•· Saber operar en un shell del Sistema operativo UNIX.

•· Saber crear un makefile

Competències a assolir en l'assignatura

Competències generals

Competències específiques

Instrumentals

1. Capacidad de organizar y planificar

2.Capacidad de interrelacionar conceptos

4. Capacidad de analisis y razonamiento teorico

5. Capacidad de buscar informacion.

Interpersonals

5. Trabajo autónomo

6. Trabajo en parejas

Sistèmiques

7. Capacidad de aprendizaje

8. Capacidad de aplicar las descripciones abstractas y teoricas a la programacion practica

1. Habilidad para crear programas utilizando el lenguaje de programación C.

2. Habilidad para agrupar la compilación de diferentes módulos usando make.

3. Capacidad de diferenciar los conceptos teóricos de proceso, programa y programación de hilos

4. Comprensión de los mecanismos básicos de administración de procesos

5. Capacidad de aplicación practica de los mecanismos de comunicación de procesos

6.- Capacidad de describir y explicar las alternativas y mecanismos de comunicación entre procesos.

7. Capacidad APRA explicar la teoría sobre sincronización de procesos y algunos algoritmos fundamentales sobre la administración de zonas criticas.

8 Capacidad para aplicar los mecanismos de sincronización entre procesos en el ambiente UNIX y programación en C

7. Capacidad para describir el modelo cliente /servidor y programar aplicaciones cliente/servidor simples en el lenguaje C.

Objectius d'aprenentatge

En esta asignatura se desea conseguir que el alumno tenga un entendimiento teórico y practico de los siguientes conceptos

1.- El concepto de proceso y su relación con su administración por el sistema operativo

2.- Los mecanismos de comunicación entre procesos

3.- La sincronización entre procesos

4.- Las ideas fundamentales de la programación concurrente

5.- Los conceptos centrales del modelo cliente servidor

Además, se pretende que el alumno pueda

6.- Aplicar las noción de proceso, crear y gestionar procesos

7.-Utilizar de manera practica las diferentes opciones para comunicar procesos

8.- conozca en detalle la practica de las nociones de proceso mediante su programación en lenguaje C y las llamadas al sistema operativo soportadas por UNIX para C.

En particular, se pretenden los objetivos siguientes

1.- El alumno deberá estar familiarizado con la programación de sistemas en lenguaje C, con la comunicación y sincronización entre procesos.

2.- El alumno deberá tener un comando de las llamadas al núcleo del sistema operativo i de las correspondientes librerías del sistema

3.- El alumno deberá entender la cooperación de procesos en la programación concurrente

4.- El alumno deberá entender la sincronización de procesos en la programación concurrente

5.- El alumno deberá comprender y poder poner en practica las nociones de señales, colas de mensajes y memoria compartida.

6.- El alumno deberá comprender os mecanismos de cooperación como semáforos.

7.- El alumno deberá conocer la noción de zona critica y los mecanismos de exclusión mutua en software y en hardware

8.- El alumno deberá conocer la programación de hilos en C.

9.- El alumno deberá conocer los mecanismos de comunicación mediante tuberías anónimas y tuberías nombradas.

10.- El alumno deberá conocer las librerías para conexiones cliente/servidor vía TCP/IP en C y tener un manejo de la programación de sockets.

Avaluació

Criteris generals d'avaluació

Los criterios a considerar en la evaluación final del alumno será:

1) Examen final 35 % Para promediar se requiere tener en el examen una nota mínima de 4,5. Se gurda la nota de las practicas aprobadas y seminarios para septiembre.

2) Prácticas 25 % Todas las siete (7) practicas deberán entregarse. Una nota por cada practica y la el valor final es la media de las que tengan mas de 5,0. Estos son ejercicios asignados y realizados durante el laboratorio y entregados antes del siguiente laboratorio.

3) Ejercicios/Seminarios 30 % Todos los dos (3) ejercicios deberán entregarse. Se han de completar de manera significativa antes del seminario y el valor final es la media de aquellos con mas de 5,0.

4) Un examen parcial 10% La fecha se indicara en el primer día de clase y también una fecha para recuperar o mejorar su calificación, es un examen enteramente teórico.

NOTAS:

•- Las prácticas y los ejercicios se realizan individualmente o en parejas. Las prácticas se realizan semanalmente durante los laboratorios pero pueden requerir tiempo adicional. Los ejercicios se realizarán fuera de clase y representan ejercicios no triviales de programación o investigación de bibliografía.

•- El examen final consta de 2 partes, una parte teórica que valdrá el 70% de la nota y una parte práctica equivalente al 30% de la nota.

•- La parte teórica del examen final se evaluará en papel o delante de un ordenador.

•- La parte práctica del examen final se evaluará delante de un ordenador.

Para el examen de septiembre los criterios a considerar en la evaluación final del alumno será:

Ejercicios 10% Todas las prácticas deberán haberse entregado a lo largo del curso.

Prácticas 10% Todas las prácticas deberán haberse entregado a lo largo del curso.

Examen final 80% Para promediar se requiere tener en el examen una nota mínima de 5.5 en la parte de teoría y 5 en la parte práctica.

NOTAS:

•- El examen final consta de 2 partes, una parte teórica que valdrá el 70% de la nota y una parte práctica equivalente al 30% de la nota.

•- La parte teórica del examen final se evaluará en papel o delante de un ordenador.

•- La parte práctica del examen final se evaluará delante de un ordenador

Continguts

Blocs de contingut

- Bloc de contingut 1. Programació de sistemes en C

1.1. Introducció a la programació de sistemes en C

1.2. Introducció a la comunicació i sincronització entre processos

1.3. Crides al nucli

1.4. Llibreries del sistema

- Bloc de contingut 2. Programació Concurrent

2.1. Introducció a la programació concurrent

2.2. Mecanismes de cooperació entre processos

2.2.1 Introducció als mecanismes de cooperació entre processos. Senyals

2.2.3 Introducció als mecanismes de cooperació entre processos. Cua de missatges

2.2.3 Introducció als mecanismes de cooperació entre processos. memòria compartida

2.2.2 Introducció als mecanismes de cooperació entre processos. semàfors

2.3 Exclusió mutu i sincronitzasió

2.3.1 Algorisme de Dekker

2.3.2 Algorisme de Peterson

2.3.3 Sincronitzasió en Hardware

2.4. Programació de Threads: Introducció als Threads i Programació de Threads

- Bloc de contingut 3. Programació d'Entrada/Sortida

3.1. Programació de Pipes: Introducció a les Pipes; Programació de Pipes

3.1.1 Pipes anònimes

3.1.2 Pipes amb nom (fifos)

3.2. Introducció al model Client/Servidor

3.3. Programació de Sockets: Introducció als Sockets; Programació de Sockets

Metodologia

Enfocament metodològic de l'assignatura

La asignatura se divide en 7 sesiones presénciales (de 2hrs para 14hrs) donde al alumno se le impartirá la teoría necesaria para la consolidación de los objetivos del curso.

Durante 7 sesiones prácticas (7 x 2 hrs para 14hrs) dentro del aula de laboratorio, el alumno aplicará los conocimientos adquiridos, analizando problemas o instrumentos pedagógicos y realizara una tarea practica mayor.

El alumno deberá dedicar tiempo fuera de clase a la realización de ejercicios en antelación de 3 sesiones de seminarios (3 x 2hrs para 6hrs) . Los ejercicios de seminarios requieren ser entregados antes del seminario porque involucran experimentar e investigar cuestiones de programación no triviales. También pueden requerir la investigación a partir del WEB y de fuentes bibliográficas de información APRA contextualizar el uso de las tecnologías y los conceptos discutidos durante el curso.

Los seminarios y los laboratorios son supervisados por el profesor. Se fomenta la discusión y el aprendizaje colectivo durante los seminarios comparando las soluciones desarrolladas fuera de clase. En los laboratorios se permite la realización por parejas pero al final cada estudiante deberá hacer una entrega individual.

TIPOLOGIAS

Total

Horas

Presencial (en el aula)

Grupal

Gran grupo

Exposiciones teóricas

14

Examen final

(individual)

3

Examen parcial

(individual)

1

Presencial (en el laboratorio)

Grupal (Grupos de 20 personas)

Prácticas

(Individual)

Elaboración de prácticas

14

Presencial (en el seminario)

Grupal (Grupos de 12/15 personas)

Seminarios

Contraste de seminarios y síntesis

6

Dirigido (fuera del aula)

Grupal

Grupos de 2 individuos

Contrastar seminarios

9

Completar practicas

7

Individual

Trabajo personal

10

Realización de ejemplos y actividades

9

Lecturas

7

Autónomo (fuera del aula)

Individual

Preparar exámenes

10

TOTAL

90

Fonts d'informació i recursos didàctics

Fonts d'informació per a l'aprenentatge. Bibliografia bàsica (suport paper i electrònic)

1) Kay A. Robbins y Steven Robbins ''UNIX programación práctica : [guía para la concurrencia, la comunicación y los multihilos'' México : Prentice-Hall Hispanoamericana, cop. 1997 Edició 1ª ed.

2) Stevens, W. Richard ''Advanced programming in the UNIX environment '' Reading : Addison-Wesley, cop. 1993

Fonts d'informació per a l'aprenentatge. Bibliografia complementària (suport paper i electrònic)

1) A. S. Tanembaum, A. B. Woodhall, "Sistemas Operativos: Diseño e implementación", 2ª Ed. Prentince Hall, 1998

2) Silberschatz, J. Peterson, P.Galvin "Sistemas Operativos: Conceptos fundamentales", Addison Wesley3ª Edición

3) Kernighan, Brian W. & Rob Pike "The UNIX programming environment " Brian W. Kernighan, Rob Pike, Englewood Cliffs : Prentice-Hall, cop. 1984

4) R.C. Holt ... [et al.] ''Structured concurrent programming with operating systems applications '' Reading : Addison-Wesley, cop. 1978

5) Rodriguez, Claudia Salzberg ''The Linux Kernel Primer : a top-down approach for x86 and PowerPC architectures'' Upper Saddle River, NJ : Prentice Hall Professional Technical Reference, 2006

6) Pate, Steve D. ''UNIX internals : a practical approach'' Harlow : Addison-Wesley, 1996

Fonts d'informació per a l'aprenentatge. Bibliografia de reforç (suport paper i electrònic)

C Reference Card (disponible en el Moodle para referencia al lenguaje C)

GDB quick reference (disponible en el Moodle para referencia al depurador)

LINUX quick reference (disponible en el Moodle para referencia a LINUX)

Lectura "Shell Script" (disponible ne el Moodle para referncias al shell de Linux)

vi Reference Card (disponible en moodle para referencia al editor vi)

Recursos didàctics. Material docent de l'assignatura

- Presenatcion del profesor de las 7 sesiones magistral en formato PDF en el Moodle

- Lectura sobre Senales en proceos disponible en Moodle

- Lectura sobre comandos ne Linux disponible en Moodle

- Lectura sobre tuberias (pipes) disponible en Moodle

- Lectura sobre cola de mensajes disponible en Moodle

- Lectura sobre memoria compartida disponible en Moodle.

- Lectura sobre semaforos disponible en Moodle

- Lectura sobre sockets en C disponible en Moodle

- Lectura sobre exclusion mutua y sincronizacion disponible en el Moodle

-

Recursos didàctics. Materials i eines de suport

Equipameinto de laboratorios con sistema Linux

Altres...

Paginas en línea del manual de UNIX y de las librerías de sistemas de C

Información de programación de procesos en C en la Web.