Arquitectura UNIX


En sentido estricto, un sistema operativo puede definirse como el software que controla los recursos de hardware de la computadora y proporciona un entorno en el que se pueden ejecutar los programas. En general, llamamos a este software o entorno, el núcleo, ya que es relativamente pequeño.

  • Unix es un sistema operativo en capas entre el usuario y el hardware.
  • Unix es un sistema operativo multiusuario y multitarea. Unix admite múltiples usuarios paralelos que pueden trabajar en múltiples tareas de aplicaciones de software.
  • El núcleo de Unix es el Kernel que toma comandos con la ayuda del Shell.

El sistema operativo UNIX se compone de tres capas entre el usuario/aplicaciones y el hardware.

1.- El kernel es el núcleo del sistema operativo Unix. Interactúa con el hardware. Realiza la parte crítica del sistema operativo, como la programación de tareas, la administración de la memoria y la administración del sistema de archivos. Aquí hay algunos subsistemas que son propiedad del núcleo.

  • Control de acceso a la computadora
  • Gestión de memoria
  • Mantenimiento del sistema de archivos
  • Gestion de las interrupciones
  • Manejo de errores
  • Paginacion
  • Entradas y salidas de los servicios
  • Asignar los recursos para usuarios
  • Administracion de procesos
  • Administracion de dispositivos
  • Administracion de red

2.- Las Llamadas al sistema (System Calls) son las únicas interfaces que se utilizan para solicitar servicios del kernel. Una llamada al sistema es la forma en que los programas interactúan con el sistema operativo. Un programa de computadora realiza una llamada al sistema cuando realiza una solicitud al núcleo del sistema operativo.

3.- El Shell y las bibliotecas: El Shell es un intérprete de línea de comandos que toma una secuencia de comandos como entrada e invoca las llamadas apropiadas al sistema. Las bibliotecas son utilidades ya hechas para las actividades diarias como copiar archivos (cp), crear un directorio (mkdir), etc.


Arquitectura UNIX


Sistema de Archivos

Un sistema de archivos consta de un grupo de métodos y estructuras de datos unidos para realizar un seguimiento de los archivos/directorios en el disco o en una partición del disco.

Para proporcionar almacenamiento de información y recuperación, cada sistema operativo mantiene metadatos sobre cada archivo de manera organizada.

El sistema de archivos Unix es una estructura jerárquica basada en árbol, donde el nodo raíz de esta jerarquía es "/".

Casi todo sucede en Unix a través de un archivo (archivo de disco, archivo de dispositivo, etc.) Los directorios no contienen archivos reales. Cada directorio contiene los pares "nombre de archivo: referencia de inodo". El inodo contiene el archivo real y los metadatos del archivo. 

Un inodo, o nodo índice, es una estructura de datos propia de los sistemas de archivos tradicionalmente empleados en los sistemas operativos tipo UNIX

Un inodo almacena toda la información sobre un archivo regular, directorio u otro objeto del sistema de archivos, excepto su nombre y su contenido.



El punto de vista interno del sistema operativo de Unix, es que hay un solo tipo de archivo, mientras que para soportar aplicaciones externas, Unix ha proporcionado varios tipos de archivos especiales.

  • Archivo normal: estos archivos son archivos normales. Este tipo de archivo tendrá "-" como la primera letra de la cadena de permiso.
  • Archivos especiales: estos archivos tendrán un valor que no sea un guión para la salida de ls -l
    • Directorio: (Directory) Este es el archivo especial más común. Este tipo de archivo tendrá 'd' como la primera letra de la cadena de permiso.
    • Enlace simbólico: (Symbolic link) este tipo de archivos son la referencia a otro archivo. Este tipo de archivo tendrá ‘l’ como la primera letra de la cadena de permiso.
    • Canalización con nombre: (Named pipe) estas tuberías conectan la salida de un proceso con la entrada de otro proceso (comunicación entre procesos). Las tuberías con nombre son unidireccionales. Este tipo de archivo tendrá 'p' como la primera letra de la cadena de permiso.
    • Socket: estos archivos son archivos especiales de comunicación entre procesos bidireccionales. Este tipo de archivo tendrá 's' como la primera letra de la cadena de permiso.
    • Archivo de dispositivo: (Device file) estos archivos se utilizan para montar dispositivos de hardware. Este tipo de archivo tendrá 'b' como la primera letra de la cadena de permiso.
      Puerta: (Door) una puerta es un archivo especial para la comunicación entre procesos a través de la red (un cliente y un servidor), que solo está disponible en Solaris. Este tipo de archivo tendrá 'D' como la primera letra de la cadena de permiso.

 Sistema de archivos estandard

  • Root File System: /bin, /etc, /dev, /lib
  • Boot File System: /stand, /unix
  • Swap File System: /swap
  • User File System: /home, /tmp, /var

 Estructura de Directorios

  • / - Indica la raíz del árbol del sistema de archivos.
  • / bin - Contiene archivos binarios y utilidades fundamentales
  • / boot - Contiene archivos relacionados con el proceso de arranque.
  • / dev - Contiene archivos de dispositivos periféricos.
  • / etc - Contiene archivos de configuración
  • / home - Contiene todos los directorios de usuarios.
  • / lib - contiene bibliotecas C, etc.
  • / media - Esta es la ubicación para montar dispositivos extraíbles
  • / mnt - Otra ubicación de montaje para los administradores del sistema.
  • / opt - Ubicación de instalación del software.
  • / proc - Contiene información sobre procesos como archivos.
  • / root - Directorio de inicio del superusuario.
  • / tmp -Una ubicación de archivos temporales.

Shells

Una vez que iniciamos sesión, normalmente se muestran algunos mensajes de información del sistema, y ​​luego podemos escribir comandos al programa shell. (Algunos sistemas inician un programa de administración de ventanas (GUI - Interfaz grafica de usuario) cuando inicias sesión, pero generalmente terminas con un shell ejecutándose en una de las ventanas).

Un shell es un intérprete de línea de comandos que lee las entradas del usuario y ejecuta los comandos. La entrada del usuario a un shell es normalmente desde el terminal (un shell interactivo) o, a veces, desde un archivo (llamado script de shell).

Mediante las instrucciones que aporta el intérprete, el usuario puede comunicarse con el núcleo y por extensión, ejecutar dichas órdenes, así como herramientas que le permiten controlar el funcionamiento de la computadora.

El indicador, $, que se llama indicador de comando, es emitido por el shell. Mientras se muestra el indicador, puede escribir un comando. El shell lee tu entrada después de presionar Enter. Determina el comando que desea ejecutar mirando la primera palabra de su entrada. Una palabra es un conjunto ininterrumpido de caracteres. Espacios y tabulaciones separan palabras.


Tipos de Shells 

Compatibles con Bourne shell

  • Bourne shell: (sh) /bin/sh
  • Bourne-again shell: (bash) /bin/bash
  • Almquist shell: (ash) /bin/ash
  • Debian shell: (dash) /bin/dash
  • Korn shell: (ksh) /bin/ksh
  • Z shell: (zsh): /bin/zsh

Compatibles con la shell de C

  • C shell: (csh) /bin/csh
  • TENEX C shell: (tcsh) /bin/tcsh

 ARQUITECTURA UNIX GRAFICA