Está en la página 1de 2

El kernel

En el centro de todo está el hardware. Es una sala de control vacía, llena de palanquitas y lucecitas. No cualquiera puede operar tamaña
complejidad y más de una persona en la sala es llamar a los problemas. Tomemos como caso concreto el disco rígido. No es más que una
serie de casilleros donde guardar bytes. Si tenemos un solo archivo para guardar, que es usado por una sola aplicación y un único usuario
entonces todo bién. Pero si tenemos varios archivos vamos a necesitar tener algún tipo de índice, un catálogo de nombres. Podríamos
definir que desde el byte 0 al N está nuestro índice, y todas las aplicaciones deberían conocer en qué formato se guarda y accederlo
correctamente. Mucho mejor es tener una biblioteca que todas las aplicaciones usen. Esta biblioteca proveerá ciertas convenientes
abstracciones al resto de los programas. Por ejemplo, la abstracción "archivo" y la abstracción "directorio". El disco rígido, para las
aplicaciones que usen esta biblioteca ya no es una tira inmanejable de byes, sino un ordenado catálogo de archivos. Al mismo tiempo nos
va a interesar que todas las aplicaciones normales de la computadora accedan al disco solamente mediante esta biblioteca, así
garantizamos que todas respeten el formato de los índices del disco. Así como nombramos el disco podríamos nombrar a muchos otros
mecanismos de hardware que para ser usados ordenadamente es necesario mediatizar su acceso. Esta biblioteca fue llamada "kernel".
Entonces: El kernel es un componente del sistema que se situa por encima del hardware y provee toda una serie de abstracciones al resto
de los programas. Veamos algunas de esas abstracciones.

pipes archivos procesos threads

Como es vital que siempre se respete el acceso ordenado a los dispositivos, en sistemas operativos modernos se implementó un mecanismo
para que el kernel sea el único que pueda acceder al hardware. Cuando una aplicación llama a una función del kernel el procesador se
pone en un modo especial (llamado modo supervisor). El procesador permite acceder al hardware sólo a código que ejecute con este modo
activado. Es así como un usuario de un sistema unix no puede acceder al disco pasando por alto la abstracción "archivo". Además de ser una
biblioteca que provee abstracciones, el kernel es el árbitro que asigna tiempo de ejecución a distintas tareas. Estas tareas tienen asociadas
recursos de la PC (p. ej. una lista de archivos abiertos) un área de memoria. A todo eso junto se lo llama proceso.

El sistema de archivos en UNIX.


Un sistema de archivos en UNIX puede contener miles de archivos, cientos de directorios y cientos de enlaces simbólicos, dependiendo de
la distribución y de lo que se haya instalado. Como referencia, la distribución Debian/GNU 2.1 viene con cerca de 2500 paquetes para
instalar. Una instalación normal puede insumir un 25% en herramientas de administración, y un 10 % en herramientas de desarrollo. Borrar,
alterar o cambiar permisos de archivos puede conducir a resultados impredecibles.
$ ls -F /
es útil para recorrer el sistema de archivos, bajando luego a los subdirectorios.
Los requerimientos de las redes cambiaron la organización funcional del sistema de archivos. En un lugar grande, la red se configura con un
conjunto de máquinas heterogéneas, cada una responsable del mantenimento y uso de cada archivo. Los archivos pueden ser específicos
para cierta máquina, compartidos por varias máquinas del mismo tipo, o accesibles a casi cualquier tipo de máquina en la red. Enlaces
simbólicos hacia la anterior localización de los archivos ayudan al acceso. Un directorio puede ser real o un enlace simbólico a otro; usar
/bin/pwd para si se ha llegado al directorio directamente o a través de un enlace simbólico.

Convenciones en nombres de archivos y directorios. /lost+found archivos perdidos


