You are on page 1of 43

SHELL

SHELL

La forma que el usuario tiende de acceder a los servicios del kernel es


mediante el Shell. Se puede considerar como el intrprete de
comandos, que permite que los comandos y programas que se
tecleen sean ejecutados.
SHELL
Interfaz entre el Sistema Operativo y el usuario
Dos tipos
Grfica
Lnea de Comandos
CLI (Command Line Interface)
intrprete de comandos, terminal, consola
Shell Grfica (GUI)
Shell de Lnea de Comandos

Generalmente
con shell nos
referimos a una
CLI de Unix
Shell de Lnea de Comandos
Interfaz de usuario basada en caracteres con el sistema operativo
tipo UNIX (Linux, AIX, SunOS, etc.)

Interaccin con el usuario por lnea de comandos

Salida de los programas basada en texto

Traduce las lneas de comandos en instrucciones del sistema


operativo.
Shell de Lnea de Comandos

La shell NO es UNIX, slo una interfaz con l

UNIX es uno de los primeros SSOO en hacer la interfaz de usuario


independiente del SO
Funciones del Shell

Ejecucin de
Programas

Sustitucin de Interpretacin de
Variables Programas

Shell

Control de Ambiente Redireccin de


E/S

Pipes
Grfica vs Texto
Grfica Lnea de Comandos
Sencilla Ciertas operaciones son
Fcil uso ms rpidas
Usuario base Usuario experto
Procesamiento de Transferencia o
imagen, video, etc. procesamiento de datos
Volviendo la Shell es un interprete de comandos, como ya
se ha dicho es el proceso que ejecuta la interpretacin de
la lnea de comando. Lee de su entrada estndar y ejecuta
el comando correspondiente a la lnea alimentada.
La ejecucin de un comando generalmente significa crear
un proceso secundario (hijo) para la ejecucin de un
comando.
En el caso mas simple, el interprete de comandos lee un
comando y se bifurca en un hijo (mediante la llamada
fork) para la ejecucin de dicho comando.
El proceso primario (padre) espera a que su hijo complete
la ejecucin antes de leer otro comando. Un interprete de
comandos real maneja entubamiento de procesos y
redireccionamiento, as como procesos en primer plano
(foreground), y de fondo (background) y seales.
Se tiene la enorme ventaja de que podemos cambiar de
interprete de ordenes segn nuestras necesidades o
preferencias. Existen diferentes shells: el Bourne Again
Shell (bash), el TC shell (tcsh), y el Z shell.

Estos shells no son exclusivos de Linux, se distribuyen


libremente y pueden compilarse en cualquier sistema
Linux. Podemos ver los shell de los que dispone nuestro
sistema mirando en el archivo /etc/shells.
Cada shell, adems de ejecutar las rdenes de LINUX,
tiene sus propias rdenes y variables, lo que lo convierte
en un lenguaje de programacin.

La ventaja que presenta frente a otros lenguajes es su alta


productividad -una tarea escrita en el lenguaje del shell
suele tener menos cdigo que si est escrita en un
lenguaje como C.
Cuando el shell esta preparado para ejecutar una orden,
evala el tipo de orden segn el orden que aparece en la
lista anterior: comprueba si es un alias; si no, si es una
orden empotrada; y por ltimo, un programa ejecutable
(en este ltimo caso la eficiencia es menor pues hay que
acceder a disco para localizar el ejecutable de la orden).

Por tanto, si tenemos un alias con el mismo nombre que


un programa ejecutable, primero ejecutara el alias.
El shell es un programa que bsicamente realiza las
siguientes tareas:
for(;;) {
imprime indicador de rdenes;
lee la lnea de ordenes;
analiza la lnea de ordenes (arg0,arg1,...,>,<,|,&,...);
prepara entorno segn lo que aparece en lnea de ordenes;
crea un proceso para ejecutar orden;

if (estamos en el proceso hijo) {


ejecuta la orden dada en arg0;

else /* es el proceso padre */


if (lnea ordenes no aparece el smbolo &)
espera hasta que finalice el hijo;
}
}
}
Brian W. Kernighan and Rob Pike, El Entorno de Programacin Unix,
Prentice Hall, 1987.
Brian W. Kernighan and Dennis M. Ritchie, The C Programming
Language, Prentice Hall, 1978.
Cameron Newham and Bill Rosenblatt, Learning the bash Shell, OReilly,
October 1995.
Kay A. Robbins and Steven Robbins, UNIX Programacin Prctica,
Prentice Hall, 1997.
Kernel
Configuracin del kernel
Qu es el ncleo?
El kernel o ncleo de Linux se podra definir como el corazn de este sistema
operativo. Es el encargado de que el software y el hardware de tu computadora
puedan trabajar juntos.
Las funciones mas importantes del mismo, aunque no las nicas, son:
Administracin de la memoria, para todos los programas en ejecucin.
Administracin del tiempo de procesador, que estos programas en ejecucin
utilizan.
Es el encargado de que podamos acceder a los perifricos / elementos de
nuestro computadora de una manera coda.
Kernel

