sistemas operativos

2
Sistemas Operativos Tarea # 1. * Profesor: Pedro A. Rodr´ ıguez April 5, 2015 1 Introducci´ on Esta primera tarea consiste en programar un servicio nuevo, creando una aplicaci´ on cliente/servidor que permita que dos procesos, un cliente y un servidor, puedan comunicarse de forma remota a trav´ es 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 aplicaci´ on 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 compilaci´ on. Estos programas pueden comunicarse en la red a trav´ es de una interfaz de comunicaci´ on llamada sockets, la cual es proporcionada por el m´ odulo IPC (Inter Process Communication) del kernel de Unix/Linux. Un socket es una interfaz de comunicaci´ on que permite que dos o m´ as procesos se comuniquen en forma local (procesos que corren en una misma m´ aquina), o en forma remota a trav´ es de la red. Un socket es tambi´ en 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 INET : que permiten la comunicaci´ on mediante una red, tal como TCP/IP. AF UNIX: que permite la comunicaci´ on en forma local, es decir, en el mismo sistema. En la plataforma Moodle podr´ an encontrar en la secci´ on del curso de Sistemas Operativos, Tema: Adminis- traci´ 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 env´ ıa al servidor un archivo de texto cualquiera. Por ejemplo, si ejecutamos el servidor, ´ este nos entregar´ a la siguiente informaci´ on: ] 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 trav´ es 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 ´ ultimo 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 conexi´ on. 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 m´ aquina dichato.dcc.uchile.cl (tambi´ en 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. 1

Upload: carlosulloamoncada

Post on 21-Dec-2015

212 views

Category:

Documents


0 download

DESCRIPTION

Ejercicio de Sistemas Operativos

TRANSCRIPT

Page 1: Sistemas Operativos

Sistemas Operativos

Tarea # 1. ∗

Profesor: Pedro A. Rodrıguez

April 5, 2015

1 Introduccion

Esta primera tarea consiste en programar un servicio nuevo, creando una aplicacion cliente/servidor quepermita que dos procesos, un cliente y un servidor, puedan comunicarse de forma remota a traves de la redmediante el protocolo TCP/IP. Un servidor es un programa que ofrece un servicio determinado para que seasolicitado 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 latransferencia segura de la informacion.

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), mas un archivo Makefile para la compilacion. Estos programas pueden comunicarseen 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 comunicacion que permite que dos o mas procesos se comuniquen en formalocal (procesos que corren en una misma maquina), o en forma remota a traves de la red. Un socket es tambienun objeto abstracto que un proceso puede utilizar para enviar y recibir mensajes. Las llamadas para manejarsockets se ejecutan en el contexto de un proceso.

Los sockets pueden ser utilizados en uno de los siguientes dominios:

• AF INET : que permiten la comunicacion mediante una red, tal como TCP/IP.

• AF UNIX: que permite la comunicacion en forma local, es decir, en el mismo sistema.

En la plataforma Moodle podran encontrar en la seccion del curso de Sistemas Operativos, Tema: Adminis-tracion de Procesos, un archivo zip con los programas (bajar desde el enlace Ejemplo 1: usando sockets). Esteejemplo consiste en que el programa cliente envıa al servidor un archivo de texto cualquiera. Por ejemplo, siejecutamos el servidor, este nos entregara la siguiente informacion:

] servtcp0El puerto asociada al socket es 40933El 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 delpuerto 40933. Todos los servicios de red de Unix/Linux tienen asociado un puerto, el cual puede ser definidopor convencion o debe ser solicitado al sistema como en nuestro caso. Esto ultimo se debe a que este servicio esnuevo. Notar que el servidor ya es concurrente debido a que genera un proceso nuevo con la llamada al sistemafork() cada vez que un nuevo cliente solicita una conexion.

Por otro lado, el cliente se ejecutara de la siguiente forma:

] clitcp dichato.dcc.uchile.cl 40933 servtcp.c servidor− > recibido− > recibido− > recibido− > recibido

Esto significa que el cliente se conectara en este caso a la maquina dichato.dcc.uchile.cl (tambien se puedeproporcionar la direccion ip de la maquina), para enviar al servidor un archivo de texto llamado servtcp.c y unnombre (o login) que usara el servidor para imprimir el archivo recibido en su directorio de trabajo local.

∗Maximo dos integrantes por grupo.

1

Page 2: Sistemas Operativos

Se recomienda tambien consultar el apunte titulado Programacion de Software de Sistemas (lo pueden bajardesde Moodle), el cual contiene algunos capıtulos dedicados al aprendizaje de la programacion en lenguaje C yotros dedicados a procesos y sockets.

2 El problema a resolver en la tarea.

Construir un servidor y un cliente, donde el servidor debe atender a varios clientes de forma concurrente ysimultanea. El cliente podra hacer cualquiera de las dos siguientes preguntas al servidor:

1. La hora. El cliente enviara la palabra hora. El servidor consultara con la maquina local la hora delsistema y se la enviara al cliente.

2. El identificador de proceso. El cliente enviara la palabra pid. El servidor consultara con la maquina localel identificador del proceso hijo o esclavo que atiende la peticion del programa cliente y se lo enviara.

El programa cliente imprimira por pantalla las respuestas del servidor. Por ejemplo, si se pregunta la hora:

Hora: 12:40:35

Si se pide el pid, el cliente imprimira en pantalla:

pid: 90678

Nota importante. Deben averiguar que funciones o llamadas al sistema se pueden usar para consultar lahora al sistema y por el pid de un proceso. La hora que debe enviar el servidor a los clientes debe contener elsiguiente formato: hh:mm:ss (hora-minutos-segundos).

3 Lo que se debe entregar en la tarea.

• Una Implementacion 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 comunicacion de nivel de aplicacion.

• El programa debe venir autodocumentado (con comentarios en el mismo codigo fuente).

• Un pequeno informe con la descripcion de la solucion y el protocolo de comunicacion usado entre el servidory el cliente.

• Ambos programas, cliente y servidor, deben enviar un mensaje por pantalla de como invocar/ejecutar losrespectivos programas y sus parametros en el caso de un error en la ejecucion de estos, tal como se haceen los programas ejemplos.

• El nombre de los integrantes en el informe y al inicio de los programas fuentes.

4 Plazo de entrega de la Tarea.

Para el dıa lunes 20 de Abril de 2015 hasta las 23:59 hrs. La tarea debe ser enviada a mi correo [email protected], con los nombres de los integrantes en el mail y en el programa fuente. El subject oasunto del correo debe decir Entrega tarea 1 de Sistemas Operativos.

2