/bin archivos ejecutables, comandos de usuario /mnt punto de montaje de dispositivos externos
/boot archivos de arranque /proc archivos de control de procesos
/cdrom punto de montaje para la uniad de CD-ROM /root directorio propio para el supervisor (root)
/dev archivos especiales de dispositivos /sbin archivos ejecutables de administración
[subdirectorios propios de System V] /tmp archivos temporales
./dsk dispositivos de disco /usr ejecutables, documentación, referencia
./fd dispositivos descriptores de archivo ./X11R6 sistema X-Windows
./kd dispositivos de teclado y despliegue ./bin más ejecutables
./kmem memoria ./doc documentos de paquetes de software
./null dispositivo para descarte de salidas ./include encabezados .h de bibliotecas en C
./osm mensajes de error del núcleo ./info archivos de info, información de UNIX (GNU)
./pts pseudo ttys; igual que /dev/pts* ./lib más bibliotecas en C
./rdsk dispositivos crudos de disco ./local ejecutables instalados por el administrador
./term terminales; igual que /dev/tty* ./man subdirectorios de páginas del manual
./xt pseudo ttys; para capas DMD ./sbin más archivos ejecutables de administración
/dosc punto de montaje para la partición DOS ./share compartidos
/etc configuración de paquetes, configuración de sistema ./src (source) código fuente del kernel
./init.d scripts de arranque y detención de programas /var archivos de log, auxiliares, archivos que crecen
./rc?.d enlaces a scripts, con K o S (Kill o Start), y número de ./backup respaldo de algunos archivos del sistema
secuencia para controlar el arranque ./catman páginas man ya formateadas
./skel archivos de inicialización para nuevos usuarios ./lib información propia de programas
/export directorios de usuarios en sistemas grandes ./lock control de bloqueos
/floppy para montar una unidad de disquete ./log archivos de registro de mensajes (log) del sistema
/home objetos relacionados con los usuarios ./spool colas de impresión, intermedios de correo y otros
/lib bibliotecas de desarrollo y material de apoyo ./run información de procesos (PIDs)
Línea de comandos (SHELL)
Imagen de ejemplo de una sesión Bash, tomada en Gentoo Linux.
Línea de comandos, Intérprete de mandatos, Intérprete de línea de mandatos, Intérprete de comandos, Terminal, Consola, Shell ó su
acronimo en inglés CLI por Command line interface, 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 comandos textuales ingresados 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, la shell queda esperando más instrucciones. Se interactúa con la información de la manera más simple posible, sin gráficas,
solo el texto crudo.
Por extensión también se llama Intérprete de comandos a algunas interfaces de programas (mayores) que comunican al usuario con el
software o al Cliente (informática) de un Servidor, como por ejemplo, bancos de datos (MySQL, Oracle) u otros programas (openSSL, FTP)
etc.
Dada la importancia de esta herramienta, existe ya desde los comienzos de la computación. Existen para diversos sistemas operativos,
diversos hardware, 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 guiónes).
Es posible que un sistema operativo tenga varios intérpretes de comandos, es más, la visión lógica de un sistema operativo cambia según el
intérprete de comandos usado. Ejemplo: Win32 sobre Windows o POSIX sobre LINUX.
Casi cualquier programa puede diseñarse para ofrecer al usuario alguna clase de Intérprete de comandos. Por ejemplo, casi todos los juegos
de PC en primera persona tienen un Intérprete de comandos incorporada, utilizada para diagnostico y labores administrativas.
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.

Caracteres comodines
Para agilizar el manejo de los comandos, la información, y su posición en el sistema de archivos, podemos reemplazar un carácter o un
conjunto de ellos por comodines que representen de manera compacta repeticiones, rangos, posiciones o cambios de ellos. Algunos de estos
caracteres son:

* Cualquier número de caracteres


? Reemplazar un solo carácter
[123678]
[1-3,6-8] Rangos de un carácter
. Directorio corriente
.. Directorio anterior
~ Home
~user Home de user
& Background
<Ctrl>Z Para un proceso
; Separa comandos
\ Continua línea de comandos
!! Repite el comando previo
!n Ejecuta el comando número "n"
!-n Selecciona el evento n anterior
!cadena Selecciona el evento que inicia con "cadena"

También podría gustarte