El núcleo del sistema operativo Unix (llamado Kernel) es un programa escrito casi en su totalidad en lenguaje C, con excepción de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera. Las funciones del núcleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y múltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado óptimo la atención individual. El Kernel opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cómputo. Es el componente central de Unix y tiene las siguientes funciones:
· Creación de procesos, asignación de tiempos de atención y sincronización.
· Asignación de la atención del procesador a los procesos que lo requieren.
· Administración de espacio en el sistema de archivos, que incluye: acceso, protección y administración de usuarios; comunicación entre usuarios v entre procesos, y manipulación de E/S y administración de periféricos.
· Supervisión de la transmisión de datos entre la memoria principal y los dispositivos periféricos.
El Kernel reside siempre en la memoria central y tiene el control sobre la computadora, por lo que ningún otro proceso puede interrumpirlo; sólo pueden llamarlo para que proporcione algún servicio de los ya mencionados. Un proceso llama al Kernel mediante módulos especiales conocidos como llamadas al sistema.
El Kernel consta de dos partes principales: la sección de control de procesos y la de control de dispositivos. La primera asigna recursos, programas, procesos y atiende sus requerimientos de servicio; la segunda, supervisa la transferencia de datos entre la memoria principal y los dispositivos periféricos. En términos generales, cada vez que algún usuario oprime una tecla de una terminal, o que se debe leer o escribir información del disco magnético, se interrumpe al procesador central y el núcleo se encarga de efectuar la operación de transferencia
Cuando se inicia la operación de la computadora, debe cargarse en la memoria una copia del núcleo, que reside en el disco magnético. Para ello, se deben inicializar algunas interfaces básicas de hardware; entre ellas, el reloj que proporciona interrupciones periódicas. El Kernel también prepara algunas estructuras de datos que abarcan una sección de almacenamiento temporal para transferencia de información entre terminales y procesos, una sección para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal.
A continuación, el Kernel inicializa un proceso especial, llamado "proceso 0". En general, los procesos se crean mediante una llamada a una rutina del sistema ("fork"), que funciona por un mecanismo de duplicación de procesos. Sin embargo, esto no es suficiente para crear el primero de ellos, por lo que el Kernel asigna una estructura de datos y establece apuntadores a una sección especial de la memoria, llamada tabla de procesos, que contendrá los descriptores de cada uno de los procesos existentes en el sistema.
Después de haber creado el "proceso 0", se hace una copia del mismo, con lo que se crea el "proceso 1"; éste muy pronto se encargará de "dar vida" al sistema completo, mediante la activación de otros procesos que también forman parte del núcleo. Es decir, se inicia una cadena de activaciones de procesos, entre los cuales destaca el conocido como despachador, o "scheduler", que es el responsable de decidir cuál proceso se ejecutará y cuáles van a entrar o salir de la memoria central. A partir de ese momento se conoce el número 1 como proceso de inicialización del sistema, "init".
El proceso "init" es el responsable de establecer la estructura de procesos en Unix. Normalmente, es capaz de crear al menos dos estructuras distintas de procesos: el modo monousuario y el multiusuario. Comienza activando el intérprete del lenguaje de control ("Shell") en la terminal principal, o consola, del sistema y proporcionándole privilegios de "superusuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesión, con privilegios especiales, e impide que las otras líneas de comunicación acepten iniciar sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones básicas del sistema y para otras actividades que requieren uso exclusivo de la computadora.
"Init" crea otro proceso, que espera pacientemente a que alguien entre en sesión en alguna línea de comunicación. Cuando esto sucede, realiza ajustes en el protocolo de la línea y ejecuta el programa "login", que se encarga de atender inicialmente a los nuevos usuarios. Si la clave del usuario, y la contraseña proporcionadas son las correctas, entonces entra en operación el programa "Shell", que en lo sucesivo se encargará de la atención normal del usuario que se dio de alta en esa terminal.
A partir de ese momento el responsable de atender al usuario en esa terminal es el intérprete "shell". Cuando se desea terminar la sesión hay que desconectarse de "Shell" (y, por lo tanto, de Unix), mediante una secuencia especial de teclas. A partir de ese momento la terminal queda disponible para atender a un nuevo usuario.
El Shell.
.Es un programa informático que actúa como interfaz de usuario para comunicar al usuario con el sistema operativo mediante una ventana que espera ordenes escritas por el usuario en el teclado; los interpreta y los entrega al sistema operativo para su ejecución. La respuesta del sistema operativo es mostrada al usuario en la misma ventana. A continuación, el programa "shell" queda esperando más instrucciones. Se interactúa con la información de la manera más sencilla posible, sin gráficas, solo el texto crudo.
Dada la importancia de esta herramienta, existe ya desde los comienzos de la computación. Existen para diversos sistemas operativos, diversos hardwares, con diferente funcionalidad. Suelen incorporar características tales como control de procesos, redirección de entrada/salida, listado y lectura de ficheros, protección, comunicaciones y un lenguaje de órdenes para escribir programas por lotes o (scripts o guiones). Su contraparte es la interfaz gráfica de usuario que ofrece una estética mejorada a costa de mayor consumo de recursos computacionales, una mayor vulnerabilidad por complejidad y, en general, una reducción en la funcionalidad ofrecida.
En su forma más simple, una CLI ("Command Line Interface")es una ventana que muestra un "prompt", señalizando su disposición a recibir mandatos, el usuario teclea una orden en el teclado e ingresa la orden normalmente con la tecla "Intro/Enter".
Las órdenes dadas a la CLI son con frecuencia de la forma:
PROMPT>comando_haz_algo [opciones] [a_estos_ficheros]
Al ingresar el mandato con "Intro", un programa interpretador de mandatos analiza la secuencia de caracteres ingresada y, si la sintaxis del mandato es correcta, ejecuta el mandato recurriendo para ello a las funciones que ofrece el sistema operativo o el programa que representa, un gestor de banco de datos, una sesión de FTP, etc. La respuesta al usuario es escrita en el monitor. Esta forma de trabajo es interactiva, es decir, usuario y máquina se comunican en forma sucesiva.
Pero no solo se puede trabajar interactivamente con el CLI, también es posible usar scripts ó guión, es decir, archivos conteniendo instrucciones guardadas como si se estuviesen escribiendo en el momento. De esta forma, la línea de comandos puede utilizarse sin siquiera tener que lidiar con lo primitivo del método ni estando presente frente al monitor o teclado. Comparada con un ambiente gráfico la CLI consume menos recursos del CPU y de la tarjeta gráfica, es más rápida y más fácil de utilizar a través de una red de computadores.

Sistema de archivos de Unix: "File System"
La tercera parte que define el sistema operativo UNIX es la estructura de su sistema de ficheros. Un sistema de ficheros es la forma que tiene el sistema operativo de organizar los datos en una estructura o colección de ficheros. UNIX considera como ficheros no sólo a los ficheros normales (en los que se guardan datos, programas, etc.) sino también a los directorios y los dispositivos conectados al sistema.
El sistema de ficheros en UNIX está organizado en una estructura jerárquica de directorios que comienza en el directorio "root" representado por "/." Los directorios que cuelgan de "root" pueden variar dependiendo del sistema, aunque los mostrados en el árbol a continuación, sí son comunes a todos los sistemas UNIX.
· /bin - contiene comandos y utilidades, son ficheros ejecutables.
· /dev - contiene los ficheros que representan a los dispositivos conectados al sistema.
· /etc - contiene comandos y ficheros usados en la administración del sistema.
· /home - contiene los ficheros "home" de cada usuario del sistema.
· /lib - contiene librerías utilizadas por diferentes programas y lenguajes.
· /tmp - es el directorio donde se guardan los ficheros temporales.
· /usr - contiene ficheros del sistema que son comunes a los usuarios como programas o documentación.
Los ficheros pueden clasificarse dentro de las siguientes categorías:
· Ficheros normales
· Directorios
· Ficheros especiales
· "Pipes" o "tuberías"
Los ficheros normales pueden tener contenidos muy diferentes, por ejemplo, texto, imágenes, ejecutables, etc. Todos los ficheros tienen un propietario, aquellos creados por los usuarios dentro de su propia cuenta y cada propietario es el que puede controlar los permisos de acceso a ese fichero.
Los directorios son ficheros que contienen referencias a otros ficheros. Aunque todos los ficheros se encuentran dentro de algún directorio, no residen realmente dentro de él. El directorio mantiene dos informaciones básicas sobre cada fichero contenido en él: el nombre y un número llamado "inode number" que es un puntero que le indica al sistema donde encontrar toda la información que necesita del fichero, además de almacenar otra información básica como pertenencia, modo de acceso y tipo de archivo. A la correspondencia entre el nombre de un fichero y el "inode number" se le denomina "link". Un mismo "inode number" puede tener asociados varios nombres y se puede referir al fichero por cada uno de estos nombres.
Los dispositivos especiales son ficheros que representan dispositivos físicos como impresoras, dispositivos magnéticos, el ratón, etc. Se encuentran dentro del directorio /dev. Los "pipes" o "tuberías" son los que permiten enlazar la salida de un comando a la entrada de otro, esto se hace a través de la creación de un fichero temporal donde se guarda la salida del primer programa hasta que es leído por el segundo.

No hay comentarios:
Publicar un comentario