Você está na página 1de 2

Sistemas Operativos

Tarea # 1.
Profesor: Pedro A. Rodrguez
April 5, 2015

Introducci
on

Esta primera tarea consiste en programar un servicio nuevo, creando una aplicacion cliente/servidor que
permita que dos procesos, un cliente y un servidor, puedan comunicarse de forma remota a traves de la red
mediante el protocolo TCP/IP. Un servidor es un programa que ofrece un servicio determinado para que sea
solicitado y usado por otros programas denominados clientes.
El servidor que se debe programar debe ser capaz de atender a varios procesos clientes de forma concurrente.
Ambos programas, cliente y servidor, deben implementar un protocolo simple de nivel de aplicacion para la
transferencia segura de la informaci
on.
Se entrega como ejemplo dos programas en lenguaje C. Uno de ellos implementa un servidor simple (servtcp.c),
y el otro el cliente (clitcp.c), m
as un archivo Makefile para la compilacion. Estos programas pueden comunicarse
en la red a traves de una interfaz de comunicacion llamada sockets, la cual es proporcionada por el modulo IPC
(Inter Process Communication) del kernel de Unix/Linux.
Un socket es una interfaz de comunicaci
on que permite que dos o mas procesos se comuniquen en forma
local (procesos que corren en una misma m
aquina), o en forma remota a traves de la red. Un socket es tambien
un objeto abstracto que un proceso puede utilizar para enviar y recibir mensajes. Las llamadas para manejar
sockets se ejecutan en el contexto de un proceso.
Los sockets pueden ser utilizados en uno de los siguientes dominios:
AF IN ET : que permiten la comunicacion mediante una red, tal como TCP/IP.
AF U N IX: que permite la comunicaci
on en forma local, es decir, en el mismo sistema.
En la plataforma Moodle podr
an encontrar en la seccion del curso de Sistemas Operativos, Tema: Administraci
on de Procesos, un archivo zip con los programas (bajar desde el enlace Ejemplo 1: usando sockets). Este
ejemplo consiste en que el programa cliente enva al servidor un archivo de texto cualquiera. Por ejemplo, si
ejecutamos el servidor, este nos entregar
a la siguiente informacion:
] servtcp
0
El puerto asociada al socket es 40933
El servidor esta OK, Para bajarlo Presione Control C
Esto nos dice que para que cualquier cliente se conecte con este servidor, este debe hacerlo a traves del
puerto 40933. Todos los servicios de red de Unix/Linux tienen asociado un puerto, el cual puede ser definido
por convenci
on o debe ser solicitado al sistema como en nuestro caso. Esto u
ltimo se debe a que este servicio es
nuevo. Notar que el servidor ya es concurrente debido a que genera un proceso nuevo con la llamada al sistema
fork() cada vez que un nuevo cliente solicita una conexion.
Por otro lado, el cliente se ejecutar
a de la siguiente forma:
] clitcp dichato.dcc.uchile.cl 40933 servtcp.c servidor
> recibido
> recibido
> recibido
> recibido
Esto significa que el cliente se conectar
a en este caso a la maquina dichato.dcc.uchile.cl (tambien se puede
proporcionar la direcci
on ip de la m
aquina), para enviar al servidor un archivo de texto llamado servtcp.c y un
nombre (o login) que usar
a el servidor para imprimir el archivo recibido en su directorio de trabajo local.
M
aximo

dos integrantes por grupo.

Se recomienda tambien consultar el apunte titulado Programacion de Software de Sistemas (lo pueden bajar
desde Moodle), el cual contiene algunos captulos dedicados al aprendizaje de la programacion en lenguaje C y
otros dedicados a procesos y sockets.

El problema a resolver en la tarea.

Construir un servidor y un cliente, donde el servidor debe atender a varios clientes de forma concurrente y
simult
anea. El cliente podr
a hacer cualquiera de las dos siguientes preguntas al servidor:
1. La hora. El cliente enviar
a la palabra hora. El servidor consultara con la maquina local la hora del
sistema y se la enviar
a al cliente.
2. El identificador de proceso. El cliente enviara la palabra pid. El servidor consultara con la maquina local
el identificador del proceso hijo o esclavo que atiende la peticion del programa cliente y se lo enviar
a.
El programa cliente imprimir
a por pantalla las respuestas del servidor. Por ejemplo, si se pregunta la hora:
Hora: 12:40:35
Si se pide el pid, el cliente imprimir
a en pantalla:
pid: 90678
Nota importante. Deben averiguar que funciones o llamadas al sistema se pueden usar para consultar la
hora al sistema y por el pid de un proceso. La hora que debe enviar el servidor a los clientes debe contener el
siguiente formato: hh:mm:ss (hora-minutos-segundos).

Lo que se debe entregar en la tarea.


Una Implementaci
on en lenguaje C de los programas cliente y servidor.
Proporcionar un archivo Makefile para compilar.
Programar en ambiente Unix/Linux.
Utilizar stream sockets y protocolo TCP.
Definir el protocolo de comunicaci
on de nivel de aplicacion.
El programa debe venir autodocumentado (con comentarios en el mismo codigo fuente).
Un peque
no informe con la descripci
on de la solucion y el protocolo de comunicacion usado entre el servidor
y el cliente.
Ambos programas, cliente y servidor, deben enviar un mensaje por pantalla de como invocar/ejecutar los
respectivos programas y sus par
ametros en el caso de un error en la ejecucion de estos, tal como se hace
en los programas ejemplos.
El nombre de los integrantes en el informe y al inicio de los programas fuentes.

Plazo de entrega de la Tarea.

Para el da lunes 20 de Abril de 2015 hasta las 23:59 hrs. La tarea debe ser enviada a mi correo electr
onico
prodrigu@ubiobio.cl, con los nombres de los integrantes en el mail y en el programa fuente. El subject o
asunto del correo debe decir Entrega tarea 1 de Sistemas Operativos.

Você também pode gostar