2038_Computacion_II.doc - Universidad de Mendoza

Examen de Sistemas Operativos Junio de 2005 ... a) fork y exec ... de Memoria no le envía ningún mensaje a la Tarea del Sistema durante su ejecución: a) fork.


un extrait du document



UNIVERSIDAD DE MENDOZA – FACULTAD DE INGENIERÍA



CARRERA
INGENIERÍA EN INFORMÁTICAASIGNATURA
COMPUTACIÓN IICÓDIGO
2038CURSO
TERCER AÑO ÁREA
Tecnologías AplicadasULTIMA REVISIÓN
Marzo de 2014MATERIAS CORRELATIVAS:
2028 – COMPUTACIÓN IAÑO LECTIVO 2014

Profesor Titular: Profesor Asociado:Profesores Adjuntos: Ing. Carlos TaffernaberryJefes de trabajos prácticos: Ing. Federico Hernandez 
Carga Horaria Semanal: 4Carga Horaria Total:120
OBJETIVOS:
Adquirir dominio en las herramientas de desarrollo de sistemas POSIX (Unix-like).
Manejar adecuadamente dichas herramientas para la construcción de aplicaciones.
Conocer y utilizar las bibliotecas más comunes del entorno.
Diferenciar los servicios de biblioteca de las llamadas al sistema operativo.
Utilizar eficientemente las API de bajo nivel y de red.

PROGRAMA ANALÍTICO:

Capítulo I: El entorno POSIX

Tema 1: El entorno de usuario:
1.1.1- Sesión de usuario: inicio, operación, finalización. 1.1.2- Personalización del entorno. 1.1.3- El shell de usuario. 1.1.4- Entrada y salida estándar; salida de error. 1.1.5- Utilidades comunes para manejo de archivos y filtrado de texto.

Tema 2: El entorno de desarrollo:
1.2.1-Estándares ANSI, POSIX, BSD y System V. 1.2.2- Generalidades del entorno. 1.2.3- Creación de aplicaciones: edición, compilación y enlace, depuración. 1.2.4- Automatización con make. 1.2.5 - Estructura del proyecto: archivos fuente: interface e implementación. 1.2.6 Ubicación de archivos de encabezado y bibliotecas. 1.2.7 Secciones y páginas del manual (man) del programador. 1.2.8 Herramientas de Depuración. 1.2.9 Control de versiones.

Capítulo II: API: entrada/salida (I/O)

Tema 1: Entrada/salida de alto nivel:
2.1.1 - ANSI C: relación entre el lenguaje "C" y la biblioteca estándar. 2.1.2 - Diferencias con el API de bajo nivel. 2.1.3 - Funciones más comunes: apertura, lectura/escritura y posicionamiento de archivos.

Tema 2: Entrada/salida de bajo nivel:
2.2.1 - Llamadas al sistema operativo, interacción con el núcleo, descriptores de archivo. 2.2.2 - Comparación con funciones de alto nivel. 2.2.3 - Apertura de archivos: flags de apertura, modos, permisos; relación con umask. 2.2.4 - Lectura y escritura de archivos. 2.2.5 - I/O avanzado: proyección de archivos en memoria.

Capítulo III: API: Procesos

Tema 1: Introducción:
3.1.1 - Generalidades: concepto de proceso, relación con el núcleo. 3.1.2 Propiedades de un proceso: PID, uid, gid, entorno, descriptores de archivo, mapa de memoria. 3.1.3 - Utilidades para administración de procesos . 3.1.4 - Variables de entorno.

Tema 2: Creación de procesos:
3.2.1 - Creación de procesos, comportamiento y flujo del programa (padre y hijo). 3.2.2 - Relación proceso padre/hijo: memoria, archivos, entorno, señales, process ids, user/group ids. 3.2.3 - Espera y recuperación del estado de finalización de un proceso.

Tema 3: Ejecución de programas:
3.3.1 - Generalidades respecto de la ejecución de programas. 3.3.2 - Llamadas y funciones para ejecución de programas; comportamiento y flujo del código . 3.3.3 - Propiedades conservadas luego de la ejecución.

