Está en la página 1de 20

“AÑO DE LA UNIVERSALIZACIÓN DE LA SALUD”

Universidad Nacional de Piura


Facultad de Ingeniería Industrial
Escuela Profesional de Ingeniería Informática

CURSO:

INTRODUCCION A LOS ENTORNOS OPERATIVOS

DOCENTE:

MOISES DAVIS SAAVEDRA ARANGO

ESTUDIANTES:

✓ Calle Núñez Marcos Abelardo.


✓ Mena Torres Jeysi Karina.
✓ Merino Juárez Ana Lucía.

TEMA:

ANÁLISIS DE LOS PROCESOS Y LOS HILOS EN UN SISTEMA


OPERATIVO

PIURA – PERÙ

ANÁLISIS DE LOS PROCESOS Y LOS HILOS EN UN SISTEMA OPERATIVO


SISTEMA OPERATIVO LINUX

Linux es un sistema operativo diseñado por diferentes programadores. Tiene dos

características que lo diferencian del resto, la primera, es que es libre, significa que no

tenemos que pagar ningún tipo de licencia, la segunda es que tiene un código fuente para

que pueda ser modificado por cualquier persona. Que tenga su propio código fuente hace

que el sistema tenga muchas más posibilidades.

El núcleo operativo o también llamado kernel es el encargado de que el software y el

hardware puedan trabajar juntos. Sus funciones más importantes son:

• Administración de la memoria

• Administración del tiempo de procesador

• Es el encargado de que accedamos a los elementos de nuestro ordenador de manera

cómoda.

Las funciones principales del sistema operativo Linux son:

▪ Sistema Multitarea:

“Describe la habilidad de ejecutar, aparentemente al mismo tiempo, numerosos

programas sin obstaculizar la ejecución de cada aplicación” (‘Aztec Eagle’ v0.09,

2015)

Es decir, nos permite que el usuario realice varias labores al mismo tiempo, que

varias aplicaciones se ejecuten al mismo tiempo y con buen rendimiento sin tener

que detener alguna de las aplicaciones. Por ejemplo, puedo recibir un correo

electrónico, mientras compilo un programa y edito un código de otro programa.

▪ Sistema Multiusuario:
Múltiples usuarios pueden acceder a los recursos y las aplicaciones que brinda

Linux al mismo tiempo, distribuyendo los mencionados recursos con solvencia

operativa y en un marco de excelentes condiciones de seguridad informática. Es

decir, el sistema operativo permite proveer servicio y procesamiento a múltiples

usuarios a la vez. Y por supuesto, cada uno de ellos puede ejecutar varios programas

a la vez (multitarea).

▪ Shells programables:

Un Shell es un intérprete de comandos, lo que hace es conectar las órdenes o

instrucciones del usuario con el núcleo del sistema, parea que ejecute dichas

órdenes y al ser programables se puede modificar para adaptarlo a las necesidades

que se quiera satisfacer y así poder controlar el funcionamiento de la computadora.

▪ Comunicaciones:

Linux es muy flexible ya que nos permite conectados a cualquier ordenador.

Internet fue creado en el mundo de Unix, por eso Linux tiene grandes capacidades

para navegar en Internet.

Características de este sistema operativo:

a. Es un sistema multitarea: Como lo hemos explicado antes puede ejecutar varias

aplicaciones a la vez, sin problemas.

b. Es un sistema multiusuario: Varios usuarios pueden usar el mismo ordenador al

mismo tiempo.

c. Permite acceder a software de libre distribución: “Su condición de sistema operativo

abierto hace posible aprovechar los permanentes avances en software, con


programas desarrollados por informáticos en todo el mundo que amplían en forma

constante su rango de acción” (Julia Máxima Uriarte, 2019)

Lo que se nos dice es que es un programa informático donde el usuario del

programa puede o tiene la libertad de copiarlo, modificarlo, distribuirlo y

redistribuirlo para el beneficio de la comunidad, siendo una ventaja que sea libre

debido a que se puede modificar si existe algún error o para mejorarse.

d. Brinda soporte a todo tipo de hardware y puede funcionar en múltiples plataformas:

“La ductilidad de Linux en cuanto a su uso en diferentes clases de plataformas y

