Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DE SERVICIOS Y
PROCESOS
Desarrollo de aplicaciones multiplataforma
Ilerna
ILERNA, centro autorizado con código 25002775 (Lleida), 28077294 (Madrid) y 41023090 (Sevilla) www.ilerna.es
© Ilerna Online S.L., 2021
© Imágenes: Shutterstock
Reservado todos los derechos. No se permite la reproducción total o parcial de esta obra, ni su incorporación a un
sistema informático, ni su transmisión en cualquier forma o por cualquier medio (electrónico, mecánico, fotoco-
pia, grabación u otros) sin autorización previa y por escrito de los titulares del copyright. La infracción de dichos
derechos puede constituir un delito contra la propiedad intelectual.
Ilerna Online S.L. ha puesto todos los recursos necesarios para reconocer los derechos de terceros en esta obra
y se excusa con antelación por posibles errores u omisiones y queda a disposición de corregirlos en posteriores
ediciones.
2. Programación multiproceso............................................................ 20
2.1. Caracterización de la programación concurrente, paralela y
distribuida.................................................................................... 21
2.2. Identificación de las diferencias entre los paradigmas de
programación paralela y distribuida........................................... 23
2.3. Identificación de los estados de un proceso.............................. 26
2.4. Ejecutables. Procesos. Servicios.................................................. 28
2.5. Caracterización de los hilos y relación con los procesos............ 29
2.6. Programación de aplicaciones multiproceso............................. 30
2.7. Sincronización y comunicación entre procesos.......................... 31
2.8. Gestión de procesos y desarrollo de aplicaciones con fines de
computación paralela.................................................................. 32
2.9. Depuración y documentación de aplicaciones........................... 34
3. Programación multihilo.................................................................. 36
3.1. Elementos relacionados con la programación de hilos.
Librerías y clases.......................................................................... 37
3.2. Gestión de hilos............................................................................ 37
3.3. Programación de aplicaciones multihilo.................................... 40
3.4. Estados de un hilo. Cambios de estado...................................... 41
3.5. Compartición de información entre hilos y gestión de recursos
compartidos por los hilos............................................................ 42
3.6. Programas multihilo, que permitan la sincronización entre
ellos............................................................................................... 43
3.7. Gestión de hilos por parte del sistema operativo.
Planificación y acceso a su prioridad.......................................... 44
3.8. Depuración y documentación de aplicaciones........................... 45
Bibliografía / webgrafía....................................................................... 80
Solucionario ......................................................................................... 81
1 USO DE TÉCNICAS DE PROGRAMACIÓN SEGURA
Programación de servicios y procesos
¡RECUERDA!
Cuando se trabaja con URL páginas web, hay que tener pre-
sente la seguridad y, por ello, comprobar si la URL es fiable
o no. Los datos de las webs pueden ser alterados por un
usuario, tanto su contenido como la configuración.
7
Tema 1: Uso de técnicas de programación segura
Criptografía
youtu.be/0cVrhrhNNJw
8
Programación de servicios y procesos
CONCEPTO
Camino imposible
TEXTO TEXTO
LEGIBLE Algoritmo Algoritmo LEGIBLE
criptográfico TEXTO CRIFRADO criptográfico
9
Tema 1: Uso de técnicas de programación segura
TEXTO TEXTO
LEGIBLE Algoritmo Algoritmo LEGIBLE
criptográfico TEXTO CRIFRADO criptográfico
Participante B Participante A
10
Programación de servicios y procesos
Mensaje firmado
Mensaje
FD
Función de una
H
sola vía
Clave privada
del emisor
H1 K FD
Hash del mensaje Firma digital del mensaje
Mensaje firmado
Mensaje H H2
FD
H1 = H2
FD K H1
Firma digital del
mensaje Clave pública
del emisor
• Certificación
Este certificado es generado por una Autoridad Certifi-
cadora (AC), que también es la encargada de realizar la
autenticación al usuario.
11
Tema 1: Uso de técnicas de programación segura
• Comercio electrónico
Mediante la criptografía es posible realizar operaciones
sensibles por Internet, con la seguridad de que los datos
no serán interceptados por terceros.
CONCEPTO
12
Programación de servicios y procesos
1.5. Programación de
mecanismos de control de acceso
El control de acceso se encarga de comprobar si una perso-
na u otra entidad tiene permisos necesarios para acceder al Control de acceso
recurso que solicita. youtu.be/evxSgiFDrDk
• Contraseña.
• Biometría: entre los que se engloban lectura de retina,
huella dactilar, reconocimiento de voz, entre otros.
• Tarjetas de identificación: como puede ser el DNI elec-
ponte a prueba
trónico.
13
Tema 1: Uso de técnicas de programación segura
14
Programación de servicios y procesos
15
Tema 1: Uso de técnicas de programación segura
SSL y TLS
BUSCA EN LA WEB
http://blogs.mdaemon.com/index.php/ssl-tls-best-
practices/
16
Programación de servicios y procesos
1.8. Programación de
aplicaciones con comunicaciones
seguras
Existen diferentes clases que sirven para cifrar datos en
Java. Entre ellas se encuentran:
Clase Cipher
void init (int opmode, Key key) Inicializa el objeto para cifrar o descifrar con la
clave recibida. El parámetro opmode puede ser
Cipher.ENCRIPT_MODE y Chiper.DECRIPT_MODE
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/javax/
crypto/Cipher.html
static boolean isEqual (byte[] Compara dos resúmenes para comprobar si son
digestA, byte[] digestB) iguales.
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/
security/MessageDigest.html
17
Tema 1: Uso de técnicas de programación segura
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/
security/KeyPair.html
Con la Clase KeyPair se crea un objeto que contiene una clave privada y una pública mediante
el constructor KeyPair (PublicKey publicKey, PrivateKey privateKey). Es posible recoger estas
claves con los siguientes métodos:
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/javax/crypto/
KeyGenerator.html
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/
security/KeyPairGenerator.html
18
Programación de servicios y procesos
1.9. Documentación de
aplicaciones desarrolladas
En la documentación generada de cada aplicación desa-
rrollada es necesario detallar la criptografía usada. En la Documentación de
mayor parte de las aplicaciones se trabaja con bases de aplicaciones
datos, por lo que la información queda almacenada y po- youtu.be/L48g91gW0tI
dría ser vulnerada.
19
2 PROGRAMACIÓN MULTIPROCESO
Programación de servicios y procesos
2.1. Caracterización de la
programación concurrente,
paralela y distribuida
La concurrencia es una propiedad que permite que los
sistemas puedan ejecutar diferentes procesos en un mismo
tiempo.
CONCEPTO
21
Tema 2: Programación multiproceso
EJEMPLO
A partir del siguiente conjunto de instrucciones, hay que indicar las que se pueden
ejecutar concurrentemente:
Instrucción 1 (I1) → a=x+z
Instrucción 2 (I2) → x = b – 10
Instrucción 3 (I3) → y=b+c
• Conjunto de escritura → está compuesto por instrucciones que cuentan con varia-
bles a las que se accede en modo escritura cuando se ejecutan.
E(I1) = {a}
E(I2) = {x}
E(I3) = {y}
Para que dos conjuntos se puedan ejecutar concurrentemente se deben cumplir estas
3 condiciones:
L(Si) ∩ E(Sj) = Ø
E(Si) ∩ L(Sj) = Ø
E(Si) ∩ E(Sj) = Ø
22
Programación de servicios y procesos
Programación paralela
23
Tema 2: Programación multiproceso
Programación distribuida
24
Programación de servicios y procesos
25
Tema 2: Programación multiproceso
• Pérdida de mensajes.
• Está expuesta a diferentes ataques para vulnerar su se-
guridad.
26
Programación de servicios y procesos
En Unix existen más estados para los procesos que los que
se han explicado anteriormente. En este diagrama se pue-
den observar las transiciones entre ellos:
27
Tema 2: Programación multiproceso
• Procesos
Conjunto de instrucciones que ejecutará el micropro-
cesador, es lo que se entiende como un programa en
ejecución. Los procesos son gestionados por el sistema
operativo, que es el encargado de crearlos y destruirlos.
Requieren de unos recursos de memoria que reservan
para su ejecución.
En los sistemas operativos multihilo es posible crear hilos y
procesos. La diferencia reside en que un proceso solamen-
te puede crear hilos para sí mismo, y en que dichos hilos
comparten toda la memoria reservada para el proceso.
Los procesos están caracterizados por su estado de eje-
cución en un momento determinado. Estos procesos son
el valor de los registros de la CPU para dicho programa.
• Servicios
Es un tipo de proceso informático que posee unas ca-
racterísticas especiales, porque se ejecutan en segundo
plano y no son controlados por el usuario. Pueden per-
manecer de manera continuada en ejecución dentro del
sistema y carecen de interfaz gráfica.
La mayor parte de estos servicios están destinados a rea-
lizar tareas de mantenimiento del sistema operativo de
forma periódica.
28
Programación de servicios y procesos
• Contador de programa.
• Juego de registros.
• Espacio de pila.
• Sección de código.
• Sección de datos.
• Los recursos del sistema operativo.
• Ejecución.
• Preparado.
• Bloqueado.
29
Tema 2: Programación multiproceso
2.6. Programación de
aplicaciones multiproceso
A la hora de ejecutar una aplicación, el sistema opera-
tivo se encarga de asignar en la CPU las distintas tareas
que se deben realizar. En muchas ocasiones existen apli-
caciones que necesitan que estas tareas se realicen de
forma simultánea. De esta necesidad sale el concepto de
multiproceso, que consiste en el uso de dos o más proce-
sadores para la ejecución de varios procesos.
¡RECUERDA!
30
Programación de servicios y procesos
2.7. Sincronización y
comunicación entre procesos
Tal y como se ha explicado en el apartado anterior, es
posible trabajar con procesos que se ejecutan de manera
concurrente. Esto ofrece una mayor velocidad y mejora la
comunicación con la interfaz de usuario. Es muy impor-
tante tener en cuenta que se trata de operaciones con datos
que acceden, en muchas ocasiones, a los mismos espacios
de memoria. Es necesario que exista una comunicación
entre procesos para no bloquear el acceso de otros.
31
Tema 2: Programación multiproceso
Los hilos agilizan las tareas que tienen los procesos, por lo
que es importante considerar la posibilidad de que un hilo
permanezca bloqueado de forma continuada. Como los
hilos no son independientes, sino que forman parte todos
del mismo proceso, el proceso podrá llegar a bloquearse
por completo, así como todos los hilos que componen ese
proceso.
32
Programación de servicios y procesos
CHILD
i=0 CHILD
i=1 CHILD
i=1
fork ( )
i=2 fork ( ) i=2
i=2
hi hi
hi
fork ( )
fork ( )
PARENT
CHILD CHILD
i=0 i=2
i=1
i=1 fork ( ) hi
i=2
i=2
hi
hi fork ( )
CHILD
fork ( ) i=2
CHILD
hi
i=2
hi
PARENT CHILD
33
Tema 2: Programación multiproceso
prueba@PRINCIPAL:~$ PS -f
UID PID PPID C STIME TTY TIME CMD
orueba 3646 3640 0 12:58 pts/11 00:00:00 bash
prueba 4178 3646 0 13:12 pts/11 00:00:00 ps -f
Información:
• UID: usuario del proceso.
• PID: identificador del proceso.
• PPID: PID del padre del proceso.
• C: uso del procesador.
• STIME: hora de inicio del proceso.
• TTY: terminal asociado.
• TIME: tiempo de ejecución del proceso.
• CMD: nombre del proceso.
34
Programación de servicios y procesos
ponte a prueba
a) ps -f
b) ls -l
c) process -a
d) Ninguna respuesta es correcta
35
3 PROGRAMACIÓN MULTIHILO
Programación de servicios y procesos
static void sleep (long milis) El hilo se detiene durante el número de milisegun-
dos especificado.
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/
lang/Thread.html ponte a prueba
a) void init()
b) void start()
c) void run()
d) void initialize()
3.2. Gestión de hilos
Un proceso es cualquier programa en ejecución y es to-
talmente independiente de otros procesos. Un proceso
puede tener varios hilos de ejecución que realizarán subta-
reas del proceso principal que los ha creado.
37
Tema 3: Programación multihilo
Registros Pila
Registros Registros Registros
P1
Hilo 1 Hilo 2
Datos
compartidos
38
Programación de servicios y procesos
39
Tema 3: Programación multihilo
3.3. Programación de
aplicaciones multihilo
A la hora de desarrollar un software es necesario tener
en cuenta qué tiempo de ejecución debe de tener como
máximo una aplicación. Además, es importante medir el
consumo de recursos que esta ha utilizado. Cuando existe
solo un proceso, existe la posibilidad de que el consumo
de memoria RAM y recursos del procesador por parte del
proceso en ejecución, sobrecargue el sistema.
Proceso Hilo
MONOPROCESADORES
1 proceso 1 proceso
1 hilo/proceso Múltiples hilos/proceso
Ej: MS-DOS Ej: Java
MULTIPROCESADORES
40
Programación de servicios y procesos
41
Tema 3: Programación multihilo
42
Programación de servicios y procesos
fichero.println(“Hola”);
43
Tema 3: Programación multihilo
fichero.println(“Adiós”);
HoAldiaós
synchronized (fichero)
{
fichero.println(“Hola”);
}
Y el otro hilo:
synchronized (fichero)
{
fichero.println(“Adiós”);
}
44
Programación de servicios y procesos
¡RECUERDA!
Toda la documentación debe detallar cuál es la funcio- ¿Qué función tienen los puntos de
nalidad de dicha aplicación. En ella deben de aparecer de interrupción?
forma esquemática todos los puntos relevantes, que son a) Muestran valores y mensajes
necesarios para comprender y conocer el correcto funcio- para comprobar que los datos son
namiento de la misma. correctos.
b) Muestran valores y mensajes para
comprobar que la ejecución es
correcta.
c) Determinan si el depurador del
software debe parar o pausar su
ejecución en algún punto.
d) Todas las respuestas son correctas.
45
4 PROGRAMACIÓN DE COMUNICACIONES EN RED
Programación de servicios y procesos
47
Tema 4: Programación de comunicaciones en red
48
Programación de servicios y procesos
Se debe tener en cuenta que, en este modelo, no se intercambian los roles entre clientes y servidores.
49
Tema 4: Programación de comunicaciones en red
Clase InetAddress
BUSCA EN LA WEB
Clase URL
protocolo:/usuario:contraseña@máquina:puerto/
ruta_fichero
50
Programación de servicios y procesos
URL (String protocol, String host, int port, Crea un objeto URL con los datos recibidos.
String file)
URL (String protocol, String host, String Crea un objeto URL con los datos recibidos.
file)
BUSCA EN LA WEB
51
Tema 4: Programación de comunicaciones en red
Clase URLConnection
BUSCA EN LA WEB
4.4. Sockets
Un socket es un mecanismo que permite la comunicación
entre aplicaciones a través de la red, es decir, abstrae
al usuario del paso de la información entre las distintas
capas. Su función principal es crear un canal de comunica-
ción entre las aplicaciones y simplificar el intercambio de
mensajes.
52
Programación de servicios y procesos
Máquina A Máquina B
Proceso de
Aplicación que envía datos aplicación Aplicación que recibe datos
P P
U U
SERVIDOR E E CLIENTE
R R
T T
O O
PUERTO PUERTO
CONEXIÓN
53
Tema 4: Programación de comunicaciones en red
54
Programación de servicios y procesos
TCP UDP
Uso por otros HTTP, HTTPS, SMTP, Telnet DNS, DHCP, TFTP, SNMP, RIP,
protocolos VoIP
55
Tema 4: Programación de comunicaciones en red
Fluidez Los datos se leen como una Los paquetes son enviados
secuencia de bits y no se individualmente; se verifica
transmiten indicadores para su integridad solo si llegan.
los límites de segmentos de los Los paquetes tienen límites
mensajes. definidos, que comprueban que
el mensaje está completo.
56
Programación de servicios y procesos
ponte a prueba
a) Verdadero
b) Falso
Cliente TCP
bind ( )
socket ( )
listen ( )
connect ( )
TCP
3-
way
ha nds accept ( )
hak
write ( ) e
Dat
a re Bloqueado hasta que se produzca
que
st la conexión desde el cliente
read ( )
Dat tion
read ( ) a re ifica
ply EOF not
process request
close ( )
write ( )
close ( )
57
Tema 4: Programación de comunicaciones en red
Clase ServerSocket
BUSCA EN LA WEB
Clase Socket
Socket (InetAddress address, int port) Crea un socket conectado al puerto indica-
do en la dirección IP especificada.
Socket (String host, int port, InetAd- Crea un socket y lo conecta al host remoto
dress localAddr, int localPort) especificado en el puerto especificado.
58
Programación de servicios y procesos
BUSCA EN LA WEB
socket ( )
bind ( )
Cliente UDP
socket ( ) recvfrom ( )
Haz algo
recvfrom ( ) Date reply
sendto ( )
close ( )
Clase DatagramSocket
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/net/
DatagramSocket.html
59
Tema 4: Programación de comunicaciones en red
Clase DatagramPacket
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/net/
DatagramPacket.html
ponte a prueba
60
Programación de servicios y procesos
4.7. Enlazamiento y
establecimiento de conexiones
Clase ServerSocket
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/net/
ServerSocket.html
61
Tema 4: Programación de comunicaciones en red
Clase Socket
62
Programación de servicios y procesos
BUSCA EN LA WEB
Clase DatagramSocket
BUSCA EN LA WEB
63
Tema 4: Programación de comunicaciones en red
Clase DatagramPacket
void setPort (int port) Establece el puerto del host remoto al que se envía el
datagrama.
BUSCA EN LA WEB
https://docs.oracle.com/javase/7/docs/api/java/net/
DatagramPacket.html
64
Programación de servicios y procesos
4.8. Programación de
aplicaciones cliente y servidor
Socket TCP
SERVIDOR CLIENTE
OutputStream InputStream
socket.close ( )
servidor.close ( )
65
Tema 4: Programación de comunicaciones en red
Socket UDP
SERVIDOR
CLIENTE
Ejecutándose en hostid
Socket UDP.
Conexión de
dispositivos en red
youtu.be/IEH3d2SrV74
ponte a prueba
¿Qué función usarías para esperar a que los
clientes se conecten cuando se crea un socket en el
servidor?
a) read()
b) accept()
c) write()
d) input()
66
Programación de servicios y procesos
SERVIDOR CLIENTE
ServerSocket (port)
Thread OutputStream
OutputStream InputStream
InputStream
close ( )
close ( )
create socket,
create socket,
port = x
clientSocket =
incoming request:
DatagramSocket ( )
serverSocket =
DatagramSocket ( )
PARA + INFO
a) Clientes FTP
Interfaz Red Protocolos de subred b) TELNET
c) SMTP
d) Todas las respuestas son correctas
A lo largo del capítulo se estudiarán las distintas clases que
ofrece el API de Java para realizar este tipo de conexiones, y
así poder lograr una comunicación con los distintos servicios.
69
Tema 5: Generación de servicios de red
70
Programación de servicios y procesos
Telnet
Constructores:
Métodos:
BUSCA EN LA WEB
71
Tema 5: Generación de servicios de red
FTP
Constructor:
Métodos:
72
Programación de servicios y procesos
BUSCA EN LA WEB
BUSCA EN LA WEB
73
Tema 5: Generación de servicios de red
HTTP
Constructor:
Métodos:
BUSCA EN LA WEB
SMTP
Constructor:
Métodos:
BUSCA EN LA WEB
74
Programación de servicios y procesos
¿SABÍAS QUE...?
75
Tema 5: Generación de servicios de red
5.5. Implementación de
comunicaciones simultáneas
Existen diferentes tecnologías para llevar a cabo la comuni-
cación entre cliente y servidor. A partir del mecanismo más
básico que son los sockets existen algunas técnicas que
permiten implementar dicha comunicación simultánea a
un más alto nivel.
RMI
76
Programación de servicios y procesos
RPC
Servicios web
77
Tema 5: Generación de servicios de red
5.6. Verificación de la
disponibilidad del servicio
A la hora de prestar un servicio es importante comprobar si
este se encuentra disponible para el acceso de los clientes.
En este caso, este procedimiento es tarea del administrador
de red. Estos suelen estar sometidos a una disponibilidad
de prácticamente un 100% durante mucho tiempo.
78
Programación de servicios y procesos
79
BIBLIOGRAFÍA / WEBGRAFÍA
” Sánchez campos, Alberto; Montes Sánchez, Jesús. (2013). Programación de servicios y
procesos. CFGS. España: Ra-ma Editorial.
” Ramos Martín, Mª Jesús. (2013). Programación de Servicios y Procesos. España: Garceta.
80
solucionario
1.1. Prácticas de programación segura 3.5. Compartición de información entre hilos
y gestión de recursos compartidos por los
Para una programación segura:
hilos
d) Todas las respuestas son correctas.
Cuando varios hilos comparten el mismo
espacio de memoria, ¿qué problema de
1.5. Programación de mecanismos de control sincronización podría ocurrir?
de acceso
d) Todas las respuestas son correctas.
Para comprobar si una persona u otra entidad
tiene los permisos necesarios para acceder al
3.8. Depuración y documentación de
recurso que solicita se debe realizar:
aplicaciones
a) La identificación, autenticación y
autorización. ¿Qué función tienen los puntos de interrupción?
d) Todas las respuestas son correctas.
1.9. Documentación de aplicaciones
desarrolladas 4.1. Comunicación entre aplicaciones
En una base de datos, ¿qué información de En el modelo TCP/IP, ¿qué capa usan los
usuario se considera sensible? protocolos HTTP, FTP y DNS?
d) Todas las respuestas son correctas. c) Capa de aplicación.
81
solucionario
5.1. Programación y verificación de
aplicaciones cliente de protocolos estándar
¿A qué servicios se podrían conectar las
aplicaciones creadas en Java?
d) Todas las respuestas son correctas.
82