Programación de Sistemas Unix

Versión para impresoraVersión para impresora

Código: SI-220
Modalidad: Presencial
Total Horas: Consultar

Fecha Inicio: Bajo demanda

Descripción del Curso

En el curso Programación de Sistemas UNIX se enseña a escribir programas C con las llamadas de librería y del sistema más comunes en los sistemas operativos Solaris 2.x y Solaris 7. Está diseñado para programadores C que quieran escribir aplicaciones que utilicen los servicios de estos sistemas operativos. El curso contiene una introducción a los estándares ANSI C, POSIX y SVID-3 incluidos en estos sistemas operativos. En él se describe el uso de las llamadas de librería y del sistema más comunes en los sistemas operativos Solaris 2.x y Solaris 7 (lo que incluye la librería de E/S estándary las llamadas de bajo nivel para usar archivos y directorios). También se tratan las llamadas utilizadas para crear procesos, ejecutar nuevos programas y controlar señales, así como las utilidades de comunicaciones entre procesos de Solaris 2.x y Solaris 7, lo que incluye canales, mmp, VIPC System y sockets.

Objetivo

Las personas que realicen el curso aprenderán a:

  • Definir los términos POSIX (Sistema operativo portable basado en UNIX) y SVID (Definición de interfaz de System V).
  • Comprender la relación entre Solaris y los estándares POSIX y SVID.
  • Escribir aplicaciones que realicen operaciones básicas con archivos.
  • Utilizar el bloqueo de archivos y registros.
  • Identificar las diferencias que existen entre las funciones de sistema y de librería.
  • Consultar y modificar los atributos y los límites de recursos del proceso.
  • Escribir aplicaciones que utilicen herramientas de gestión de memoria para la asignación dinámica de la memoria.
  • Comprender la estructura de directorios y escribir aplicaciones que puedan leer jerarquías de directorios.
  • Escribir aplicaciones que generen otros procesos, y que controlen de alguna manera los nuevos procesos.
  • Escribir aplicaciones que utilicen herramientas de administración de señales y herramientas de memoria virtual para mejorar el rendimiento, y que intercambien datos mediante canales, colas de mensajes y memoria compartida.
  • Sincronizar los procesos mediante el uso de semáforos.
  • Escribir una aplicación cliente/servidor sencilla utilizando funciones de socket.

Prerequisitos

Para obtener el máximo aprovechamiento del curso, los alumnos necesitan:

  • Saber escribir programas en C que utilicen punteros, estructuras y argumentos de la línea de comandos.
  • Saber crear y modificar archivos de texto con vi o el editor de texto OpenWindows.
  • Saber utilizar los comandos básicos de Solaris.

Cursos relacionados

Cursos relacionados (Antes):
SI-240: Network Programming
SI-260: Multi-Threaded Applications Programming
SI-375: Writing Device Drivers for the Solaris Operating Environment
SL-380: High Performance Computing Programming
SP-365: Solaris 9 Internal

Contenido

Descripción de la interfaz del sistema

  • POSIX y SVID
  • Entornos de programación disponibles en el sistema operativo SunOS 5.x
  • Diferencias entre las llamadas del sistema y las llamadas de librería, y cómo encontrar información sobre ellas.
  • Cómo manejar los errores devueltos
  • Funciones de E/S estándar y funciones de memoria

Producción de tareas nuevas.

  • La necesidad de crear procesos
  • Creación de un proceso
  • Ejecución de un programa nuevo
  • Terminación del proceso en curso
  • Periodo de espera hasta que termina un proceso

Información del sistema y de procesos

  • Cómo acceder al nombre y el número de identificación del sistema
  • Cómo acceder a información sobre los archivos y los límites del sistema
  • Campos en una entrada de contraseña
  • Cómo conserva el sistema operativo Solaris los datos de tiempo, y las rutinas utilizadas para la conversión entre varios formatos de tiempo
  • Definición de un proceso y del espacio de direcciones virtual de un proceso
  • Cómo utilizar argumentos y variables de entorno
  • Asignación dinámica de memoria
  • Atributos de un proceso
  • Diferencia entre ID de usuario real e ID de usuario efectivo
  • Recuperación de la información de uso del recurso de tiempo relacionada con un proceso y los procesos subordinados

Archivos

  • Descripción de un file system operativo Solaris
  • Relación de la información acerca de un archivo que conserva el sistema
  • Cómo leer y escribir archivos regulares
  • Diferencia entre las funciones open ( ) y dup ( )
  • Algunas llamadas de E/S estándar avanzadas y por qué no deben mezclarse con las llamadas de E/S del sistema
  • Creación de archivos temporales
  • Simplificación del control de archivos
  • Uso de canales anónimos

Directorios

  • Formato de un directorio
  • Lectura del contenido de un directorio
  • Cómo crear y eliminar un directorio
  • Diferencia entre enlaces simbólicos y completos
  • Cambio del nombre de los archivos

Señales

  • Usos de las señales
  • Envío de señales
  • Conjuntos de señales
  • Diferencia entre bloquear y capturar una señal
  • Escritura de un manejador de señales
  • Diferentes temporizadores disponibles

Programación con subprocesos (threads)

  • Describir la importancia de un proceso ligero en la programación de subprocesos.
  • Explicar las ventajas de los subprocesos múltiples y los procesos ligeros en un proceso.
  • Escribir código para crear subprocesos y comunicarse con otros subprocesos.

Descripción de IPC

  • Describir las características de las comunicaciones entre procesos (IPC).
  • Describir los métodos de IPC.
  • Explicar cómo hacer una lista de objetos IPC y eliminarlos desde la línea de comandos.

Mensajes cortos

  • Uso de canales con nombre
  • Uso de colas de mensajes para la comunicación entre procesos

Memoria compartida

  • Usar mmap() para incorporar archivos a la memoria.
  • Explicar por qué es necesario sincronizar la memoria con la memoria gráfica.
  • Compartir una región de la memoria empleando la región de memoria compartida de System V.

Sincronización

  • Entender por qué son necesarios el bloqueo y la sincronización.
  • Entender la operación test-and-set (evaluar y modificar).
  • Entender los tipos de bloqueos disponibles, sus aplicaciones y diferencias.
  • Entender la aplicación de distintos tipos de bloqueos a los threads de comunicación interprocesos e intraprocesos con acceso a datos compartidos.

Sockets

  • Modelo cliente-servidor con funciones socket
  • Diferencias entre sockets de flujo y sockets de datagramas
  • Diferencias entre sockets de UNIX y sockets de Internet
  • La necesidad de las funciones de orden de bytes para redes
  • Conversión de un nombre de host en una dirección IP
  • Cómo conectar el cliente y el servidor
  • Cómo enviar y recibir datos
  • Simplificación de E/S asíncrona
  • Cómo utilizar select ( ) en sockets