Está en la página 1de 54

Unidad 1 - Introducción al computador de placa reducida

(Single Board Computer – SBC)

Semana 2 (S1-S2) – Fundamentos de los procesos de planificación de un sistema


operativo

Curso: Sistemas Embebidos


Profesor: Mag. Ing. Rubén Acosta UPC - Universidad Peruana de Ciencias Aplicadas
Temario

1.- Introducción a los algoritmos de planificación.


2.- Introducción a la programación de bash y scripts
1.- Introducción a los algoritmos de planificación
Proceso

o Un proceso puede definirse como un programa en ejecución.


Los sistemas operativos multitarea, como Linux y Windows,
permiten la ejecución simultánea de múltiples procesos.

o Durante el proceso de arranque del computador, el sistema


operativo, una vez cargado, pone en ejecución un conjunto de
procesos que realizan funciones vitales dentro del sistema
(procesos del sistema).
1.- Introducción a los algoritmos de planificación
Proceso

o En un sistema operativo, la CPU se va repartiendo


entre los diferentes procesos, de modo que todos
ellos se vayan ejecutando en “tiempo compartido”.
1.- Introducción a los algoritmos de planificación

Estados de un proceso

o En ejecución: Tiene la CPU


o Listo: Detenido otro tiene la CPU
o Bloqueado: No se puede ejecutar, espera algún evento

o Estado Listo: Disponible para ser ejecutado (RAM)


o Estado bloqueado: Espera un evento (RAM)
o Listo suspendido: Espera un evento (Memoria secundaria)
o Bloqueado suspendido: Espera evento (Memoria secundaria)
1.- Introducción a los algoritmos de planificación

Descripción de procesos
o Para administrar los procesos se usa una tabla de procesos. Cada entrada de la tabla es un PCB (Process
Control Block)

PCB (Process Control Block)


1.- Introducción a los algoritmos de planificación

¿ Cómo se crea un proceso?

o Asignar un ID único al proceso.


o Asignar espacio para el proceso
o Iniciar el PCB
o Incluir al proceso en los algoritmos de planificación
1.- Introducción a los algoritmos de planificación

Cambio de contexto de procesos

Process state

Process Control Block

Process state
1.- Introducción a los algoritmos de planificación
Proceso en Sistema Operativo GNU/LINUX

Un proceso es una instancia de un programa en ejecución. Todos los procesos conforman una estructura en forma
De árbol, de modo que tenemos procesos padre e hijo.

