jueves, 23 de febrero de 2023

Concurrencia y secuenciabilidad

 La concurrencia abarca una variedad de problemas de diseño, incluida la comunicación entre procesos, el intercambio de recursos y la competencia, la sincronización de la ejecución de diferentes procesos y la asignación de tiempo de procesador a los procesos, y es esencial para que existan diseños como la multiprogramación.

 

Los procesos simultáneos pueden funcionar de forma totalmente independiente entre sí o pueden ser asincrónicos, lo que significa que a veces necesitan cierta sincronización o colaboración.

 

TIPOS DE PROCESOS SIMULTÁNEOS.

 

Los procesos que se ejecutan simultáneamente en un sistema se pueden clasificar de la siguiente manera:

 

Proceso Libre: Es el que se lleva a cabo sin solicitar el apoyo o colaboración de otros procesos. Un claro ejemplo de procesos independientes son los diferentes shells que se ejecutan simultáneamente en un sistema.

 

Los procesos son cooperativos: fueron creados para trabajar juntos en una actividad que requiere que puedan comunicarse e interactuar entre sí.

 

Los dos tipos de procesos (independientes y cooperativos) pueden tener una secuencia de relaciones entre ellos y pueden ser de 2 tipos:

 

Interrelaciones motivadas a medida que los procesos comparten o compiten por la entrada de recursos físicos o lógicos.

 

Relación motivada a medida que los procesos se comunican y sincronizan entre sí para lograr un objetivo común

 

 

La concurrencia puede presentarse en tres contextos diferentes:

 

Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.

 

Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.

 

Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos. Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes:

 

Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.

 

Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla.

 

Multicomputadora. Es una máquina de memoria distribuida, que está formada por una serie de computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos sobre los diferentes procesadores.



Niveles, objetivos y criterios de planificación

El planificador es el fragmento del sistema operativo que dicta y el algoritmo de idealización es el que se utiliza.

 

Cada proceso es único e impredecible, lo que significa que tiene la capacidad de solicitar E/S de forma intensiva o hacer un uso intensivo de la CPU; el programador del sistema operativo no está seguro de cuánto tiempo pasará antes de que se bloquee un proceso, ya sea por una operación de E/S o por alguna otra razón.

 

Idealización del procesador:

 

Idealización preventiva: Es la táctica de detener temporalmente los procesos ejecutables (desde un punto de vista lógico).

 

Idealización no preventiva: es la táctica de permitir que un proceso se ejecute hasta que se complete.

 

Niveles de programación del procesador:

 

Planificación de alto nivel: También se conoce como idealización del trabajo.

 

Determina qué trabajos pueden competir activamente por los recursos del sistema, lo que se conoce como organización de admisiones.

 

Programación intermedia: determina qué procesos pueden competir por la CPU.

 

Programación de bajo grado: determina a qué proceso listo se le asignará la CPU tan pronto como esté disponible y le asigna la CPU, es decir, "envía" la CPU al proceso.



Técnicas de administración del planificador

Las especialidades organizacionales pueden incluir:

 

• Expropiado

 

• No expropiatorio

 

El programador es un programa en el sistema operativo que se delega para asignar recursos del sistema entre los procesos solicitados. En la medida en que pueda elegir, el programador debe dictar cuál de los procesos que compiten por la propiedad del recurso definido debe recibirlo. Los algoritmos tienen diferentes características dependiendo de los criterios sobre los que fueron creados. Esto se refleja en qué tipos de procesos se priorizan sobre otros en la discusión del procesador. Antes de votar sobre un algoritmo, las características de ese algoritmo deben tenerse en cuenta frente a los criterios de diseño elegidos. Algunos de los dichos son:

 

a) Eficacia: Expresada como porcentaje del tiempo medio de ejecución. Si bien puede parecer lógico tratar de mantener este parámetro cerca del 100 %, un costo tan alto puede degradar otros puntos de medición relevantes del comportamiento del sistema, como la latencia promedio que existe.

 

b) Desempeño: Una medida del número de procesos completados por unidad de tiempo.

 

c) Retorno o Tiempo de Retorno: El intervalo de tiempo entre cuando un proceso es creado o visto y cuando es completado por el sistema.

 

d) Tiempo de Espera: La cantidad de tiempo que un proceso espera para que se le conceda un procesador. Debido a que el tiempo que tarda el sistema en ejecutarse se ha eliminado del promedio, es posible que podamos medir la eficiencia del sistema con mayor precisión.

 

e) Tiempo de respuesta a un evento: Es el intervalo de tiempo desde que se ve el evento hasta que se ejecuta la primera instrucción de la rutina de servicio del evento.




 

jueves, 16 de febrero de 2023

Concepto de proceso

 Concepto de proceso


Un proceso no es más que un programa en ejecución e incluye los últimos valores de contador, registros e interruptores del programa. Conceptualmente, todos estos procesos tienen su propia CPU virtual. Por supuesto, de hecho, el procesador cambia de un proceso a otro.

 

Un proceso es un criterio administrado por el sistema operativo basado en un grupo que consta de:

 

Las reglas de un programa destinado a ser ejecutado por un microprocesador. Su estado de ejecución en un momento
dado, es decir, los valores de los registros de la CPU para este programa. Su memoria de trabajo, es decir, la memoria que ha reservado y su contenido

 

Un sistema operativo multihilo puede generar tanto hilos como procesos. La diferencia es que un proceso solo puede generar subprocesos propios y estos subprocesos comparten toda la memoria reservada para el proceso. En este modelo, todos los programas ejecutables en una computadora, incluido siempre el sistema operativo, se organizan en una serie de procesos contiguos, o simplemente procesos. Jerarquía de procesos Un sistema operativo que se ocupa de la terminología de procesos necesita un mecanismo para generar todos los procesos necesarios. Otros sistemas operativos tienen llamadas al sistema para generar un proceso, cargar su memoria y ejecutarlo. Un proceso debe ser capaz de generar otros procesos.


Estados y transiciones de los procesos



Estados y transiciones de los procesos


La tarea principal del procesador es ejecutar las reglas de la máquina que residen en la memoria primaria. Para que un programa se ejecute, el sistema operativo crea un nuevo proceso y el procesador ejecuta sus reglas en secuencia. En un entorno de multiprogramación, el procesador intercala la ejecución de declaraciones de diferentes programas que residen en la memoria. El sistema operativo es responsable de decidir los patrones de anidamiento y la asignación de recursos para cada proceso.

 

puede detenerse porque el sistema operativo ha decidido ceder la CPU a otro proceso durante un tiempo. En el segundo caso estamos hablando de una formalidad del sistema (no hay suficiente CPU para darle a cada proceso su propio procesador privado).

 

1.- Ejecutándose (usando realmente la CPU en este instante).

2.- Listo (se puede ejecutar, pero se suspendió temporalmente para dejar que otro

proceso se ejecute).

3.- Bloqueo (no puede ejecutarse en tanto no ocurra algún evento externo).

Puede haber cuánto transiciones entre estos tres estados, como se muestra.

 


La transacción 1 ocurre después de que un proceso descubre que no puede continuar. En ciertos sistemas, un proceso debe realizar una llamada al sistema, bloqueo, para entrar en un estado bloqueado. En otros sistemas, MINIX incorporado, una vez que un proceso lee desde un determinado canal o documento (por ejemplo, una terminal) y no se puede acceder a ninguna entrada, se bloqueará automáticamente.

 

Las transiciones 2 y 3 son causadas por el programador de procesos, parte del sistema operativo, sin que el proceso lo sepa.

 

La transición 2 ocurre después de que el programador juzga que el proceso en ejecución ha estado funcionando el tiempo suficiente y es hora de dejar que otro proceso tenga algo de tiempo de CPU.

 

La transacción 3 ocurre después de que todos los demás procesos hayan tenido su parte justa y es hora de que el primer proceso reinicie la CPU.

 

La transacción 4 pasa una vez que pasa el evento externo que está esperando un proceso (como la llegada de la entrada). Sin otros procesos ejecutándose en ese momento, la transacción 3 se activa y el proceso empieza a correr

 

De lo contrario, es posible que el proceso deba esperar en espera durante un tiempo hasta que la CPU esté disponible. Usando un modelo de proceso, es mucho más fácil visualizar lo que está pasando en el sistema.

 

Procesos ligeros: Hilos o hebras

 Procesos ligeros: Hilos o hebras

El término proceso incluye 2 conceptos separados y potencialmente independientes: uno relacionado con la propiedad de los recursos y otro relacionado con la ejecución.


Unidad propietaria de recursos: a un proceso se le asigna una ubicación de memoria y, de vez en cuando, se le pueden dedicar otros recursos, como dispositivos de E/S o archivos.

 

Unidad a la que está asignado el procesador: Proceso es el flujo de ejecución (navegación) a través de uno o más programas. Las unidades que el sistema operativo planifica y entrega son los procesos.

 

Si tiene esta separación de propiedades, las unidades de asignación de CPU se conocen como subprocesos, mientras que las unidades que poseen recursos se denominan procesos.

 


 

jueves, 9 de febrero de 2023

Clasificación de los sistemas operativos

Clasificación



Sistemas operativos monousuarios


Un sistema operativo de usuario único es aquel que admite un cliente a la vez, independientemente de cuántos procesadores tenga la PC o cuántos procesos o tareas el cliente pueda ejecutar simultáneamente. Las PC individuales generalmente se agrupan bajo este título.


Sistemas operativos multiusuarios


Los sistemas operativos multiusuario son capaces de ofrecer servicio a bastante más de un cliente a la vez, ya sea a través de unas pocas terminales conectadas a la PC o a través de sesiones remotas en una red de comunicaciones. No importa cuántos procesadores haya en la máquina o cuántos procesos pueda ejecutar cada cliente al mismo tiempo.


Sistemas operativos monotareas


Un sistema de tarea única es aquel que permite solo un trabajo a la vez por cliente. Pueden darse situaciones de sistema multiusuario y monotarea, en las que se reciben varios usuarios en paralelo, pero todos ellos solo pueden realizar una tarea a la vez.


Sistemas operativos multitareas


Un sistema operativo multitarea es un sistema operativo que permite a un cliente realizar muchas tareas simultáneamente. Es común encontrar interfaces gráficas orientadas al uso de menús y mouse. Esto permite cambios rápidos en medio del trabajo de un cliente, aumentando la productividad.


Sistemas operativos uniproceso


Un sistema operativo uniproceso es aquel que solo puede manejar un procesador de computadora, por lo que una PC con más de uno podría ser inútil. El ejemplo más típico de esta clase de sistemas es 2 y MacOS.


Sistemas operativos multiproceso


Un sistema operativo multiproceso se refiere a la cantidad de procesadores en el sistema que es significativamente más de uno y puede usarlos todos para distribuir su carga de trabajo. Una vez que funciona asimétricamente, el sistema operativo elige uno de los procesadores, que hace el papel de procesador maestro y sirve como punto de apoyo para distribuir la carga a los otros procesadores, conocidos como esclavos.

Estructura: niveles o estratos de diseño

 Estructura




Sistemas monolíticos


Una vez que se aplica esta técnica, cada método en el sistema tiene una interfaz bien definida en términos de límites y resultados, y cada uno tiene la independencia para invocar a cualquier otro cuando este último proporciona un cálculo eficiente que requiere el primero.


Características


Crear el programa final basado en módulos compilados por separado vinculados con el editor de enlaces.


Buena definición de los límites de conexión entre las rutinas existentes.


Carecen de defensas y privilegios al momento de ingresar y manejar varios puntos de la computadora.


En su mayoría siguen siendo hechos a medida.


Para construir el programa objeto del sistema operativo real, una vez que se usa este procedimiento, todos los métodos especiales se compilan en archivos que contienen los métodos y luego se combinan con el enlazador en un solo documento de objeto.


En términos de ocultamiento de información, esencialmente no hay ninguno; Cada método es visible para todos (a diferencia de un módulo o composición de paquete, donde gran parte de la información es local para un módulo y solo las vistas de registros designadas oficialmente pueden llamar desde fuera del módulo).


Esta organización sugiere una estructura básica del sistema operativo:


1.- Un programa central que invoque el procedimiento de servicio solicitado (Shell o Kernel)


2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema.


3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de servicio



Sistemas en estratos


Estos sistemas operativos se organizan como una jerarquía de estratos, cada uno construido arriba del que está debajo de él. El primer sistema construido en esta forma fuel el sistema THE que se fabricó en Technische Hogeschool Eindhoven de Holanda por E. W Dijkstra (1968) y sus alumnos. El sistema THE era un sistema de lote para una computadora alemana, la Electrológica X8, que tenía 32K de palabras de 27 bits.


Características


*Las zonas mas intensas o nucleo están mas protegidas de posibles accesos indeseados desde las capas mas externas.

*Tienes un contacto mas próximo con el hardware.

*Núcleo mínimo, mas seguro y ágil.


En esta estructura se basan prácticamente la mayoría de los SO actuales. Otra forma de ver este tipo de sistema es la denominación de anillos concéntricos o “RINGS”.


Estructura por microkernel



El kernel, que se mantiene en la memoria todo el tiempo, tiene un código de máquina de bajo nivel para administrar el hardware de otros programas que requieren dichos servicios y para la segunda parte de COMMAND.COM, un shell que es un intérprete de comandos.


Las funciones del sistema operativo de bajo nivel y las funciones de interpretación de comandos permanecen separadas, por lo que puede dejar Kernel 2 ejecutándose pero usar una interfaz de cliente diferente. Esto es exactamente lo que sucede cuando inicia Microsoft Windows, que ocupa el lugar de un shell, reemplazando la interfaz de línea de comandos con un cliente GUI.


Estructura cliente – servidor



Desbloquee las mejores capas y elimine la mayor cantidad posible del sistema operativo para mantener un kernel mínimo.


La práctica habitual es implementar la mayor parte de la funcionalidad del sistema operativo en los procesos del cliente. Para solicitar un servicio, como leer un bloque específico de documentos, un proceso de cliente (llamado proceso de cliente) envía una solicitud a un proceso de servidor, que luego ejecuta el trabajo y devuelve una respuesta.


Al dividir el sistema operativo en partes, todas las cuales controlan un lado del sistema, como servicios de archivo, servicios de proceso, servicios de terminal o servicios de memoria, cada parte se vuelve pequeña y controlable. Además, debido a que todos los servidores se ejecutan como procesos en modo cliente y no en modo kernel, no tienen entrada de hardware directa.


Características


*Coordina, permite el trabajo entre iguales.Cliente; inicia las solicitudes o peticiones (maestro)

*Espera y recibe respuesta del servidorSe puede conectar a varios servidores a la vez .

*Servidor:

*Esclavo, espera las solicitudes del cliente

*Aceptan conexiones desde un gran numero de clientes.


Maquina virtual

Estamos hablando del tipo de sistema operativo que muestra una interfaz para cada proceso, demostrando una máquina que se ve idéntica a la máquina subyacente real.


El corazón del sistema operativo se llama monitor virtual y su trabajo es hacer multiprogramación, llevando tantas máquinas virtuales como sea necesario al mejor nivel posible. Estas máquinas virtuales no son máquinas extendidas, sino copias de máquinas reales, por lo que en todas ellas se pueden crear diferentes sistemas operativos, que es lo que la máquina extendida ofrecerá a los clientes.


Características

 

*Se puede hacer varios sistemas operativos sin necesidad de crear particiones.

*Se puede simular el hardware Gran capacidad de disco duro-memoria ram

*Protección cada maquina virtual esta aislada de las otras y no puede inferir.


Maquina virtual


Estamos hablando del tipo de sistema operativo que muestra una interfaz para cada proceso, demostrando una máquina que se ve idéntica a la máquina subyacente real.


El corazón del sistema operativo se llama monitor virtual y su trabajo es hacer multiprogramación, llevando tantas máquinas virtuales como sea necesario al mejor nivel posible. Estas máquinas virtuales no son máquinas extendidas, sino copias de máquinas reales, por lo que en todas ellas se pueden crear diferentes sistemas operativos, que es lo que la máquina extendida ofrecerá a los clientes

Núcleo


 




Cada una de las operaciones en las que participan los procesos está controlada por una parte del sistema operativo denominada kernel (núcleo, core o kernel, en inglés). Por esta razón, el kernel generalmente se basa en la memoria principal, mientras que otras partes del sistema operativo solo se cargan en la memoria principal cuando es necesario.


El kernel se basa en el cuerpo principal de código del sistema operativo, en el que se delega el control y la gestión de servicios y solicitudes de recursos y hardware en relación con uno o más procesos, en otras palabras, el kernel es el corazón del sistema. Sistema operativo.


Cada sistema operativo tiene un tipo de kernel diferente: así la mayoría de los Unix clásicos como FreeBSD usan un kernel "monolítico" en el que se compila todo, otros usan los llamados "microkernels" como Darwin, Hurd e incluso Windows (krnl32 .dll). GNU/Linux usa un kernel "modular" (vmlinuz); un kernel bastante grande en comparación con un microkernel, pero es capaz de delegar la funcionalidad en los llamados "módulos", partes independientes del kernel que se pueden agregar dinámicamente cuando sea necesario y luego descargar si interfieren.


El núcleo de un sistema operativo normalmente contiene el código necesario para realizar las siguientes funciones:


*Manejo de interrupciones.

*Creación y destrucción de procesos.

*Cambio de estado de los procesos.

*Despacho.

*Suspensión y reanudación de procesos.

*Sincronización de procesos.

*Comunicación entre procesos.

*Manipulación de los bloques de control de procesos.

*Apoyo para las actividades de entrada/salida.

*Apoyo para asignación y liberación de memoria.

*Apoyo para el sistema de archivos.

*Apoyo para el mecanismo de llamada y retorno de un procedimiento.

*Apoyo para ciertas funciones de contabilidad del sistema.

*Núcleo o Kernel y niveles de un Sistema Operativo.

jueves, 2 de febrero de 2023

Definición y concepto



La definición de sistema operativo podría ser la siguiente: un programa informático que permite controlar los recursos de la computadora. Estamos hablando de un programa básico que le permite al cliente interactuar con la computadora de una manera simple, permitiéndole realizar diferentes tareas con diferentes tipos de programas.


El sistema operativo se convierte en el intermediario entre la máquina y el cliente. Desde el momento en que enciende el equipo de cómputo, el sistema operativo instalado comienza a arrancar, y esto le brinda la oportunidad de realizar diversas actividades, como la navegación. B. para instalar programas o navegar por Internet.



Funciones y caracteristicas



 Funciones

Controlar los dispositivos del equipo

Administrar las diferentes tareas

Gestionar el hardware

Organizar los archivos en ficheros

Utilizar diferentes programas informáticos, que pueden usarse en paralelo

Cargar en la memoria los programas que está usando el usuario

Hacer que todos los componentes del sistema funcionen correctamente.

Facilitar las interacciones del usuario con el hardware.

