Sistemas Operativos

 Sistemas Operativos


¿Qué es?

Es un conjunto de programas que administran diferentes componentes del dispositivo electrónico, como la memoria, los archivos, los periféricos etc.


Tiene dos componentes principales, el kernel y el user space.


Kernel: Se encargará de cuestiones que el usuario no administra comúnmente. Se comunica directamente con el hardware. En el kernel se encuentran las siguientes funcionalidades:


  • Process Manager (Administrador de procesos)

  • Memory Manager (Administrador de memoria)

  • File Manager (Administrador de archivos)

  • Input/Output Manager (Administrador de entradas y salidas de información)


User Space: El usuario interactúa directamente con este. Este componente contiene todo lo que está fuera del kernel, como los programas (editores de código, el navegadores) también las configuraciones del usuario, interfaces etc.


Ahora veamos con un poco más de profundidad las funcionalidades del kernel.


Process Management: Hay muchos programas que ejecutamos en la computadora al mismo tiempo, como escuchar música mientras navegamos por internet al tiempo que vemos un video. Para que esto sea posible debemos administrar el orden en el que se ejecutan estos procesos, los recursos que necesitan, el tiempo de ejecución etc.


El Process Manager se encarga del manejo de estos procesos.


Un proceso entonces, es un programa que se está ejecutando.

Un programa es una aplicación que podemos ejecutar.


Pueden haber varios procesos de una aplicación, como las ventanas en Chrome, cada ventana es un proceso por separado de Chrome. A estos procesos debemos dedicarles recursos como la RAM o CPU, tenemos una cantidad finita de recursos y queremos ejecutar varios procesos por esto es tan importante el Process manager.


Para poder ejecutar todos estos procesos el kernel debe administrar eficientemente los recursos para que los programas puedan ser ejecutados, por esto el kernel no le puede dedicar todos los recursos a un solo proceso y cada que un programa se quiere ejecutar se inicia un proceso o procesos por ese programa. El kernel entonces, debe asignar un horario para que el CPU ejecute las instrucciones de ese proceso.


Como solo hay un CPU, los procesos se ejecutan uno a uno a través de algo llamado “time slice”, time slicing es una técnica que divide el tiempo en rodajas (time slice) se le asigna un time slice a cada proceso y así se permite que varios procesos se ejecuten, este proceso es ejecutado en milisegundos, tan rápido que da la ilusión de simultaneidad.


Por esto si la computadora está lenta quiere decir que un proceso está tomando más time slices de los que debería, es decir, más tiempo del que debería y los siguientes procesos no pueden continuar. O quizás hay demasiados procesos y el CPU no tiene suficientes recursos para ejecutarlos todos. Estos procesos pueden ser detenidos manualmente, y algunas veces tendremos que hacerlo.

El kernel crea procesos, asigna horarios de ejecución eficientemente y maneja su terminación. Esto es porque debemos administrar los recursos que fueron liberados por los procesos terminados y asignarlos a otros procesos que estén corriendo.



Memory Management: La memoria de la computadora es finita y debe optimizarse para poder ejecutar de una manera agradable al usuario todos los programas y acciones que le sean impuestos. Este administrador se encarga de optimizar el uso de la memoria y se asegura que las aplicaciones tengan suficiente memoria para poder ejecutarse.


Los procesos además de consumir CPU también consumen memoria RAM, esta memoria es más rápida que el disco duro y los procesos necesitan hacerse con un espacio en esta para poder ser procesados por la computadora rápidamente. Sin embargo, la memoria es pequeña y para solucionar esto debemos usar más memoria de la que hay físicamente y para esto usamos algo llamado virtual memory (memoria virtual).


Virtual Memory es la combinación del espacio del disco duro y la RAM, actúa como una memoria que los procesos pueden consumir.


Cuando ejecutamos un proceso tomamos los datos del programa en pedazos que llamamos pages, estas pages son almacenadas en la Virtual Memory y si queremos ejecutar estas pages debemos enviarlas a la RAM física.


Ejecutar toda una aplicación en RAM es posible, si es lo suficientemente pequeña, pero para aplicaciones más grandes se vuelve demasiado caro.


Todo el programa no se ejecuta a la vez, puesto solo necesitamos que se carguen en memoria las pages que estamos utilizando. Al espacio donde los pages están almacenados en el disco duro, se le llama swap space. Cuando creamos particiones en el disco asignamos un espacio para swap.



File Management: Hay tres componentes principales para el manejo de archivos en un sistema operativo, el file data (la información como tal), Metadata (información sobre el archivo) y file system (el encargado de monitorear los archivos).


Empecemos por el sistema de archivos (file system), este se compone de carpetas de clasificación y ficheros, como una administración de papeles en un cajón. El medio de almacenamiento será el “cajón” donde se guardarán los archivos y carpetas de la computadora, mientras que el sistema de archivos será quien controle cómo se almacenan y recuperan los datos. Sin un sistema de archivos el medio de almacenamiento sería un montón de datos juntos sin saber cómo conectarse.


Esto de que “no saben como conectarse” es ya que los archivos algunas veces son almacenados en fragmentos en el disco, puesto que almacenar un archivo de gran tamaño no es eficiente. Esto de fragmentar archivos se llama “Block Storage”, mejora la velocidad del manejo de datos porque los datos no son guardados en una pieza grande y se puede acceder a sus fragmentos más rápido.


Hay muchos tipos de sistemas de archivos, y la mayoría de las veces no se llevan bien entre ellos, puesto que algunos son diseñados para almacenar grandes cantidades de datos mientras que otros sólo admiten pequeñas cantidades de datos. 


Las grandes compañías tienen sus propios sistemas de archivos, Microsoft Windows por ejemplo recomienda el uso de NTFS desarrollado por el mismo, Microsoft. 


Continuemos con la Metadata, la Metadata es información sobre nuestro archivo como:

  • File owner (dueño)

  • Permissions (Permisos)

  • File size (tamaño)

  • Date modified (Fecha de modificación)

  • Date Created (Fecha de creación)

  • File type (Tipo de archivo)


La extensión al final del archivo nos dice como el archivo es reconocido en el sistema operativo, es decir, el file type.



I/O Management: Input (entrada) y output (salida) de información, el kernel a su vez debe manejar la entrada y salida de información. Hay dispositivos de i/o como el teclado, el mouse, monitores etc. todo aquel que genere y reciba datos entra en esta lista. Todos estos dispositivos son manejados por el kernel, el kernel debe cargar un driver (controlador de dispositivo) para poder reconocer y comunicarse con este hardware externo. 

Cuando el kernel carga el driver para comunicarse con el hardware, debe encargarse de la transferencia de información en y por fuera de los dispositivos. Los dispositivos no se comunican solo con la computadora sino que además, deben ser capaces de comunicarse entre ellos, para ello el kernel se encarga de toda la comunicación interna entre dispositivos. El kernel busca la manera más eficiente de transferir información e intenta asegurarse de que no haya errores en su transmisión.




User Space 


Al usar la computadora queremos realizar operaciones como abrir programas, crear archivos, eliminarlos etc. Para esto debemos interactuar con el SO.


La manera en la que podemos interactuar con el sistema operativo es por medio de una GUI o la Shell. 


La Shell es un programa que interpreta comandos de texto y los envía al SO para que sean ejecutados. Hay dos tipos de Shell: GUI Shell o CLI Shell, es importante conocer la CLI Shell puesto que no siempre será posible usar una interfaz para hacer algo. Hay dos Shells muy conocidas, Bash para Linux y PowerShell de Windows.


GUI o Graphic User Interface, es una manera visual de poder interactuar con el SO, podemos arrastrar y clickear elementos, podemos ver directamente lo que está sucediendo.


Una CLI o Command Line Interface, es una manera de interactuar con el SO por medio de comando de texto, una GUI interpreta las acciones del usuario en comandos de texto al SO.


Logs:

Saber cómo manejar los errores que se puedan generar es vital en el mundo TI, por esto el computador tiene una habilidad especial: los logs.


Los logs son una especie de diario, en el que el computador guarda todo lo que sucedió en el tiempo que estuvo encendido. Allí se registran todos los errores que hayan sucedido y esto ofrece una manera directa de saber como solucionar el problema.


Publicar un comentario

Artículo Anterior Artículo Siguiente