dispositivos, como así también su capacidad para facilitar la operatoria de toda clase

de hardware son características destacadas” (Julia Máxima Uriarte, 2019)

Linux es un sistema operativo que puede ser instalado en una gran variedad de

hardware, incluyendo computadoras de escritorio y portátiles, computadoras de

bolsillo, teléfonos celulares, etc.

e. Es personalizado: Lo que nos permite adaptar nuestra propia interfaz de acuerdo a

lo que necesitemos y a nuestros gustos.

f. Es seguro: El sistema contiene una arquitectura lógica para el manejo de archivos,

memoria y procesos que no permite a permanencia de virus.

g. Es estable: Es considerado uno de los sistemas más robustos y estables, además que

es el sistema más utilizado en servidores y ordenadores que deben permanecer

siempre encendidos sin que nada falle.

h. Política de copia en escritura para la compartición de páginas entre ejecutables: Esto

significa que varios procesos pueden usar la misma zona de memoria para

ejecutarse. Cuando alguno intenta escribir en esa memoria, la página (4Kb de


memoria) se copia a otro lugar. Esta política de copia en escritura tiene dos

beneficios: aumenta la velocidad y reduce el uso de memoria.

PLANIFICACION EN LINUX
Una parte muy fundamental de la tarea en la gestión de procesos es la de planificar la

utilización de recursos de ejecución de los procesos.

La planificación en Linux se lleva a cabo en la función schedule del fichero kernel/sched.c.

Existen tres formas de planificar un proceso; véase el siguiente cuadro:

FORMAS DE proceso de tiempo real Proceso de tiempo no real


PLANIFICAR

SCHED_OTHER • Este tipo de procesos


sólo se puede
ejecutar cuando no
existe ningún
proceso de tiempo
real en estado
Preparado
• El proceso a ejecutar
se elige tras
examinar las
prioridades
dinámicas.
• Todo proceso que se
ejecute durante
varios ciclos de reloj,
disminuye en
prioridad, pudiendo
llegar a ser menos
prioritario que los
procesos que no se
ejecutan, cuya
prioridad no se ha
modificado.
SCHED_FIFO • Es un proceso en
tiempo real y está
sujeto a un
planificador FIFO
(unix 4)
Este se ejecutará hasta
que:
➢ se bloquee al
necesitar esperar
por la
finalización de
una operación de
E/S
➢ el procesador sea
solicitado por
otro proceso en
tiempo real con
una prioridad
mayor
➢ el proceso ceda
voluntariamente
el procesador
utilizando la
primitiva
sched_yield.
• los procesos
SCHED-FIFO tienen
una rodaja de
tiempo asignado

SCHED_ ROUND ROBIN. • Funciona igual que


un SCHED_FIFO
excepto que las
rodajas de tiempo si
importan.
• Cuando a un proceso
se le acaba su rodaja,
el siguiente proceso
al que se le asignará
el procesador, se
puede escoger de la
lista de procesos
SCHED_RR o de la
lista de procesos
SCHED_FIFO.
(Universidad de las Palmas de Gran Canaria, 2015)
Como algunos ejemplos de los procesos en tiempo real se tiene grabador de CD-RW o un

reproductor de música en MP3.

SINCRONIZACIÓN FRENTE A DIFERENTES LENGUAJES DE

PROGRAMACIÓN (SINCRONIZACIÓN ENTRE HILOS, SINCRONIZACIÓN

ENTRE PROCESOS)

En los diferentes sistemas operativos multiprogramados surge el concepto de proceso.

Así, un proceso UNIX incluye en su contexto el estado de la pila, el estado de la memoria y

el estado de la E/S, mientras que un thread1 típico tiene como contexto propio poco más

que la pila. En algunos sistemas es posible determinar el contexto propio de un proceso en

el momento de su creación, como ocurre con la llamada al sistema clone() de Linux

Típicamente, un proceso requiere la CPU durante un periodo de tiempo, realiza alguna

operación de E/S, y vuelve a requerir la CPU, repitiéndose este ciclo hasta la finalización

del programa. El proceso pasa por diversos estados entre los que se definen transiciones,