Tema 4: Señales:
3.4.1 - Concepto de señal, relación con el núcleo, señales síncronas y asíncronas. 3.4.2 - Números y nombres de señal, condiciones informadas. 3.4.3 - Disposición de las señales: ignorar, interceptar ó permitir la acción por defecto. 3.4.4 - Llamadas y funciones para la intercepción y bloqueo de señales. 3.4.5 - Envío de señales.

Capítulo IV: API: sistema de archivos (FS)

Tema 1: Introducción:
4.1.1 - Generalidades sobre sistemas de archivos, estructura, inodos, archivos y directorios, enlaces. 4.1.2 - Llamadas para recuperación de los metadatos de archivos. 4.1.3 - Llamadas para la modificación del propietario y modos de archivos. 4.1.4 - Llamadas para modificar entradas de directorios: enlace, borrado, renombrado; lectura de directorios. 4.1.5 Dispositivos especiales (caracter y bloque).

Capítulo V: API: Comunicación entre procesos (IPC)

Tema 1: Pipes:
5.1.1 - Pipes , llamadas de bajo y alto nivel . 5.1.2 - FIFOs (named pipes).

Tema 2: Colas de mensajes:
5.2.1 - Generalidades y alcance. 5.2.2 - Identificación, creación y remoción. 5.2.3 - Envío y recepción de mensajes.

Tema 3: Semáforos:
5.3.1 - Generalidades y alcance. 5.3.2. - Identificación, creación y remoción. 5.3.3 - Operaciones con semáforos, relación con la finalización del proceso.

Tema 4: Segmentos de memoria compartida:
5.4.1 - Generalidades y alcance. 5.4.2 - Identificación, creación y remoción. 5.4.3 - Uso de la memoria compartida, mapeos privados y compartidos.

Capítulo VI API: Red

Tema 1: Introducción:
6.1.1 - Generalidades sobre los sockets. 6.1.2 - Familias de protocolos, tipos de sockets. 6.1.3 - Creación de sockets, apertura activa y pasiva. 6.1.4 - Direccionamiento.

Tema 2: UNIX sockets:
6.2.1 - Características y alcance. 6.2.2 - Creación y utilización de sockets AF_UNIX, socketpair.

Tema 3: INET sockets:
6.3.1 - Características y alcance. 6.3.2 - Protocolos, direcciones IP y puertos. 6.3.3 - Creación y utilización de sockets AF_INET. 6.C.4 - Aplicaciones para servicios TCP/IP . Introducción sockets AF_INET6.

Capítulo VII API: Hilos de ejecución (threads)

Tema 1: Introducción:
7.1.1 - Generalidades sobre hilos de ejecución. 7.1.2 - Comparación con procesos, ventajas y desventajas.

Tema 2: Uso de hilos de ejecución:
7.2.1 - Creación y finalización de threads. 7.2.2 - Primitivas de sincronización: exclusión mutua, espera condicional.

Capítulo VIII : Sistemas y Procesos Distribuidos

Tema 1: Introducción:
8.1.1 – Introducción a sistemas y procesos distribuidos. 8.1.2 – Comparación Procesos Cliente/Servidor y Procesos distribuidos mediante paso de Mensaje.

Tema 2: Puertas
8.2.1 - Creación y finalización de doors. 8.2.2 – Paso de descriptor. 8.2.3 – Terminación prematura de Cliente y Servidor.

Tema 3: Sun Remote Procedure Call (RPC)
8.3.1 - Introducción. Semántica de las llamadas. 8.3.2 - Multithread, Binding al servidor, timeout y retransmisiones. 8.3.3 – Formato de paquete RPC.

Tema 3: Servicio Web
8.3.1 - Introducción y estándares. Ventajas y desventajas. 8.3.2 – Implementación de API en C.










PROGRAMA DE TRABAJOS PRÁCTICOS:

Práctico No 1: Redirección de la entrada y salida estándar
Práctico No 2: Aplicación de fork, exec y pipe.
Práctico No 3: Aplicación Servidor HTTP concurrente multiproceso
Práctico No 4: Aplicación de fork, exec e IPC (mem.compartida,cola de mensajes)
Práctico No 5: Aplicación Servidor HTTP concurrente multihilado


ARTICULACIÓN HORIZONTAL Y VERTICAL DE CONTENIDOS:

Los contenidos abordados en esta materia se basan en conceptos de las siguientes cátedras:

AsignaturaCursoInformática
Sistemas Operativos
Computación I1er Año
2do Año
2do Año
Comparte e integra elementos horizontalmente con las siguientes cátedras:

AsignaturaCursoRedes de Datos
Programación I
Teoría de Compiladores3er Año
3er Año
3er Año

Los contenidos abordados en esta materia aportan conceptos a las siguientes cátedras:

AsignaturaCursoTeleinformática
Seguridad Informática I4to. Año
4to. Año
CONDICIONES PARA REGULARIZAR LA MATERIA y RÉGIMEN DE EVALUACIÓN:
La materia se aprobará por medio de un examen final.
Para regularizar la materia el alumno deberá:
Asistir al 80% de las clases.
Aprobar el 100% de los trabajos prácticos.

BIBLIOGRAFÍA:

Principal:

AutorTítuloEditorialAño Ed.Dispon.Kerrisk, MichaelThe Linux Programming InterfaceNo starch press2010Stevens, Richard.Advanced Programming in the UNIX EnvironmentAddison Wesley1996Stevens, RichardUnix Network Programming Vol 1: Networking APIs: Socket and XTIPrentice Hall19981Stevens, RichardUnix Network Programming Vol 2: Interprocess ComunicationsPrentice Hall19991
De Consulta:
AutorTítuloEditorialAño Ed.Dispon.Neil Matthew and Richard Stones et al.Professional Linux ProgrammingWrox2000Wall, KurtProgramación en Linux con ejemplosPrentice Hall2000
comp.lang.c Frequently Asked Questions
 HYPERLINK "http://www.eskimo.com/~scs/C-faq/top.html"http://www.eskimo.com/~scs/C-faq/top.html 
Manuales en castellano de Linux (Proyecto Lucas)
 HYPERLINK "http://lucas.hispalinux.es/Manuales-LuCAS"http://lucas.hispalinux.es/Manuales-LuCAS
The GNU C Library Manual
 HYPERLINK "http://www.gnu.org/manual/"http://www.gnu.org/manual/ 
Programming UNIX Sockets in C FAQ
 HYPERLINK "http://www.developerweb.net/sock-faq/"http://www.developerweb.net/sock-faq/ 
The Unix Programming Resources Page
 HYPERLINK "http://www.erlenstar.demon.co.uk/unix/"http://www.erlenstar.demon.co.uk/unix/ 
The Linux Documentation Project.
 HYPERLINK "http://www.linuxdoc.org/"http://www.linuxdoc.org/ 


ESTRATEGIAS DIDÁCTICAS UTILIZADAS:


Clases expositivas
Discusiones grupales
Trabajos prácticos grupales

RECURSOS DIDÁCTICOS UTILIZADOS:

Medios informáticos
Pizarrón y tiza
Internet
Laboratorio
Apuntes elaborados para consulta de los alumnos
PROGRAMA DE EXAMEN :

BOLILLA 1: Capítulos 1,6
BOLILLA 2: Capítulos 2,7
BOLILLA 3: Capítulos 3,5
BOLILLA 4: Capítulos 4,6
BOLILLA 5: Capítulos 5,6
BOLILLA 6: Capítulos 6,8
BOLILLA 7: Capítulos 7,5
BOLILLA 8: Capítulos 8,4
BOLILLA 9: Capítulos 7,3
Formación PrácticaHorasResolución de Problemas Rutinarios:35Laboratorio, Trabajo de Campo: Resolución de Problemas Abiertos:40Proyecto y Diseño: