Está en la página 1de 25

UNIVERSIDAD DE OTAVALO

Autor: Kevin Alexander Almachi Antamba

Universidad Otavalo

Tema: ENSAYO TECNICO DE SISTEMAS OPERATIVOS


Ing. Viviana

Otavalo, 31 de mayo del 2022

1
Software

INDICE
1. Introducción.......................................................................................................................3
2. ¿Qué hace un sistema Operativo?......................................................................................3
3. Definición Sistema Operativo............................................................................................4
4. Evolución histórica de los Sistemas Operativos................................................................5
1. ¿Qué es un hilo?................................................................................................................2
2. Ventajas de usar hilos........................................................................................................3
3. Hilos a nivel de usuario y de kernel..................................................................................4
4. ¿Cómo se relacionan los hilos a nivel de kernel y los de usuario?...................................5
5. Evolución histórica de los Sistemas Operativos................................................................9
5. ¿Qué es un hilo?................................................................................................................2
6. Ventajas de usar hilos........................................................................................................3
7. Hilos a nivel de usuario y de kernel..................................................................................4
8. ¿Cómo se relacionan los hilos a nivel de kernel y los de usuario?...................................5

2
1. Introducción

Un Sistema operativo es un programa que administra el hardware de una

computadora. También proporciona las bases para los programas de aplicación, y

actúa como intermediario entre el usuario y el hardware. Estas tareas, pueden ser

llevadas a cabo de varias formas, lo que permite que algunos sistemas Operativos

se diseñen para ser prácticos, otros eficientes y otros para ser ambas cosas.

Dado que un sistema operativo es un software grande y complejo, debe

crearse pieza por pieza. En este curso veremos, entre otras cosas, una

introducción a los principales componentes de un sistema operativo.

2. ¿Qué hace un sistema Operativo?

Un sistema informático puede dividirse en cuatro componentes: el hardware, el

sistema Operativo, los programas de aplicación, y los usuarios. El Sistema operativo

controla y coordina el uso del hardware entre los diversos programas de aplicación por

parte de los distintos usuarios.

También podemos ver un sistema informático como hardware, software y

datos. El sistema operativo proporciona los medios para hacer un uso adecuado

de estos recursos durante el funcionamiento del sistema informático.

3
3. Definición Sistema Operativo

Un sistema operativo es un programa, o conjunto de programas que torna

amigable, eficiente y productivo el uso de un computador (hardware),

permitiendo la ejecución aplicaciones de usuario. Es el intermediario entre las

aplicaciones de usuario y el hardware.

Todas las aplicaciones de usuario requieren un conjunto común de operaciones que

son incorporadas al sistema operativo.

Tareas principales:

 Implementar diferentes entornos para diferentes usos (interfaz

grafica, shells, tipo web, etc)

 Proveer una o más interfaces con el usuario.

 Proveer a las aplicaciones un conjunto de servicios(a través de

Se Puede decir que el Sistema operativo es un:

 Administrador de recursos. Sus tareas consisten en

administrar los recursos disponibles y decidir como asignar estos

recursos según los pedidos y asignaciones que tenga.

 Programa de Control: Controla la ejecución de los programas

para la prevención de errores y mal uso del sistema.

Frecuentemente la porción residente (el código incambiable. Cuanto más

código incambiable, más inflexible es) del propio sistema operativo se denomina

4
núcleo del sistema (Kernel).

4.Evolución histórica de los Sistemas Operativos

SISTEMAS BATCH Ó POR LOTES

En las primeras épocas los sistemas eran grandes y costosos.

Constaban de una entrada de trabajos y una salida impresa, por lo cual la

interacción con el usuario era prácticamente nula. Las principales

características eran que el sistema soportaba de un único trabajo a la vez,

y que las tareas relacionadas se agrupaban en conjuntos o lotes, para su

procesamiento más eficiente.

A comienzos de los 80’, utilizando las técnicas de Spooling (proceso

mediante el cual la computadora introduce trabajos en un buffer, de

manera que un dispositivo pueda acceder a ellos cuando esté listo) y

multiprogramación (ejecución de múltiples tareas compartiendo recursos)

se pudo comenzar a desarrollar técnicas de planificación de despacho.

Esta técnica consistía en seleccionar un lote de trabajos que estaban en

memoria secundaria para cargarlos en memoria principal. Luego, el SO

seleccionaba uno de ellos para ejecutar, y si este debía esperar por alguna

tarea (por ejemplo ejecución de E/S) el sistema elegía otro del lote para

utilizar el procesador.

Esto, incrementó el uso del procesador.

SISTEMAS DE TIEMPO COMPARTIDO

5
Estos Sistemas eran multiusuarios. Ejecutaban programas de forma

concurrente con una elevada tasa de despacho de procesador (cambio de

contexto), de forma tal de permitir a los usuarios que interactúen

directamente con el sistema como si fueran su único usuario.

La necesidad de acceder y actualizar datos de forma concurrente, creo

la necesidad de evolucionar el sistema de archivos a uno multiusuario,

incorporando técnicas de protección de accesos.

SISTEMAS PARA COMPUTADORES PERSONALES

Con costos de hardware decrecientes, fue posible el diseño y uso de

computadores personales. Los Sistemas fueron diseñados en base a que

serían utilizados por un único usuario, y todo el énfasis en el desarrollo

estuvo en mejorar la interacción con el usuario. Se desarrolló la interfaz

6
SISTEMAS PARALELOS

Son Sistemas donde se dispone de más de un procesador, permitiendo

ejecución simultánea y sincronizada de procesos. Se Clasifican en:

 Altamente integrados: “tightly coupled”. Son sistemas

en donde los canales de interconexión son de alta velocidad. (bus

común o memoria compartida)

 Poco Integrados: “closely coupled”. Son sistemas en

donde los canales de interconexión son de baja velocidad

(sistemas en red)

7
Veamos ahora otra clasificación de los Sistemas paralelos:

 Asimétricos: Se designa un CPU (master) para

ejecutar el código del núcleo, para no lidiar con la concurrencia,

los demás (slaves) ejecutaran lo que éste les designe.

 Simétricos: Todos los procesadores son considerados

iguales, el código del núcleo se dispone en memoria común y es

ejecutado por cualquier procesador.

Y otra clasificación más:

 UMA (Uniform Memory Access): Cada CPU

accede a cualquier lugar de la memoria en el mismo tiempo.

 NUMA (Non-Uniform Memory Access): Los CPU

tienen áreas de memoria a las que acceden más rápido que el

resto.

8
Veamos ahora una clasificación de Arquitecturas (Taxonomía de Flynn):

o SISD (Single Instruction, Single Data): Arquitectura

secuencial, por ende no hay paralelismo; son arquitecturas

monoprocesadores.

o SIMD (Single Instruction, Multiple Data): Son sistemas

que ejecutan la misma instrucción sobre un conjunto de datos

(Arquitectura vectorial).

o MISD (Multiple Instruction, Single Data): Paralelismo redundante.

o MIMD (Multiple Instruction, Multiple Data): Varios

procesadores autónomos que ejecutan en forma simultanea varias

instrucciones sobre datos diferentes (puede ser memoria

compartida: escalan poco, acceso a memoria es cuello de botella;

memoria distribuida: escalan a miles de procesadores,

conectados en una red de alta velocidad)

Como ejemplo de sistemas computacionales que utilizan sistemas

paralelos tenemos los clusters. Estos son sistemas en la cual participan

varias computadoras. Los Clusters brindan alta disponibilidad (mantiene

una serie de servicios, a pesar de posibles fallos), alto rendimiento (en

cuanto a capacidad de cálculo) y balance de carga (técnica usada para

compartir el trabajo a realizar entre varios procesos, ordenadores, etc) Se

Clasifican en:

 Simétricos: Todos los nodos ejecutan tareas y asumen las de otros ante

fallas.

1
 Asimétricos: Nodos primarios ejecutan tareas y nodos secundarios

esperan fallas.

SISTEMAS DE TIEMPO REAL:

Son sistemas en los cuales todo resultado debe producirse en un cierto

tiempo. De lo contrario se considera que el sistema ha fallado.

5. Hilos

En el capítulo anterior, se suponía que un proceso consistía únicamente en un

hilo. Ahora, la mayoría de los sistemas operativos proporcionan características

que permiten que un proceso tenga múltiples hilos de control. En este capítulo

veremos que es un hilo, sus ventajas, y los diferentes modelos de

implementación.

1. ¿Qué es un hilo?

Un hilo es una unidad básica de utilización de CPU, la cual contiene un id de

hilo, su propio program counter, un conjunto de registros, y una pila; que se

representa a nivel del sistema operativo con una estructura llamada TCB (thread

control block).

Los hilos comparten con otros hilos que pertenecen al mismo proceso la
2
sección de código, la sección de datos, entre otras cosas. Si un proceso tiene

múltiples hilos, puede realizar más de una tarea a la vez (esto es real cuando se

posee más de un CPU).

Veamos un ejemplo para clarificar el concepto:

Un servidor web acepta solicitudes de los clientes que piden páginas web. Si

este servidor tiene varios clientes y funcionara con un solo hilo de ejecución,

solo podría dar servicio a un cliente por vez, y el tiempo que podría esperar un

cliente para ser atendido podría ser muy grande.

Una posible solución sería que el servidor funcione de tal manera que acepte

una solicitud por vez, y que cuando reciba otra solicitud, cree otro proceso para

dar servicio a la nueva solicitud. Pero crear un proceso lleva tiempo y utiliza

muchos recursos, entonces, si cada proceso realizará las mismas tareas ¿Por qué

no utilizar hilos?

Generalmente es más eficiente usar un proceso que utilice múltiples hilos (un

hilo para escuchar las solicitudes, y cuando llega una solicitud, el lugar de crear

otro proceso, se crea otro hilo para procesar la solicitud)

2. Ventajas de usar hilos

 Respuesta: el tiempo de respuesta mejora, ya que el

programa puede continuar ejecutándose, aunque parte de él esté

bloqueado.

 Compartir recursos: los hilos comparten la memoria

3
y los recursos del proceso al que pertenecen, por lo que se puede

tener varios hilos de ejecución dentro del mismo espacio de

direcciones.

 Economía: Es más fácil la creación, cambio de

contexto y gestión de hilos que de procesos.

 Utilización múltiples CPUs: permite que hilos de un

mismo proceso ejecuten en diferentes CPUs a la vez. En un

proceso mono-hilo, un proceso ejecuta en una única CPU,

independientemente de cuantas tenga disponibles.

3. Hilos a nivel de usuario y de kernel

Hasta ahora hemos hablado de los hilos en sentido genérico, pero a nivel

práctico los hilos pueden ser implementados a nivel de usuario o a nivel de

kernel.

4
Hilos a nivel e usuario: son implementados en alguna librería. Estos hilos se

gestionan sin soporte del SO, el cual solo reconoce un hilo de ejecución.

Hilos a nivel de kernel: el SO es quien crea, planifica y gestiona los hilos.

Se reconocen tantos hilos como se hayan creado.

Los hilos a nivel de usuario tienen como beneficio que su cambio de

contexto es más sencillo que el cambio de contexto entre hilos de kernel. A

demás, se pueden implementar aún si el SO no utiliza hilos a nivel de kernel.

Otro de los beneficios consiste en poder planificar diferente a la estrategia del

SO.

Los hilos a nivel de kernel tienen como gran beneficio poder aprovechar

mejor las arquitecturas multiprocesadores, y que proporcionan un mejor tiempo

de respuesta, ya que si un hilo se bloquea, los otros pueden seguir ejecutando.

4. ¿Cómo se relacionan los hilos a nivel de kernel y los de usuario?

Existen 3 formas para establecer la relación

 Modelo Mx1 (Many to one)

El modelo asigna múltiples hilos de usuario a un hilo del kernel.

Este caso se corresponde a los hilos implementados a nivel de usuario, ya que el

5
sistema solo reconoce un hilo de control para el proceso.

Tiene como inconveniente que si un hilo se bloquea, todo el proceso se

bloquea. También, dado que solo un hilo puede acceder al kernel cada vez, no

podrán ejecutarse varios hilos en paralelo en múltiples CPUs.

 Modelo 1x1 (one to one)

El modelo asigna cada hilo de usuario a un hilo del kernel. Proporciona

una mayor concurrencia que el modelo anterior, permitiendo que se ejecute

otro hilo si uno se bloqueó.

Tiene como inconveniente que cada vez que se crea un hilo a nivel de

usuario, se crea un hilo a nivel del kernel, y la cantidad de hilos a nivel del

kernel están restringidos en la mayoría de los sistemas.

6
 Modelo MxN (many to many)

El modelo multiplexa muchos hilos de usuario sobre un número menor o

igual de hilos del kernel. Cada proceso tiene asignado un conjunto de hilos de

kernel, independientemente de la cantidad de hilos de usuario que haya creado.

No posee ninguno de los inconvenientes de los dos modelos anteriores, ya

que saca lo mejor de cada uno. El usuario puede crear tantos hilos como necesite

y los hilos de kernel pueden ejecutar en paralelo. Asimismo, cuando un hilo se

bloquea, el kernel puede planificar otro hilo para su ejecución.

Entonces, el planificador a nivel de usuario asigna los hilos de usuario a los

hilos de kernel, y el planificador a nivel de kernel asigna los hilos de kernel a

los procesadores.

7
8
Se Puede decir que el Sistema operativo es un:

 Administrador de recursos. Sus tareas consisten en

administrar los recursos disponibles y decidir como asignar estos

recursos según los pedidos y asignaciones que tenga.

 Programa de Control: Controla la ejecución de los programas

para la prevención de errores y mal uso del sistema.

Frecuentemente la porción residente (el código incambiable. Cuanto más

código incambiable, más inflexible es) del propio sistema operativo se denomina

núcleo del sistema (Kernel).

5.Evolución histórica de los Sistemas Operativos

SISTEMAS BATCH Ó POR LOTES

En las primeras épocas los sistemas eran grandes y costosos.

Constaban de una entrada de trabajos y una salida impresa, por lo cual la

interacción con el usuario era prácticamente nula. Las principales

características eran que el sistema soportaba de un único trabajo a la vez,

y que las tareas relacionadas se agrupaban en conjuntos o lotes, para su

procesamiento más eficiente.

A comienzos de los 80’, utilizando las técnicas de Spooling (proceso

mediante el cual la computadora introduce trabajos en un buffer, de

manera que un dispositivo pueda acceder a ellos cuando esté listo) y

multiprogramación (ejecución de múltiples tareas compartiendo recursos)

se pudo comenzar a desarrollar técnicas de planificación de despacho.


9
Esta técnica consistía en seleccionar un lote de trabajos que estaban en

memoria secundaria para cargarlos en memoria principal. Luego, el SO

seleccionaba uno de ellos para ejecutar, y si este debía esperar por alguna

tarea (por ejemplo ejecución de E/S) el sistema elegía otro del lote para

utilizar el procesador.

Esto, incrementó el uso del procesador.

SISTEMAS DE TIEMPO COMPARTIDO

Estos Sistemas eran multiusuarios. Ejecutaban programas de forma

concurrente con una elevada tasa de despacho de procesador (cambio de

contexto), de forma tal de permitir a los usuarios que interactúen

directamente con el sistema como si fueran su único usuario.

La necesidad de acceder y actualizar datos de forma concurrente, creo

la necesidad de evolucionar el sistema de archivos a uno multiusuario,

incorporando técnicas de protección de accesos.

SISTEMAS PARA COMPUTADORES PERSONALES

Con costos de hardware decrecientes, fue posible el diseño y uso de

computadores personales. Los Sistemas fueron diseñados en base a que

serían utilizados por un único usuario, y todo el énfasis en el desarrollo

estuvo en mejorar la interacción con el usuario. Se desarrolló la interfaz de

ventanas que conocemos hoy.

1
0
SISTEMAS PARALELOS

Son Sistemas donde se dispone de más de un procesador, permitiendo

ejecución simultánea y sincronizada de procesos. Se Clasifican en:

 Altamente integrados: “tightly coupled”. Son sistemas

en donde los canales de interconexión son de alta velocidad. (bus

común o memoria compartida)

 Poco Integrados: “closely coupled”. Son sistemas en

donde los canales de interconexión son de baja velocidad

(sistemas en red)

1
1
Veamos ahora otra clasificación de los Sistemas paralelos:

 Asimétricos: Se designa un CPU (master) para

ejecutar el código del núcleo, para no lidiar con la concurrencia,

los demás (slaves) ejecutaran lo que éste les designe.

 Simétricos: Todos los procesadores son considerados

iguales, el código del núcleo se dispone en memoria común y es

ejecutado por cualquier procesador.

Y otra clasificación más:

 UMA (Uniform Memory Access): Cada CPU

accede a cualquier lugar de la memoria en el mismo tiempo.

 NUMA (Non-Uniform Memory Access): Los CPU

tienen áreas de memoria a las que acceden más rápido que el

resto.

1
2
Veamos ahora una clasificación de Arquitecturas (Taxonomía de Flynn):

o SISD (Single Instruction, Single Data): Arquitectura

secuencial, por ende no hay paralelismo; son arquitecturas

monoprocesadores.

o SIMD (Single Instruction, Multiple Data): Son sistemas

que ejecutan la misma instrucción sobre un conjunto de datos

(Arquitectura vectorial).

o MISD (Multiple Instruction, Single Data): Paralelismo redundante.

o MIMD (Multiple Instruction, Multiple Data): Varios

procesadores autónomos que ejecutan en forma simultanea varias

instrucciones sobre datos diferentes (puede ser memoria

compartida: escalan poco, acceso a memoria es cuello de botella;

memoria distribuida: escalan a miles de procesadores,

conectados en una red de alta velocidad)

Como ejemplo de sistemas computacionales que utilizan sistemas

paralelos tenemos los clusters. Estos son sistemas en la cual participan

varias computadoras. Los Clusters brindan alta disponibilidad (mantiene

una serie de servicios, a pesar de posibles fallos), alto rendimiento (en

cuanto a capacidad de cálculo) y balance de carga (técnica usada para

compartir el trabajo a realizar entre varios procesos, ordenadores, etc) Se

Clasifican en:

 Simétricos: Todos los nodos ejecutan tareas y asumen las de otros ante

fallas.

1
 Asimétricos: Nodos primarios ejecutan tareas y nodos secundarios

esperan fallas.

SISTEMAS DE TIEMPO REAL:

Son sistemas en los cuales todo resultado debe producirse en un cierto

tiempo. De lo contrario se considera que el sistema ha fallado.

5. Hilos

En el capítulo anterior, se suponía que un proceso consistía únicamente en un

hilo. Ahora, la mayoría de los sistemas operativos proporcionan características

que permiten que un proceso tenga múltiples hilos de control. En este capítulo

veremos que es un hilo, sus ventajas, y los diferentes modelos de

implementación.

5. ¿Qué es un hilo?

Un hilo es una unidad básica de utilización de CPU, la cual contiene un id de

hilo, su propio program counter, un conjunto de registros, y una pila; que se

representa a nivel del sistema operativo con una estructura llamada TCB (thread

control block).

Los hilos comparten con otros hilos que pertenecen al mismo proceso la
2
sección de código, la sección de datos, entre otras cosas. Si un proceso tiene

múltiples hilos, puede realizar más de una tarea a la vez (esto es real cuando se

posee más de un CPU).

Veamos un ejemplo para clarificar el concepto:

Un servidor web acepta solicitudes de los clientes que piden páginas web. Si

este servidor tiene varios clientes y funcionara con un solo hilo de ejecución,

solo podría dar servicio a un cliente por vez, y el tiempo que podría esperar un

cliente para ser atendido podría ser muy grande.

Una posible solución sería que el servidor funcione de tal manera que acepte

una solicitud por vez, y que cuando reciba otra solicitud, cree otro proceso para

dar servicio a la nueva solicitud. Pero crear un proceso lleva tiempo y utiliza

muchos recursos, entonces, si cada proceso realizará las mismas tareas ¿Por qué

no utilizar hilos?

Generalmente es más eficiente usar un proceso que utilice múltiples hilos (un

hilo para escuchar las solicitudes, y cuando llega una solicitud, el lugar de crear

otro proceso, se crea otro hilo para procesar la solicitud)

6. Ventajas de usar hilos

 Respuesta: el tiempo de respuesta mejora, ya que el

programa puede continuar ejecutándose, aunque parte de él esté

bloqueado.

 Compartir recursos: los hilos comparten la memoria

3
y los recursos del proceso al que pertenecen, por lo que se puede

tener varios hilos de ejecución dentro del mismo espacio de

direcciones.

 Economía: Es más fácil la creación, cambio de

contexto y gestión de hilos que de procesos.

 Utilización múltiples CPUs: permite que hilos de un

mismo proceso ejecuten en diferentes CPUs a la vez. En un

proceso mono-hilo, un proceso ejecuta en una única CPU,

independientemente de cuantas tenga disponibles.

7. Hilos a nivel de usuario y de kernel

Hasta ahora hemos hablado de los hilos en sentido genérico, pero a nivel

práctico los hilos pueden ser implementados a nivel de usuario o a nivel de

kernel

4
5

También podría gustarte