como representa, en su forma más sencilla, el grafo de la Figura


Sincronización entre procesos

Un sistema operativo multiprogramado es un caso particular de sistema concurrente2 donde

los procesos compiten por el acceso a los recursos compartidos o cooperan dentro de una

misma aplicación para comunicar información.

Cuando tenemos varios procesos o hilos en la ejecución, en muchos casos no queremos que

estos se ejecuten al mismo tiempo. El mecanismo que controla el orden de ejecución de

determinadas tareas lo llamamos SINCRONIZACION.

✓ ¿Por qué los algunos casos no queremos que los hilos se ejecuten al mismo tiempo?

Porque se dan condiciones de carrera.

“Una condición de carrera es un comportamiento del software en el cual la salida depende

del orden de ejecución de eventos que no se encuentran bajo control”

• Se da cuando uno o más hilos ejecutan secciones que otro hilo podría usar al mismo

tiempo, y en estas modifica variables que podrían afectar la ejecución del resto de

hilos.

• Se pueden producir cuando varios threads NO acceden en exclusión mutua a un

recurso compartido.

• El nombre viene de la idea de dos procesos compiten en una carrera para acceder a

un recurso compartido.

• Se convierte en un fallo siempre que el orden de ejecución no sea el esperado.

Los procesos incrementan cuenta cuando añaden un elemento al buffer, de acuerdo al

código de la Figura 2.4. Si dos procesos accediesen a la variable cuenta


concurrentemente, ambos podrían obtener un mismo valor i, y ambos calcularían i+1

como nuevo valor a asignar a cuenta.

El ejemplo anterior de acceso a un buffer compartido se puede generalizar por medio de un

esquema de comunicación más elaborado, como es el caso del productor-consumidor

El esquema cliente-servidor es un caso particular del productor-consumidor donde los

procesos clientes producen peticiones que son consumidas por un proceso servidor.

comprobaremos que la resolución satisfactoria del acceso a secciones críticas o del

esquema productor-consumidor no evita que puedan presentarse otros problemas, debidos a

las interacciones entre procesos en el uso de los recursos, como es el caso de la inanición y

los interbloqueos, problemas que se abordarán más adelante.

SECCION CRITICA PARA EL CASO PRODUCTOR-CONSUMIDOR


Para solucionar estos inconvenientes hay que identificar las secciones de código en las que

se pueden dar condiciones de carrera y permitir que solo un hilo entre a estas secciones a la

vez. Podríamos pensar en un cruce de autos como una sección critica, en la que los autos

que vayan en otro sentido no podrán ingresar al cruce hasta que los carros del carril que

tiene el semáforo en verde (tienen permiso de entrar a la sección critica) terminen de pasar.

El modelo de sección crítica que vamos a utilizar sigue el siguiente protocolo genérico:

Entrar SC(esta_SC) /* Solicitud de ejecutar esta_SC


/* código de esta_SC */
DejarSC(esta_SC) /* Otro proceso puede ejecutar esta_SC */
Es decir, cuando un proceso quiere entrar a la sección crítica:
(1) ejecuta Entrar_SC(), y si la sección crítica está ocupada el proceso espera;
(2) ejecuta la sección crítica;
(3) ejecuta Dejar_SC(), permitiendo que entre uno de los procesos en espera
A continuación, se mostrará un ejemplo codificado en el cual se muestra un intento de

implementación del productor-consumidor sin la utilización de secciones críticas. Se

observa el riesgo de condiciones de carrera sobre la variable cuenta y sobre el acceso al

buffer (mediante dejar_elemento() y retirar_elemento()).

PROPIEDADES DEL ACCESO EXCLUSIVO A SECCIONES CRÍTICAS

1. Exclusión mutua. No puede haber más de un proceso simultáneamente en la SC.

2. No interbloqueo. Ningún proceso fuera de la SC puede impedir que otro entre a la SC.
3. No inanición. Un proceso no puede esperar por tiempo indefinido para entrar a la SC.

4. Independencia del hardware. No se pueden hacer suposiciones acerca del número de

procesadores o de la velocidad relativa de los procesos.

Se utilizan primitivas genéricas de Entrar_SC y Dejar_SC, que cumplen las propiedades