El proceso está definido por el programa, los semáforos, el espacio de memoria que ocupa y los procesos hijos que mande a
llamar. Los hijos de un proceso comienzan siendo copias exactas del proceso padre, para así llamar al programa o tarea
correspondiente. De esta manera el proceso principal (proceso padre), comparte con sus hijos los recursos del sistema que
este consumiendo, sus atributos de seguridad (tales como su propietario y permisos de archivos así como roles y
semaforización.

o A grandes rasgos, todos ellos parten de init o systemd, que es el primer proceso que se ejecuta en el arranque del
Sistema y del que nacen todos los demás
o Todos los procesos, como verán en los ejemplos se identifican por un PID o Process ID, que suele ser un número que
Va cambiando cada vez que un proceso se finaliza y vuelve a iniciarse.

o El único proceso que tiene un PID fijo de 1 es el init.


o init es el primer proceso que se ejecuta durante el inicio del sistema en modo usuario (userland), luego de la carga del
o kernel.
o El proceso init es un demonio que continua su ejecución hasta que el sistema se apaga.
1.- Introducción a los algoritmos de planificación
Proceso en Sistema Operativo GNU/LINUX

o El código de la BIOS realiza algunas tareas, entre las que se incluyen la comprobación del hardware, Bios
su configuración y la búsqueda del sector de arranque (boot).

o Cuando la computadora arranca el sistema operativo, se ejecuta el fichero ejecutable kernel cuya
misión es cargar el núcleo del sistema operativo en memoria.

o Cuando el kernel toma el control, realiza las tareas como iniciar dispositivos montar la partición de la
raíz, y por último cargar y ejecutar el programa inicial de sus sistema, que por defecto es /sbin/init.
o /sbin/init leerá un fichero llamado /etc/inittab para determinar qué otros programas deben de
ejecutarse,
Gestor Gráfico
o El núcleo es el primer proceso del sistema, y es padre de si mismo, puesto que su PID=PPID=0. La
XDM/GDM
misión del núcleo es controlar los recursos de la computadora, por lo que delega el nacimiento de Systemd
nuevos procesos en uno de sus hijos: init.

Apertura de puerto nano


nano
de conexión TTY

Bash
Interprete de comandos
1.- Introducción a los algoritmos de planificación
Proceso en Sistema Operativo GNU/LINUX
Comando ps
El comando ps devuelve el estado de los procesos. Su framework es el directorio /proc; lo que significa que lee directamente
la información de archivos que se encuentran en este directorio.

Observe que mientras se procesa ps, las cosas pueden cambiar. Ya que el comando ps le ofrece sólo una foto de lo
que está ocurriendo, es la situación un segundo después de escribir el comando. La información puede no estar en
concordancia con el momento en que la ve.

PID Process ID, número único o de identificación del proceso.


TTY Terminal asociada al proceso, si no hay terminal aparece entonces un '?'
TIME Tiempo de uso de cpu acumulado o hasta este momento por el proceso
CMD El nombre del programa o comando que inició el proceso

(ps –l) se mostrarán distintas informaciones acerca de los procesos actualmente en marcha, incluyendo el estado de cada proceso
O - El proceso está ejecutándose en un procesador.
S - Durmiendo: el proceso espera a que ocurra un acontecimiento o suceso.
R - Ejecutable: el proceso está en la cola de ejecución.
I - Ocioso: el proceso está siendo creado.
Z - Autómata: el proceso ha terminado y no hay proceso maestro esperando.
T - Rastreado: proceso detenido por una señal porque el proceso maestro lo está rastreando.
X - SXBRK: el proceso está esperando más memoria primaria.

(ps –aux) se mostrarán todos los procesos del sistema


1.- Introducción a los algoritmos de planificación
Proceso en Sistema Operativo GNU/LINUX
Comando pstree
Nos permitirá ver el árbol de procesos activos, en nuestros sistemas GNU Linux.

Procesos agrupados por grupo con pstree -g


1.- Introducción a los algoritmos de planificación
Proceso en Sistema Operativo GNU/LINUX
Comando top
El comando top nos da información acerca del uso de la cpu, de la memoria, de los procesos en ejecución, etc en tiempo real.
1.- Introducción a los algoritmos de planificación
Planificador (dispatcher)
En un momento dado puede haber varios procesos listos. La parte del sistema operativo que decide es el planificador siguiendo un
algoritmo de planificación.

El planificador asigna el recurso CPU al proceso respectivo, realiza cambio de contexto, cambio a modo usuario, reinicia un proceso.
Las metas que busca el planificador es: Equidad, eficacia, tiempo de respuesta tiempo de espera, tiempo de retorno, rendimiento o
productividad.
PLANIFICADOR

Pn P(n-1) P1 EXPULSIÓN

COLA DE
COLA DE PROCESOS PROCESO
TRABAJOS PROCESOS CPU
ESPERANDO EJECUCIÓN PREPARADOS TERMINADO
RECURSO

COLA DE
PROCESOS
BLOQUEADOS
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación (First Come First Served – FCFS)
Ejemplo1: Se tiene tres procesos P1, P2 y P3 que llegan al mismo tiempo y su orden de llegada se muestra en la tabla 1. Realizar el diagrama de
Gantt, calcular los tiempos de espera (Waiting Time –WT) y de retorno (Total Complete Time-TCT) de cada proceso,
y también los tiempos promedios de Espera (Average Waiting Time – AWT) y de retorno (Average Complete Time - ACT).

Tabla 1.

Procesos Waiting Time –WT


P1 (0-0)=0
P2 (9-0)=9
P3 (13-0)=13

Average Waiting Time (AWT) =(0+9+13) / 3 = 7.33 unidades de tiempo


Solución 1:
2
Diagrama de Gantt Complete time (Tiempo
Procesos completo)
P3
Procesos

P1 (9-0)=9
P2 4
P2 (13-0)=13
9 P3 (15-0)=15
P1
0 9 13 15 Tiempo
Average Complete Time (ACT) =(9+13+15) / 3 = 12.33 unidades de tiempo
P1
P2 ❖ Ráfagas de CPU (BT: Burst Time)
P3
❖ Tiempo de llegada (AT: Arrive Time)
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación (First Come First Served – FCFS)
Ejemplo 2: Se tiene cinco procesos P0, P1, P2, P3 y P4 que su tiempo de llegada se muestra en la tabla 2. Realizar el diagrama de Gantt y
calcular el tiempo de espera y de retorno (empleado) de cada proceso y los tiempos promedio de espera y empleado.
Tabla 2

P0=350 P1=125 P2=475 P3=250 P4=75 Procesos Tiempo de espera


Solución 2: 0 350 475 950 1200 1275 P0 (0-0)=0
P1 (350-1)=349
P2 (475-2)=473
Espera=1196 P3 (950-3)=947
P4

P4 (1200-4)=1196
Espera=947
Tiempo promedio espera=(0+349+473+947+1196) / 5 = 593 unidades de tiempo
P3
Procesos

Espera=473 Procesos Tiempo de retorno/ empleado


P2

P0 (350-0)=350
Espera=349 P1 (475-1)=474
P1

P2 (950-2)=948
Espera=0 P3 (1200-3)=1197
P0

P4 (1275-4)=1271

0 1 2 3 4
350 475 950 1200 1275
Tiempo promedio empleado=(350+474+948+1197+1271) / 5 =848 unidades de tiempo

P0 P1 P2 P3 P4
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación (First Come First Served – FCFS)
Ejercicio1 :
El sistema operativo mediante el planificador inicializa los procesos (A, B, C y D) con el algoritmo FCFS. Dichos procesos se encuentran alojados en la cola de
procesos preparados y pasan al estado de ejecución con un tiempo de ocupación de la CPU de acuerdo a la tabla 1.

Tabla 1.
Procesos T.cpu T. Llegada

A 8 2

B 2 3

C 2 4

D 4 5

Para describir su ejecución se solicita lo siguiente:


a) Realizar un diagrama de tiempo.
b) Calcular los tiempos de espera (WT) y de retorno (TCT) de cada proceso y los tiempos promedios AWT y ACT de dichos procesos.
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación (First Come First Served – FCFS)
Ejercicio 2: Dada la siguiente tabla 4 de procesos, se muestra los procesos P1, P2, P3, P4 y P5 con los mismos tiempos de llegada.
Aplicar el algoritmo FCFS (FIFO). Asuma que los procesos son no apropiativo (Non-preamtive).

