Programacion de Sistemas
Prof. Gustavo De la Cruz Tovar
Sexto Semestre. Ingenieria Cibernetica y en Sistemas Computacionales.
Escuela de Ingenieria. Universidad La Salle.

Objetivo: 
Entender desde el punto de vista de programacion, como se explotan los 
recursos de un sistema operativo y aplicar dichos conocimientos para resolver
problemas en los cuales los sistemas de informacion deben utilizar las 
capacidades del sistema operativo.

Conocimientos necesarios:
	+ Programacion Estructurada.
	+ Lenguaje C
	+ UNIX Basico
	+ Teoria de sistemas operativos.

Herramientas de hardware y software a utilizar:
	+ Computadora que soporte sistema UNIX
	+ UNIX System V Release 4 ( OSF/1, Solaris, Linux)
	+ Lenguaje C y Perl.
	+ Editor de texto. vi o pico

Temario: 

Nota: Cada tema se ejemplificara en laboratorio, utilizando lenguaje C
y Perl.

Tema 0. Repaso conocimientos base. 
Horas: 4 
	+  Lenguaje C.
	+ UNIX Basico

Tema I. Introduccion a la programacion de sistemas.
Horas: 6
	+ Definicion.
	+ Arquitectura de un sistema operativo desde el punto 
	de vista de programacion de sistemas.
	+ Kernel y shell.
	+ Llamadas al sistema.
	+ Fundamentos de programacion en Perl. 

Tema II. Modelo UNIX.
Horas: 6
	+ Arquitectura UNIX.
	+ API y ABI.
	+ Variables del shell y  linea de comandos.
	+ Esquemas de permisos.
	+ Uso de llamadas basicas al sistema.
	+ Scripts.

Tema III.  Procesos y Programas.
Horas: 8
	+ Definicion y estructura.
	+ Organizacion en UNIX. 
	+ Operaciones basicas con procesos.
	+ Llamadas al sistema para administracion de procesos.

Tema IV. Archivos
Horas: 6
	+ Entrada y Salida.
	+ Organizacion de sistemas de archivos UNIX.
	+ Operaciones sobre archivos y directorios.
	+ Redireccionamiento.
	+ STREAMS.	
	+ Llamadas al sistema para administracion de archivos.

Tema V. Comunicacion entre procesos. Mecanismos basicos.
Horas: 8
	+ Comunicación entre procesos.
	+ Tipos de procesamiento.
	+ Entubamientos (PIPES y FIFOS).
	+ Seþnales. 
	+ Llamadas al sistema para administracion de entubamientos y sennales.

Tema VI.  Comunicación entre procesos - Concurrencia.
Horas: 8
	+ Concurrencia
	+ Semáforos.
	+  Memoria compartida.
	+ Mensajes.
	+  Llamadas al sistema para administracion de mecanismos de 
	concurrencia.
	+ Conceptos sobre monitores de transacciones.

Tema VII.  Comunicación entre procesos distribuídos. 
Horas: 10
	+  Procesos Distribuidos.
	+ Protocolos de Redes.
	+ UNIX y Redes.
	+ Cliente/Sevidor.
	+ Sockets.	
	+ Llamadas a procedimientos Remotos (RPC)
	+ Tecnologias Internet. Correo. WWW.
	+ HTML y CGI.
	+ Seguridad en redes.

Bibliografia.
	+ UNIX Programacion Practica. Kay Robbins. Ed. Prentice Hall.
	(Libro de Texto)
	+ El Entorno de Programacion UNIX. Brian Kernighan. Ed. Prentice Hall.
	(En biblioteca)
	+ Advanced Programming in the UNIX Environment. Richard Stevens.
	Addison Wesley. 1992. (En biblioteca)
	+ UNIX Network Programming. Richard Stevens. Prentice Hall. 1990
	+ El Lenguaje de Programacion C. Brian Kernighan. Ed. Prentice Hall.
	(En biblioteca)
	. Programming Perl. Larry Wall . Ed. O'Reilly. Segunda Edicion. 
	. Learning Perl. Larry Wall . Ed. O'Reilly. Segunda Edicion. 
	+ Conceptos de Sistemas Operativos. Silberschatz. Addison Wesley. 1994.
	(En biblioteca)
	+ Sistemas Operativos. Diseño e implantación. Tannenbaum. 
	(En biblioteca)
	+ http://www.perl.com

Evaluacion
	Tres examenes parciales	:
		1er. parcial (E1). Tema I a III. 
		Fecha Estimada aplicacion: Ultima semana marzo.
		2o. parcial (E2): Tema IV,V y VI.
		Fecha Estimada aplicacion: Tercera semana mayo.
		3er. parcial (E3): Tema VII.
		 Fecha Estimada aplicacion: Ultima semana del semestre.
		Mecanismo de aplicacion:	
			Examen escrito.
			Examen en computadora.
			Examen casa.
		El examan se aplica el dia que se acuerde, sin 
		posibilidad de cambio instantaneo.          
	Practicas:
		Practica 1. (P1)  Tema I a III.
		Practica 2. (P2) Tema IV a VI.
		Practica 3. (P3) Tema VII.
	Las practicas consisten en contestar los ejercicios indicados
	en los apuntes. Equipos minimo de 1 persona maximo 4.
	NOTA: Practica con uno o mas ejercicios copiados es calificada con 0.
		Se deben entregar practicas en fechas acordadas. No
		se aceptan retrasos.

	
	Proyecto Final (PF):
		Programa en C o Perl con interaccion con Internet
		en el cual se debe utilizar procesos, comunicacion de procesos,
		archivos y sockets.
		Nota:
		Considerar equipo de 4 personas.
		
	Calificacion Final = [ (E1 + E2+ E3)/3 ] * 0.4 +  
			     [ (P1 + P2+ P3)/3 ] * 0.35 +	
			     [ PF ] * 0.25 	

	Calificacion aprobatoria: 6.00000

	+ Reglas.
		+ Clase empieza 8:00 pm. Tolerancia de 15 minutos.
		+ Asistencia necesaria y con participacion en clase
		(no navegacion en Internet, ni interrumpcion por 
		otras actividades (trabajos otras materias o diversion))
		

    Source: geocities.com/gusdelact/cib6122002

               ( geocities.com/gusdelact)