En otras palabras, cuando se ejecuta un software en el sistema, es el SO quien se encarga de abrirlo, acceder a los recursos de hardware y todos los elementos que permiten su funcionamiento. Además le asigna una memoria, que se usará en función del número de programas que estén abiertos a la vez.


Características

Entre las principales características de los sistemas operativos destacan los siguientes:


Todos los ordenadores poseen un sistema operativo para su correcto funcionamiento.

Tiene como principal función planificar las tareas que son ejecutadas por el sistema del ordenador.

Debe gestionar y supervisar de manera eficaz el funcionamiento de los programas y hardware que han sido instalados en el ordenador.

Permite ejecutar nuevas funciones en el ordenador.

Puede cumplir con múltiples tareas.

Permite el uso eficiente de los dispositivos y demás recursos del ordenador.

Por medio de los algoritmos que emplea hace posible que el uso y funcionamiento del ordenador o dispositivo sea eficiente.

Provee la conexión entre el software, hardware y la interfaz del usuario.


Evolución de los sistemas operativos a través de la historia

En los primeros días de las computadoras, no había sistemas operativos, programas que administraran aplicaciones y recursos del sistema.


Sin embargo, las computadoras aún ejecutaban un programa único a la vez, y los operadores aún tenían que cargar cada programa y los datos relacionados en la memoria desde una cinta o tarjetas perforadas, ejecutar el programa y luego repetir todo el proceso para el siguiente. programa.


En 1955, algunos programadores de General Motors Research encontraron una solución para su computadora IBM 701: un programa de monitoreo de procesos por lotes que permitía a los operadores integrar una secuencia de trabajos en una sola cinta. Fue el primer paso hacia un sistema operativo completo. Los ensambladores de computadoras se apresuraron a proporcionar sus propios monitores de procesos por lotes. A principios de la década de 1960, la funcionalidad del sistema operativo, que luego se volvió crítica, comenzó a expandirse. El programa Burroughs 5000 Master Control ofrecía memoria virtual y la capacidad de ejecutar múltiples procesos en paralelo.


En 1963, un equipo del MIT dirigido por Fernando Corbato desarrolló CTSS (Compatible Time Sharing System), el primer sistema operativo fácil de usar que permitía a diferentes usuarios ejecutar diferentes programas desde terminales. La mayor parte de este equipo se puso a trabajar rápidamente en un sistema operativo mucho más ambicioso: Multics, un plan grupal con General Electric y AT&T Bell Laboratories que ofrecía un sistema de archivos de composición basado en árboles, composición en capas o en capas, y muchas otras funciones modernas del sistema operativo. .


En la década de 1980, Unix generó toda una generación de estaciones de trabajo y suplantó varios sistemas operativos existentes. Mientras tanto, a mediados de la década de 1970, comenzaron a aparecer las primeras PC de escritorio individuales, con sistemas operativos que tenían poco más de veinte años de monitores de proceso. Cuando IBM comenzó a vender computadoras en 1981, ofrecía una variedad de sistemas operativos, pero el más barato y exitoso fue Computer 2, suministrado por una pequeña empresa popular como Microsoft.


Y llegó Microsoft... y luego Linux


Microsoft dominó rápidamente el mercado de los sistemas operativos para computadoras utilizando características de sus miembros, como la interfaz gráfica de cliente de Windows que tomó prestada de Apple Computer Macintosh. Microsoft también presentó el sistema Xenix, la versión más destacada de Unix para computadoras, y colaboró ​​con IBM para desarrollar un sistema informático multitarea, OS/2, en 1982. Sin embargo, la participación de IBM y Microsoft terminó, y este último fusionó su producto OS/2 con su famoso sistema Windows para crear Windows NT en 1993.


Para 1999, se ejecutaba en más servidores web que los sistemas operativos de Microsoft y era el mayor adversario de Microsoft.



miércoles, 1 de febrero de 2023

Portada