El Kernel se encarga de decidir qu programa podr hacer uso de un dispositivo


de hardware y durante cuanto tiempo, lo que se conoce como multiplexado,
implementando las abstracciones de hardware.
kernel
kernel

Espacios

Espacio de Usuario

App1 App2 App3

syscalls
Sistema Operativo

Hardware Espacio de Kernel


EL KERNEL

Fuente: http://mike.passwall.com/nblug/kernel-talk/kernel-model1.png
kernel

Organizacin Interna

Kernels Monolticos
Un sistema operativo con ncleo monoltico concentra todas las funcionalidades posibles (planificacin,
sistema de archivos, redes, controladores de dispositivos, gestin de memoria, etc) dentro de un gran
programa. El mismo puede tener un tamao considerable, y deber ser recompilado por completo al
aadir una nueva funcionalidad. Todos los componentes funcionales del ncleo tienen acceso a todas
sus estructuras de datos internas y a sus rutinas. Un error en una rutina puede propagarse a todo el
ncleo. Todos sus componentes se encuentran integrados en un nico programa que ejecuta en un
nico espacio de direcciones.
Kernel

Microkernels
Se conoce como microkernel al tipo de kernel de un sistema operativo que provee un conjunto de
primitivas o llamadas al sistema mnimas, para implementar servicios bsicos como espacios de
direcciones, comunicacin entre procesos y planificacin bsica. Todos los otros servicios (gestin de
memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provedos por el kernel,
se ejecutan como procesos servidores en espacio de usuario.
kernel
Organizacin interna:

Kernel monoltico (Linux, BSD, skyOS, Windows, Syllable).


Microkernel (BeOS, Mach, Mac OS X, newOS).
* Nanokernel (AdeOS, Eros, KeyKOS, Brix-OS).
* SaSos (Opal, Mungi, BriX). Single address space operating system
* Exokernel (MIT exokernel).

http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html
Configuracin del kernel
Qu es el ncleo? (II)
Existen dos versiones del Linux kernel:
Versin de produccin: La versin de produccin, es la versin estable hasta
el momento. Esta versin es el resultado final de las versiones de desarrollo
o experimentales. Cuando el equipo de desarrollo del kernel experimental,
decide que ha conseguido un kernel estable y con la suficiente calidad, se
lanza una nueva versin de produccin o estable. Esta versin es la que se
debera utilizar para un uso normal del sistema, ya que son las versiones
consideradas ms estables y libres de fallos en el momento de su
lanzamiento.
Versin de desarrollo: Esta versin es experimental y es la que utilizan los
desarrolladores para programar, comprobar y verificar nuevas
caractersticas, correcciones, etc. Estos ncleos suelen ser inestables y no se
deberan usar, a no ser que sepas lo que haces.
Configuracin del kernel
Qu es el ncleo? (III)
Como interpretar los nmeros de las versiones:
Las versiones del kernel se numeran con 3 nmeros, de la siguiente
forma: XX.YY.ZZ
XX: Indica la serie principal del kernel. Hasta el momento solo existen
4 versiones este numero cambia cuando la manera de
funcionamiento del kernel ha sufrido un cambio muy importante.
YY: Indica si la versin es de desarrollo o de produccin. Un nmero
impar, significa que es de desarrollo, uno par, que es de produccin.
ZZ: Indica nuevas revisiones dentro de una versin, en las que lo nico
que se ha modificado, son fallos de programacin / bugs.
Configuracin del kernel
Qu es el ncleo? (IV)
Unos ejemplos nos ayudaran a entenderlo mejor:
ej1: version del kernel 2.4.0: Kernel de la serie 2 (XX=2), version de
produccion 4 (YY=4 par), primera version de 2.4 (ZZ=0).
ej2: version del kernel 2.4.1: Kernel de la serie 2, version 4, en el que se
han corregido errores de programacin presentes en la version 2.4.0
(ZZ=1).
ej3: version del kernel 2.5.0: version 0 del kernel de desarrollo 2.5.
Configuracin del kernel
Por qu puedo necesitar actualizar el ncleo?
Los ncleos nuevos normalmente ofrecen la posibilidad de entenderse con
ms accesorios hardware (o sea, incluyen ms manejadores), se ejecutan
ms rpidamente, son ms estables o corrigen errores de otras versiones.
Mucha gente se actualiza el ncleo para poder usar nuevos manejadores
que necesitan o librarse de ``bugs'' de la versin que usaban.

You might also like