You are on page 1of 3

MAESTRA EN COMPUTACIN

UNAN - LEN
SISTEMAS OPERATIVOS AVANZADOS





DI S EANDO UN S ERVI DOR WEB
RUDI MENTARI O
PROYECTO 1



Objetivos
1. Disear e implementar un servidor en un ambiente distribuido empleando
diferentesestrategiasdediseo.
2. Contrastar las diferentes estrategias de diseo de un servidor Web
rudimentarioempleandociertasmtricas.

Generalidades
Paraesteproyectodeberseguircuidadosamentelassiguientesindicaciones:
Seguirunaprcticadediseoycodificacinconsistenteyelegante.
Leer y estudiar cuidadosamente informacin acerca de Pthreads, el
protocolo HTTP, creacin y sincronizacin de procesos e hilos, depuracin
de procesos e hilos, sockets; en caso de no tener conocimientos previos
relacionadosadichostemas.
Preguntar por cualquier duda que tenga al profesor por medio de correo
electrnico o utilizar el foro que se ha dispuesto en el campusvirtual del
curso.

Introduccin
Un servidor Web es un programa que implementa el protocolo HTTP para
transferir pginas en formato HTML (texto, imgenes, formularios, botones,
objetos incrustados) hacia un navegador Web (browser). Para propsitos del
1
MAESTRA EN COMPUTACIN
UNAN - LEN
SISTEMAS OPERATIVOS AVANZADOS
proyecto slo ser necesario implementar un pequeo subconjunto del
protocoloHTTP(transferenciadetextoeimgenes).
Servidores
El proyecto consiste en codificar 5 versiones de un servidor Web que siguen 5
enfoques de diseo diferente. Todas las versiones ofrecern la misma
funcionalidad, siendo la diferencia el mecanismo empleado para atender a los
clientes. Cada una de las versiones le ser asignada un puerto de escucha
diferente.
Lasdiferentesversionesaimplementarsedescribenacontinuacin:
Versin FIFO: esta es la ms simple, ya que el servidor atender las
peticionesclientessegnsuordendellegada,esdecir,primerapeticin
enllegar,primeraenatenderse.
Versin forked: en esta versin tendremos a un proceso maestro, el
cual cada vez que reciba una nueva solicitud crear un proceso por
medio de la llamada fork() para que atienda exclusivamente a dicha
solicitud, una vez termine de atenderla, el proceso muere. El proceso
maestro,retornarinmediatamentearecibirlasiguientesolicitud.
Versin threaded: semejante a la anterior, pero en lugar de crear un
proceso para atender una nueva solicitud se crear un hilo, el cual
morirunavezconcluidosutrabajo.
Versin preforked: El servidor recibir por la lnea de rdenes un
argumentoqueindicalacantidaddeprocesos(workerprocessesclavos)
que debern ser creados a priori con fork para atender a solicitudes.
Tendremos un proceso maestro que escuchar en el socket principal y
ante una nueva solicitud asignar trabajo a algn proceso que est
disponible. Cada worker realiza el trabajo que se le asign y una vez
concluido se bloquea a la espera de nuevas asignaciones de trabajo.
Debe emplear un mecanismo que de forma elegante desactive todo el
servidor(sindejarhijoshurfanos).
Versin prethreaded: el servidor recibir por la lnea de rdenes un
argumentoqueindicalacantidaddehilos(workerthreads)quedebern
sercreadosaprioriusandoPthreadsparaatendersolicitudes.Semejante
a la versin anterior, tendremos un proceso principal que escucha el
socket principal y asigna trabajo a algn hilo que est disponible. Cada
hilo realiza el trabajo asignado y despus se bloquea a la espera de
nuevas asignaciones de trabajo. Debe emplear un mecanismo que de
formaelegantedesactivetodoelservidor.

2
MAESTRA EN COMPUTACIN
UNAN - LEN
SISTEMAS OPERATIVOS AVANZADOS
Cliente
Losservidoresdescritosanteriormenteatendernunsubconjuntodesolicitudes
quecualquiernavegadorWebpuedehacer.Comoserequerirhacercontrastes
entre las diferentes versiones y probablemente no cuente con cientos de
usuarios para probar sus servidores y someterlos a cargas de trabajo, ser
necesariocodificarunclientequeexijabastantecargadetrabajoacadaunode
susservidores.

Suclienteserinvocadodesdelalneadecomandosdelasiguientemanera:
cliente servidor:puerto archivo t nThreads c nCiclos

Donde el argumento servidor indica el nombre o direccin IP de la mquina


donde se ejecuta el servidor, puerto es el nmero de puerto; el argumento
archivoeselnombredelarchivoasertransferido.Conlaopcintseespecifica
queelclientecrearunacantidaddenThreadshilosquedeformaconcurrente
enviarn solicitudes al servidor especificado. Cada thread enviar la solicitud
nCiclos veces. El cliente simplemente desecha los archivos transferidos, pero
deber llevar medidas de tiempo y producir una serie de estadsticas para
evaluarelrendimientodecadaservidor.

Fechadeentrega:____________ .Enviarporcorreoelosarchivosdecdigo
fuenteasantiago.molina@gmail.comeidentifiqueclaramenteelproyectoenel
asuntodelmensaje.

Bibliografa
[1] Mrquez, Francisco. (2004). Unix Programacin avanzada, 3 edicin. Madrid:
RaMa.
[2] Stevens,Richard.RagoA.Stephen.(2005).AdvancedProgrammingintheUNIX
Environment.2
nd
edition.AddisonWesleyProfessional.
[3] Robins Kay A., Robbins Steven. (2003). Unix System Programming:
Communication,ConcurrencyandThreads.PrenticeHall.
[4] Stevens, Richard, Fenner, Bill, Rudoff, Andrew. (2003). Unix Network
ProgrammingVolume1,3
rd
edition:TheSocketsNetworkingAPI.AddisonWesley.
3

You might also like