o Diseñar el diagrama de GANTT.


o El algortimo debe calcular el Waiting Time (WT) de cada proceso, el Average Waiting (AWT) y el Total Complete Time (TCT)

Tabla 2.
Procesos BT (Burst time) T.Llegada
Tiempo de CPU (Arrive time-AT)
P1 5 0
P2 10 3
P3 8 6
P4 10 8
P5 3 10
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Primero el trabajo más corto (Shortest Job First)
Este algoritmo tiene el criterio de priorización de atender primero al proceso cuyo tiempo de ejecución por CPU, tarde menos.

o Si en el caso hubiera dos o varios procesos cuyo tiempo de ejecución por CPU es el mismo, se aplicaría el algoritmo FIFO, es decir,
se daría prioridad al proceso que llegó primero.

Este algoritmo tiene dos esquemas de trabajo; Pre-Emptive y Non-Preemptive

o Pre-Emptive (Apropiativo):
❖ Puede ser interrumpida la ejecución del CPU
❖ Escoge el trabajo más corto
❖ Mucha más prioridad a los trabajos más cortos

o Non-Preemptive (No Apropiativo)


❖ No puede ser interrumpida la ejecución del CPU (significa que cuando se empieza a ejecutar un proceso, este no será interrumpido
hasta que
finalice).
❖ Escoge el trabajo más corto.

Características:
❑ Asociar a cada proceso el tiempo de ráfaga de CPU.
❑ El algoritmo escoge el proceso con menor ráfaga de CPU.
❑ En caso de empate se aplica algoritmo FIFO
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Primero el trabajo más corto (Shortest Job First)
Ejemplo 1: Se inicia cuatro procesos (Word, Excel, Paint y Cal) mostrados en la tabla 1. El tiempo requerido para ejecutarse (ráfaga de
CPU) para cada proceso son: 8, 6, 4 y 2. Además, estos procesos llegan en los tiempos 0, 2, 4 y 6. El esquema de trabajo del
Algoritmo es Non-Preemptive

Solución 1
Para empezar a evaluar la ejecución de cada proceso en el tiempo, es necesario saber, cuáles son los procesos que están en espera
de acuerdo a la tabla 3, observándose que en el tiempo 0 no hay ninguno, entonces el primer proceso en ejecutarse es el proceso
Word.

Tabla 3

Complete Time –CT

Waiting Time –WT


1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Primero el trabajo más corto (Shortest Job First)

Ejemplo 2: Se inicia cuatro procesos (Word, Excel, Paint y Cal) mostrados en la tabla 4. El tiempo requerido para ejecutarse (ráfaga de
CPU) para cada proceso son: 8, 4, 4 y 2. Además, estos procesos llegan en los tiempos 0, 4, 2 y 6. Graficar los procesos y calcular
Tiempo de retorno y tiempo de espera de cada proceso y el tiempo promedio de espera. El esquema de trabajo del
algoritmo es Non-Preemptive

Complete Time –CT


Tabla 4

(Waiting Time –WT)

Average Complete Time (ACT)


1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Primero el trabajo más corto (Shortest Job First)

Ejercicio 1: Se inicia cinco procesos (P1, P2, P3, P4 y P5) mostrados en la tabla 5. Evaluar cual de los esquemas de trabajo del algoritmo
SJF es más eficiente en relación al tiempo de espera promedio. Para ello se debe de calcular los tiempos de espera promedio de ambos
Esquemas de trabajo.

Tabla 5

Ráfagas de CPU
Procesos
(Tiempos Tiempos de
ejecución) llegada
P1 10 0
P2 2 2
P3 6 4
P4 4 5
P5 6 7
1.- Introducción a los algoritmos de planificación
Algoritmo de Planificación por prioridad
En este tipo de planificación a cada proceso se le asigna una prioridad siguiendo un criterio determinado, y de acuerdo con
esa prioridad será el orden en que se atienda cada proceso.

Características:

❑ Asociar a cada proceso una prioridad (número entero)


❑ Asigna la CPU al proceso más prioritario
❑ Se asume que la mayor prioridad la define el número menor.
❑ En caso de empate en prioridades, aplicar algoritmo FIFO
❑ Hay esquemas de trabajo no apropiativo y apropiativo.

❑ Ráfagas de CPU: son las unidades de tiempo que requiere el proceso para ejecutarse completamente.
❑ Tiempo de llegada: es el tiempo cuando el proceso va entrando al sistema.
1.- Introducción a los algoritmos de planificación
Algoritmo de Planificación por prioridad

Ejercicio 1: Se inicia cuatro procesos (A, B, C y D) mostrados en la tabla 6 y los parámetros respectivos para su funcionamiento. El esquema de
trabajo del algoritmo es no apropiativo. Calcular el tiempo de sistema (tiempo de retorno) de cada proceso, el tiempo de espera de cada proceso y
el tiempo promedio de espera.

Tabla 6
Procesos T.CPU T.Llegada Prioridad

A 4 1 3

B 10 3 3

C 9 5 1

D 6 9 2
1.- Introducción a los algoritmos de planificación
Algoritmo de Planificación por prioridad

Ejercicio 2: Se inician cuatro procesos de acuerdo a la tabla 7, el tiempo de llegada de cada proceso (figura 1) está en progresión aritmética,
donde la razón es 3 y el primer término es 0

Tabla7 Figura 1
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Turno circular o Round Robin

Este algoritmo de planificación, conocido por Round robin, está diseñado especialmente para sistemas de tiempo compartido.
Se define un intervalo de tiempo denominado "Quantum", cuya duración varía según el sistema.

Características:
❑ Todos los procesos llegan en tiempo cero.
❑ La cola de procesos tiene una estructura de cola circular.
❑ La expulsión se produce por tiempo.
❑ El Quantum de tiempo o cantidad máxima de tiempo de CPU que se permite a un proceso consumir ininterrumpidamente.
❑ El planificador recorre la cola de procesos asignando un Quantum (q) de tiempo a cada proceso.
❑ Cuando un proceso recibe la CPU puede ocurrir 2 cosas:

❑ Que el proceso tenga una ráfaga de CPU menor que el Quantum: En este caso, el proceso termina antes del Quantum y planifica un
Nuevo proceso.
❑ Que el proceso tenga una ráfaga de CPU mayor que el Quantum: En este caso el Quantum para este proceso se agota, a continuación
Es expulsado de la CPU dando paso a otro proceso y el proceso expulsado se colocará al final de la cola de procesos listos.
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Turno circular o Round Robin
Ejemplo 1: Se inicia cinco procesos (Nexus, CodeBlocks , Calculadora, Dev C++ y Reason) de acuerdo a la tabla 1, el Quantum q =5, ó 5
unidades de tiempo. El tiempo de llegada de todos los procesos por defecto es cero. La ejecución de cada proceso es de acuerdo al orden
de llegada y cada una se ejecuta en una cantidad determinada de ráfagas de CPU.

Tiempo de
llegada
19+10 = 29
5+4 = 9
24+8 = 32
14 +5 = 19
27+12 = 39
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Turno circular o Round Robin

Ejercicio 1: Se inicia cuatro procesos (P1, P2 , P3 y P4) de acuerdo a la tabla 2, el Quantum q =20, su diagrama de Gantt se muestra en la
Figura1. Calcular los tiempos de espera y respuestas de los procesos.

Tabla 2 Figura 1
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Turno circular o Round Robin
Ejercicio 1:
El planificador del sistema operativo Raspberry Pi OS basado en Debian deberá calcular los tiempos de 4 procesos con los algoritmos
FCFS y Round Robin (q=2), de acuerdo a la tabla 4.
Procesos T. cpu T. Llegada

A 4 0

B 5 0

C 6 0

D 4 0

Para describir su ejecución se solicita lo siguiente:


a) Diagrama de tiempo de los 4 procesos empleando algoritmo FCFS
b) Diagrama de tiempo de los 4 procesos empleando algoritmo Round Robin (q=2)
c) Calculo de los tiempos de espera y de retorno de cada proceso usando FCFS.
d) Calculo de los tiempos de espera y de retorno de cada proceso usando Round Robin
e) ¿Cuántos cambios de contexto se realizó en Round Robin?
f) ¿Cuál será el algoritmo que empleará menos tiempo en promedio para ejecutar los 4 procesos?
1.- Introducción a los algoritmos de planificación
Algoritmo de planificación Turno circular o Round Robin
Ejercicio2:
El procesador del SoC Broadcom de cuatro núcleos basados en ARM es administrado por el planificador del sistema operativo
Raspberry Pi OS basado en Debian, usando el algoritmo FCFS en modo no apropiativo para ejecutar tres procesos (P1, P2 y P3)
alojados en la cola de procesos preparados y que pasan al estado de ejecución por un tiempo de ocupación de CPU de acuerdo a la
tabla 3. Para describir su ejecución se solicita lo siguiente:

a) Realizar el diagrama de tiempos de ejecución de los procesos.


b) Codificar el script en shell de Linux que permita calcular los tiempos de espera (WT) y de retorno de cada proceso y los tiempos
promedios AWT y ACT. Considerar que los tiempos de CPU puedan variar y los tiempos de llegada también.

Procesos T. cpu T. Llegada

P1 10 0

P2 4 5

P3 1 8
2.- Introducción a la programación de Bash y Scripts

Shell Interfaz de línea de comandos (CLI)


o Es el entorno que hace de intermediario entre el usuario y los recursos
del ordenador, como si fuera un entorno de programación en tiempo real
para ejecutar tareas.

o La Shell aparece cuando ingresamos al sistema operativo en modo


consola como usuario o bien cuando en el entorno gráfico abrimos un
CLI.

o pi@raspberrypi:~$
o pi es el usuario
o raspberrypi es el host
o :~ directorio actual
o $ es el cursor
2.- Introducción a la programación de Bash y Scripts
Bash (Bourne Again Shell)
o Es un intérprete de órdenes o comandos que generalmente se ejecuta en una
ventana de texto donde el usuario escribe órdenes en modo texto. o pi@raspberrypi:~$ nano bienvenida.sh

Script
o Es un código de programación, que contiene comandos u ordenes que se van
ejecutando de manera secuencial y comúnmente se utilizan para controlar el
comportamiento de un programa en especifico o para interactuar con el
sistema operativo.

¿Cómo hacer un Bash en Linux?


Es crear un script en Linux de forma sencilla.

o Crear un fichero de texto con el editor nano


o Guardar el fichero con un nombre y con extensión, .sh
o Escribir en la primera línea, #!/bin/bash

¿Qué es #!/ bin/bash?


o Esta línea indica donde se encuentra el intérprete de comandos en nuestro
sistema operativo.
o Al utilizar esta línea, podremos ejecutar el script como un programa normal,
ya que el sistema operativo sabrá que es un script en Bash y que tiene que
hacer con el.
o <Ctrl> + O, para grabar
o /bin archivos binarios ejecutables; contiene todos los comandos básicos del
sistema operativo, accesibles a todos los usuarios o <enter>
o <Ctrl + x> para salir
o pi@raspberrypi:~$ bash bienvenida.sh
2.- Introducción a la programación de Bash y Scripts
Códigos de salida bash en Linux

o Cada vez que ejecutamos un comando o script, el sistema nos


devuelve un código de retorno. Si no lo solicitas explícitamente,
este código no es visible.
o Los códigos de salida bash son numéricos, pero limitados entre 0
y 255 porque se utiliza un entero de ocho bits.
o Para visualizar las salidas debes usar la siguiente sintaxis.

o comando/script ; echo $?
2.- Introducción a la programación de bash y scripts
Reglas para escribir un script en Linux
o pi@raspberrypi:~$ nano ejemplo1.sh
o # : Sirve para iniciar comentario
o $ : Consulta valor de la variable.
o ; : Une comandos escritos en una línea
o = : Asigna valor a variables.
o ${ } : Contiene el índice del elemento de la variable (arreglos)
o ‘‘ : Indica caracteres literales. La variable dentro de
ella no es procesada como variable.
o “ “ : Agrupa cadena de caracteres. La variable dentro
de ella si es ejecutada

NOTA1: No debe de haber espacios en blanco entre la


variable=valor

o pi@raspberrypi:~$ bash ejemplo1.sh


o 500$x
o 500100
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
Reglas para escribir un script en Linux o pi@raspberrypi:~$ nano ejemplo2.sh

o Comando read: Sirve para almacenar un dato


ingresado por el teclado alfanumérico

o pi@raspberrypi:~$ bash ejemplo2.sh


o Introduce un caracter por teclado
o 2
o El caracter es: 2
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
Reglas para escribir un script en Linux o pi@raspberrypi:~$ nano ejemplo3.sh

o Comando let: Sirve para trabajar operaciones


aritméticas (+, -, *, /, %) con números enteros

o pi@raspberrypi:~$ bash ejemplo3.sh


o 4
o 8
o 12
o 0
o Otra forma de agrupar
o La resta es: 7
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo4.sh
Reglas para escribir un script en Linux

o Arreglo: Es un conjunto de elementos cuyo acceso a


cada uno de ellos se realiza por índices. El primer
elemento tiene índice 0.
o No es necesario colocar el tamaño del arreglo en un
script de Linux.
o Permite ingresar valores.

o pi@raspberrypi:~$ bash ejemplo4.sh


o 1
o 0.5
o hola
o -34
o 1
o 23.46
o Hola
o -34
o 4
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo5.sh
Reglas para escribir un script en Linux

o Función: Es un grupo de código que cumple una


determinada tarea. Su uso es a través de llamadas.
o Primero se escribe la función y luego se invoca.
o Las funciones bash pueden aceptar cualquier número
de parámetros
o Las funciones bash siempre devuelven un único valor

o ¿Qué es eso de expr ?. Se utiliza para guardar el


resultado de una expresión en una variable.

o Sintaxis
o function “nombre” () { …instrucciones }

o pi@raspberrypi:~$ bash ejemplo5.sh


o hola
o alumnos
o Ingrese valor1: 22
o Ingrese valor2: 22
o El resultado es: 44
o 44
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
Operadores lógicos

Operador Función lógica Descripción Ejemplos


