Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
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).
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.