definidas arriba4. Obsérvese que los procesos bloquean y liberan iterativamente la sección

crítica para permitir que otros procesos puedan ejecutar el código que permita liberar las

condiciones de buffer lleno y buffer vacío.


MÉTODOS DE SINCRONIZACIÓN Y COMUNICACIÓN
SEMAFOROS:
➢ Un hilo va a adquirir el permiso de entrar a la sección critica, una vez que

finalice la sección libera el permiso.

➢ Formado por una posición de memoria y 2 instrucciones, una para reservar y

otra para liberar.

➢ Pueden utilizarse también para la asignación de recursos compartidos. Dadas n

unidades de un recurso compartido, R, que los procesos pueden usar

indistintamente.

Ejemplo Del Productor-Consumidor Con Semáforos


MONITORES:

Cada hilo tiene su turno, deben esperar mientras el hilo que tenga el turno esté presente en

la sección crítica, son ejecutados usando Exclusión mutua.

PASO DE MENSAJES:

Denominaremos a los objetos que soportan este tipo de comunicación buzones o mailboxes.

Los mensajes se encolan (envían) y desencolan (reciben) de los buzones siguiendo una

disciplina FIFO.
Es decir los hilos se comunican por medio de mensajes avisándole en que momento

procederá a realizar su ejecución sobre la sección critica

En general, los puertos presentan una característica, la capacidad del buzón (número de

mensajes que pueden almacenar), que determina la forma en que se sincronizan los

procesos que se comunican. Los buzones pueden tener:

➢ Capacidad ilimitada. Es un buzón ideal que no se llena nunca.

➢ Capacidad limitada. El proceso que envía puede encontrar el buzón lleno.

➢ Capacidad nula. Como no se puede almacenar ningún mensaje, los dos procesos

deben sincronizarse para cada comunicación: el primero que llega al punto de la

comunicación debe esperar al segundo.

➢ El esquema cliente-servidor mediante paso de mensajes.

LENGUAJES MAS CONOCIDOS:


• ELIXIR: lenguaje de programación de propósito general, concurrente; este lenguaje

es funcional. Además está construido sobre la MV de Erlang y aprovecha esto para

construir sistemas distribuidos y tolerantes a fallos con baja latencia.

• JAVA: Es muy altamente recomendado usar hilos en este lenguaje, además en este

lenguaje luego usaras los hilos sin siquiera saberlo

• RUST: Lenguaje de programación compilado, de propósito general y

multiparadigma desarrollado por Mozilla y ha sido diseñado para ser ‘un lenguaje

seguro, concurrente y práctico’

• PHYTON: Funciona en cualquier tipo de sistema que integre su interpretador. A

parte de esta ventaja, Python nos ofrece dialectos como el ya conocido Jython,

que se utiliza para escribir en Java.

• GO: Lenguaje de programación compilado, concurrente, imperativo, estructurado,

no orientado a objetos con recolector de basura, soportado en diferentes tipos de

sistemas

• C++: facilidades de programación genérica, que se sumaron a los paradigmas de

programación estructurada y programación orientada a objetos. Por esto se suele

decir que el C++ es un lenguaje de programación multiparadigma.

EJEMPLOS EN ALGUNOS LENGUAJES:

Ejemplo lanzar un hilo en phyton


Cálculo del número PI en C++
Ventajas de los hilos con respecto a los procesos

Si bien los hilos son creados a partir de la creación de un proceso, podemos decir que un

proceso es un hilo de ejecución, conocido como Monohilo. Pero las ventajas de los hilos se

dan cuando hablamos de Multihilos, que es cuando un proceso tiene múltiples hilos de

ejecución los cuales realizan actividades distintas, que pueden o no ser cooperativas entre

sí. Los beneficios de los hilos se derivan de las implicaciones de rendimiento.

• Se tarda mucho menos tiempo en crear un hilo nuevo en un proceso existente que en

crear un proceso. Algunas investigaciones llevan al resultado que esto es así en un

factor de 10.

• Se tarda mucho menos en terminar un hilo que un proceso, ya que cuando se

elimina un proceso se debe eliminar el BCP1 del mismo, mientras que un hilo se

elimina su contexto y pila.

• Se tarda mucho menos tiempo en cambiar entre dos hilos de un mismo proceso.

• Los hilos aumentan la eficiencia de la comunicación entre programas en ejecución.

En la mayoría de los sistemas en la comunicación entre procesos debe intervenir el

núcleo para ofrecer protección de los recursos y realizar la comunicación misma. En

cambio, entre hilos pueden comunicarse entre sí sin la invocación al núcleo. Por lo

tanto, si hay una aplicación que debe implementarse como un conjunto de unidades

de ejecución relacionadas, es más eficiente hacerlo con una colección de hilos que

con una colección de procesos separados.


Ventajas de los procesos con respecto a los hilos

Las ventajas que supone este modelo son numerosas, pues dos de sus características

principales son la flexibilidad y la fácil adaptación a cualquier tipo de proceso. Veamos de

qué manera puede beneficiarse tu empresa al adoptarlo:

• Facilita de la toma de decisiones:

Al estar alineadas todas las áreas de la empresa, la alta gerencia evita la reiteración

innecesaria de órdenes y, por ende, puede tomar decisiones de forma clara y sin entrar en

contradicciones. Además, sus mensajes serán más eficaces y dispondrá de canales de

comunicación adecuados en cada caso.

• Mejora la gestión e implementación de recursos:

Si mejora la comunicación y la relación entre las distintas áreas, es lógico que a la vez

también mejore el uso de los recursos. De esta forma evitaremos la formulación de

soluciones adicionales y el gasto orientado a corregir fallos.

• Favorece la calidad de los productos:

En la gestión por procesos, la interconexión entre distintas áreas o dependencias contribuye

a mejorar las zonas improductivas de los procesos o aquellas en las que el valor añadido sea

mínimo. Esto, como es lógico, ayuda a que los productos sean cada vez mejores y se

ajusten a las necesidades de los clientes.

• Aumenta la satisfacción del cliente:

Y si los productos son mejores, esto incidirá notablemente en la satisfacción de los clientes,

que es, recordemos, el principal objetivo de cualquier estrategia de ventas.


CONCLUSIONES:

Respondiendo a la pregunta 1:

¿Cómo se pueden gestionar procesos en el Sistema Operativo elegido?

Como sabemos un sistema operativo es responsable de las actividades con relación a los

procesos, en análisis presente se destaca esta gestión con respecto a Linux, la cual es

gestionado por kernel, esta gestión comprende la monitorización, detención y el cambio de

prioridad de los procesos.

Respondiendo a la pregunta 2:

¿Cómo se pueden gestionar hilos en el Sistema Operativo elegido?

Los hilos dentro de un proceso comparten toda la misma memoria. Eso quiere decir que si

un hilo toca una variable, todos los demás hilos del mismo proceso verán el nuevo valor de

la variable. Esto hace imprescindible el uso de semáforos o mutex (EXclusión MUTua, que

en inglés es al revés, funciones pthread_mutex...) para evitar que dos threads accedan a la

vez a la misma estructura de datos. También hace que, si un hilo "se equivoca" y corrompe

una zona de memoria, todos los demás hilos del mismo proceso.
Referencias:

➢ Peña Catalá, J. L., Pérez Torres, W., & Blanco García, Y. (2006). El Sistema

Operativo LINUX y el cambio necesario. Panorama Cuba y Salud, 1(2).

➢ Aguilera, Y. R. (2013). GNU/LINUX: alternativa al software

propietario. Revista Caribeña de Ciencias Sociales, (2013_03).

➢ Fino, N. A. (2015). ¿Qué es linux? Revista científica guarracuco, (8).

➢ Catalá, J. L. P., Torres, W. P., & García, Y. B. (2014). El Sistema Operativo

LINUX X y el cambio necesario. Panorama Cuba y Salud, 1(2), 44-50.

➢ Martin, M. (2001). De Windows a Linux (Vol. 1306). Marcombo.

➢ http://www.sc.ehu.es/acwlaroa/SO2/Apuntes/Cap2.pdf

➢ http://ferestrepoca.github.io/paradigmas-de-

programacion/progconcurrente/concurrente_teoria/index.html

También podría gustarte