-a And lógico Se usa para condiciones compuestas [ $a –lt 20 –a $b –gt 100 ]
(si se cumple las 2 condiciones a la vez devuelve
verdadero)
-o Or lógico Se usa para condiciones compuestas [ $a –lt 20 –o $b –gt 100 ]
(si una de las 2 condiciones se cumple devuelve
verdadero)

! Negación Negación if [ ! -d "Directorio" ]; then


echo "No existe Directorio"
fi
&& And lógico Se usa para condiciones compuestas [[ condition1 && condition2 ]]

|| Or lógico Se usa para condiciones compuestas while [ $opcion -ne 4] || [$opcion -ne 0 ]
2.- Introducción a la programación de bash y scripts

Operadores aritméticos

Operador Función aritmética Descripción Ejemplos


+ suma suma variable=`expr 22 + 2`
echo $variable
- resta resta let resta=$varX-$varY
echo $resta
* producto producto let multiplicacion=$varX*$varY
echo $multiplicacion
/ División entera División entera variable=`expr 10 / 2`
% Resto de división Resto de división entera let resto=$varY%$varX
entera echo $resto

** Potencia Potencia num=3


echo $((num ** 2))
2.- Introducción a la programación de bash y scripts
Operadores de comparación numérica

Operador Función aritmética Descripción Ejemplos


-lt Menor que Menor que if [ 2 -lt 4 ]
-le Menor o igual que Menor o igual que if [ $x -le 23 ]
-eq Igual que Igual que if [ $n -eq 101 ]
-ge Mayor o igual que Mayor o igual que elif [ $marks -ge 33 ]
-gt Mayor que Mayor que $i -gt $j

-ne Diferente que Diferente que if [ $RESULTADO -ne 0 ]; then


echo “Es diferente a cero"
else
echo “igual a cero"
fi
2.- Introducción a la programación de bash y scripts
Operadores de comparación de cadenas
Operador Función aritmética Descripción Ejemplos
= igual igual, las dos cadenas de texto son VAR1=“hola"
exactamente idénticas VAR2=“hola"
if [ "$VAR1" = "$VAR2" ]; then
echo “Cadenas son iguales."
else
echo “Cadenas son diferentes”
fi
!= No es igual a / Distinto no igual, las cadenas de texto no if [ "$a" != "$b" ]
son exactamente idénticas

< Menor es menor que (en orden alfabético string1='ceo'


ASCII) string2='aeo'
if [[ $string1 > $string2 ]];
then
echo Eso es verdad
else
echo Eso es mentira
fi

> Mayor es mayor que (en orden alfabético string1='ceo'


ASCII) string2='aeo'
if [[ $string1 < $string2 ]];
then
echo Eso es verdad
else
echo Eso es mentira
fi
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo6.sh
Sentencias de bifurcación

Sentencia if-else

if [ condición ]
then
…comando
…comando
else
…comando
…comando
fi

Sentencia if-elif-else
if [ condición1 ]
then
…comando
elif condición2; then
…comando
else o pi@raspberrypi:~$ bash ejemplo6.sh
o Ingrese un valor numérico: 4
…comando o Valor es menor que 10
…comando o Ingrese su nota: 17
fi o Bueno
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo7.sh
Sentencias de bifurcación

Sentencia case

case expresión in

Caso1) …comandos;;
Caso2) …comandos;;
*) …comandos;;

esac

o pi@raspberrypi:~$ bash ejemplo7.sh


o Ingrese un número por teclado
o 6
o Este es el primer número
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
Sentencias de bucles o pi@raspberrypi:~$ nano ejemplo8.sh
Sentencia for

for variable in lista


do
…comando
done

for ((inicio; mientras; incremento))


do
…comando
done

Sentencia while

while [ condición ]
do
…comando
done

Sentencia until
Este tipo de bucle se usa cuando queramos que haga el bucle mientras las
condición no se cumpla
o pi@raspberrypi:~$ bash ejemplo8.sh o 1
until [ condición ] o 1 o 2
o 2 o 3
do o 3 o 6
…comando o 1 o 5
o 2 o 4
done o 3 o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo9.sh
Ejemplo 9:
Programar un ciclo de 5 elementos pero al tercer
elemento romper el bucle usando la sentencia break.

o pi@raspberrypi:~$ bash
ejemplo8.sh
o Cuentas es:1
o Cuentas es:2
o Se terminó la cuenta
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo10.sh
Ejemplo 10:

Crear un archivo calculadora simple en bash. Se debe


Tener en cuenta los siguientes requisitos:

o Debe de indicar el ingreso de los números a operar


o Debe presentar un menú de 4 operaciones
o Debe de indicar el ingreso de la opción seleccionada.
o Debe imprimir un mensaje con pregunta si se desea
continuar con la calculadora.

o pi@raspberrypi:~$ bash ejemplo10.sh


o Introduce el primer número: 2
o Introduce el segundo número: 2
o Introduce el número de operación seleccionada (1 al 4)
o 3
o Resultado de la multiplicación= 4
o Quieres continuar (y/n) ?
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo11.sh
Ejemplo 11:

Crear un archivo ejemplo11.sh en bash. Se debe


Tener en cuenta los siguientes requisitos:

o Debe de indicar el ingreso del número


o Imprimir si se ha acertado o se ha equivocado.

o La instrucción exit permite en todo momento finalizar


un script devolviendo el estado al sistema.

o exit 0 : Sale del shell con estado verdadero


o exit 1 : Sale del shell con estado falso
o exit N, donde N>0 indica un error de algún tipo

o pi@raspberrypi:~$ bash ejemplo11.sh


o Adivina el valor numérico del 1 al 9: 1
o Has acertado
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo12.sh

Ejemplo 12:

Comprobar temperatura CPU / GPU Raspberry Pi

o Medir la temperatura de funcionamiento de una


Raspberry Pi, tanto de su CPU como de su GPU,
siento esta actualizada en tiempo real hasta que
cerremos el script.

o <ctrl> <c> para salir de un bucle infinito

Instalar aplicaciones:

$sudo apt-get install lm-sensors


$sudo sensors

$sudo apt-get install psensor (modo gráfico)


$sudo apt-get install hardinfo (Perfiles del sistema)

o pi@raspberrypi:~$ chmod +x ejemplo12.sh #(Para que el script sea un archivo ejecutable)


o pi@raspberrypi:~$ bash ejemplo12.sh
o CPU temp=53.5’C
o GPU temp=53.0’C
o pi@raspberrypi:~$
2.- Introducción a la programación de bash y scripts
o pi@raspberrypi:~$ nano ejemplo13.sh

Ejemplo 13:

Insertar información en una página WEB con HTML

o Presentar información como reporte del


timestamp y tiempo actual del Raspberry PI.

o pi@raspberrypi:~$ bash ejemplo13.sh


o pi@raspberrypi:~$
Ejercicio propuesto 1

El procesador del SoC Broadcom de cuatro núcleos basados en ARM es manejado por el planificador del sistema operativo
usando el algoritmo FCFS modo no apropiativo para tres procesos (P1, P2 y P3) que se encuentran alojados en la cola de
procesos preparados y pasan al estado de ejecución con un tiempo de ocupación de la CPU de acuerdo a la tabla 1. Realizar
lo siguiente:

a) Realizar el diagrama de tiempos de ejecución de los procesos.


b) Realizar el script en shell de Linux que permita calcular los tiempos de espera (WT) y de retorno de cada proceso. Además
calcular los tiempos promedios AWT y ACT de dichos procesos.
c) Considerar que los tiempos de CPU puedan variar y los tiempos de llegada también.

Tabla 1

Procesos T.CPU T. llegada


P1 10 0

P2 4 5

P3 1 8
Ejercicio propuesto 2
Se inicia cinco procesos (P1, P2, P3 y P4) mostrados en la tabla 2. Evaluar cual de los esquemas Apropiativo y No apropiativo del
algoritmo SJF es más eficiente en relación al tiempo ACT

Tabla 2

Procesos T.CPU T. llegada


P1 8 0

P2 4 5

P3 2 7

P4 1 9
Ejercicio propuesto 3
Se inicia cinco procesos (P1, P2, P3 y P4) mostrados en la tabla 3. Evaluar cual de los esquemas Apropiativo y No apropiativo del
algoritmo SJF es más eficiente en relación al tiempo ACT

Tabla 3

Procesos T.CPU T. llegada


P1 8 0

P2 2 5

P3 2 6

P4 1 9
Preguntas ?

También podría gustarte