Vous êtes sur la page 1sur 7

Llamada al sistema

De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda En informtica, llamada al sistema (en ingls system call) es el mecanismo usado por una aplicacin para solicitar un servicio al sistema operativo.

Contenido

1 Mecanismo 2 Las bibliotecas como intermediarias 3 Ejemplos y herramientas 4 Implementaciones tpicas 5 Enlaces externos

[editar] Mecanismo
Las llamadas al sistema comnmente usan una instruccin especial de la CPU que causa que el procesador transfiera el control a un cdigo privilegiado, previamente especificado por el mismo cdigo. Esto permite al cdigo privilegiado especificar donde va a ser conectado as como el estado del procesador. Cuando una llamada al sistema es invocada, la ejecucin del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del ingls Process Control Block), para poder continuar ejecutndose luego. El procesador entonces comienza a ejecutar las instrucciones de cdigo de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y contina su ejecucin. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecucin de la llamada al sistema y del algoritmo de planificacin de CPU.

[editar] Las bibliotecas como intermediarias


Generalmente, los sistemas operativos proveen bibliotecas que relacionan los programas de usuario y el resto del sistema operativo, usualmente una biblioteca C como glibc o el runtime de Microsoft C. Esta biblioteca maneja los detalles de bajo nivel para transferir informacin al kernel y conmutar a modo supervisor, as como cualquier procesamiento de datos o tareas que deba ser realizada en modo supervisor. Idealmente, esto reduce la dependencia entre el sistema operativo y la aplicacin, e incrementa su portabilidad.

[editar] Ejemplos y herramientas


En los sistemas operativos bajo norma POSIX o similares, algunas llamadas al sistema muy usadas son open, Read (system call), write, close, wait, exec, fork, exit y kill. Los

sistemas operativos actuales tienen cientos de llamadas, por ejemplo Linux 2.x y FreeBSD tienen ms de 300.

[editar] Implementaciones tpicas


La implementacin de las llamadas al sistema requiere un control de transferencia que involucra caractersticas especificas de la arquitectura del procesador. Una forma tpica de implementar es usar una interrupcin por software. Linux usa esta implementacin en la arquitectura x86. Para los procesadores con arquitectura RISC, sta es la nica forma, pero arquitecturas CISC como x86 soportan otras tcnicas adicionales. Un ejemplo es SYSCALL/SYSRE.
Llamadas al sistema

Una aplicacin, normalmente no sabe dnde est situada la rutina de servicio de la llamada. Por lo que si sta se codifica como una llamada de funcin, cualquier cambio en el S.O. hara que hubiera que reconstruir la aplicacin. Pero lo ms importante es que una llamada de funcin no cambia el modo de ejecucin de la CPU. Con lo que hay que conseguir llamar a la rutina de servicio, sin tener que conocer su ubicacin, y hacer que se fuerce un cambio de modo de operacin de la CPU en la llamada (y la recuperacin del modo anterior en el retorno). Esto se hace utilizando instrucciones mquina diseadas especficamente para este cometido, distintas de las que se usan para las llamadas de funcin.

Llamadas al Sistema
Las llamadas al sistema proveen una interfaz entre los procesos y el Sistema de Operacin. Por lo general estas llamadas se encuentran disponibles como instrucciones en lenguaje ensamblable. En algunos sistemas podemos realizar llamadas al sistema desde programas en lenguajes de alto nivel, en cuyo caso se asemejan a llamadas a funciones o procedimientos.

Shell de UNIX
De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda Este artculo trata sobre el intrprete tpico de Unix. Para otros usos de este trmino, vase terminal (informtica) .

Pantalla durante una sesin muestra Bash, tomada en Gentoo Linux.

Una Shell de Unix o tambin shell, es el trmino usado en informtica para referirse a un intrprete de comandos, el cual consiste en la interfaz de usuario tradicional de los sistemas operativos basados en Unix y similares como GNU/Linux. Mediante las instrucciones que aporta el intrprete, el usuario puede comunicarse con el ncleo y por extensin, ejecutar dichas rdenes, as como herramientas que le permiten controlar el funcionamiento de la computadora. Los comandos que aportan los intrpretes, pueden usarse a modo de guion si se escriben en ficheros ejecutables denominados shell-scripts, de este modo, cuando el usuario necesita hacer uso de varios comandos o combinados de comandos con herramientas, escribe en un fichero de texto marcado como ejecutable, las operaciones que posteriormente, lnea por lnea, el intrprete traducir al ncleo para que las realice. Sin ser un shell estrictamente un lenguaje de programacin, al proceso de crear scripts de shell se le denomina programacin shell o en ingls, shell programming o shell scripting. En el sentido ms genrico del trmino, shell significa cualquier intrprete que los usuarios usen para escribir comandos. Su etimologa proviene del uso natural de consolas en computadores funcionando bajo unix antao, cuando los usuarios conectaban al computador central, lo hacan mediante consolas, (shells) por las cuales a travs de un intrprete, hacan inicio de sesin y manejaban la computadora principal. Posteriormente, con la proliferacin de los computadores personales y su filosofa monousuario, un computador por usuario (entindase lo contrario de la filosofa inicial de Unix, un computador, muchos usuarios conectados por terminales), se desarroll un software que emulase las caractersticas principales de las consolas fsicas, a modo de

poder seguir usndolas como clientes en un computador o ncleo que comprendiera la convencin estndar usada para configurar y llevar a cabo tareas de administracin de emergencia con servidores basados en Unix. Los usuarios de Unix y similares, pueden elegir entre distintos shells (programa que se debera ejecutar cuando inician la sesin, vase bash, ash, csh, Zsh, ksh, tcsh). Las interfaces de usuario grficas para Unix, como son GNOME, KDE y Xfce pueden ser llamadas shells visuales o shells grficas. Por s mismo, el trmino shell es asociado usualmente con la lnea de comandos. En Unix, cualquier programa puede ser un shell de usuario. Los usuarios que desean utilizar una sintaxis diferente para redactar comandos, pueden especificar un intrprete diferente como su shell de usuario. El trmino shell tambin hace referencia a un programa particular, tal como el Bourne shell, sh. El Bourne shell fue el shell usado en las primeras versiones de Unix y se convirti en un estndar de facto; todos los sistemas similares a Unix tienen al menos un shell compatible con el Bourne shell. El programa Bourne shell se encuentra dentro de la jerarqua de archivos de Unix en /bin/sh. En algunos sistemas, tal como BSD, /bin/sh es un Bourne shell o un equivalente, pero en otros sistemas como muchas distribuciones de Linux, /bin/sh es un enlace simblico a un shell compatible con ms caractersticas (como Bash). POSIX especifica su shell estndar como un subconjunto estricto del Korn shell.

Contenido
[ocultar]

1 Otros tipos de shells 2 Categoras de shell o 2.1 Compatibles con Bourne shell o 2.2 Compatibles con la shell de C o 2.3 Otros o exticos o 2.4 Archivos de configuracin para shells o 2.5 Histrico 3 shells no Unix 4 Vase tambin 5 Bibliografa 6 Enlaces externos

[editar] Otros tipos de shells [editar] Categoras de shell


Pueden dividirse en cuantro categoras: tipo Bourne, tipo consola C, no tradicional e histrica.

[editar] Compatibles con Bourne shell


Bourne shell (sh) -- Escrita por Steve Bourne, cuando estaba en Bell Labs. Se distribuy por primera vez con la Version 7 Unix, en 1978, y se mejor con los aos. Almquist shell (ash) -- Se escribi como reemplazo de la shell Bourne con licencia BSD; la sh de FreeBSD, NetBSD (y sus derivados) estn basados en ash y se han mejorado conforme a POSIX para la ocasin. Bourne-Again shell (bash) -- Se escribi como parte del proyecto GNU para proveerlo de un superconjunto de funcionalidad con la shell Bourne. Debian Almquist shell (dash) -- Dash es un reemplazo moderno de ash en Debian. Korn shell (ksh) -- Escrita por David Korn, miestras estuvo en Bell Labs. Z shell (zsh) -- Considerada como la ms completa: es lo ms cercano que existe en abarcar un superconjunto de sh, ash, bash, csh, ksh, y tcsh.

[editar] Compatibles con la shell de C


C shell (csh) escrita por Bill Joy, mientras estuvo en la University of California, Berkeley. Se distribuy por primera vez con BSD en 1979. TENEX C shell (tcsh).

[editar] Otros o exticos


fish, una shell amigable e interctiva , lanzada por primera vez en 2005. mudsh, una shell inteligente al estilo de los videojuegos que opera como un MUD. zoidberg, una shell modular escrita en Perl, configurada y de operacin completamente en Perl. rc, el shell por defecto de Plan 9 from Bell Labs y Version 10 de Unix escrita por Tom Duff. Se han hecho ports para Inferno y para sistemas operativos basados en Unix. es shell (es), una shell compatible con RC escrita a mediados de los 90. scsh (Scheme Shell)

[editar] Archivos de configuracin para shells

Un shell lee archivos de configuracin en mltiples circunstancias bajo diferentes dependencias de la shell. Esta tabla muestra los achivos de configuracin de las shells ms populares:
sh
/etc/.login /etc/csh.cshrc /etc/csh.login ~/.tcshrc ~/.cshrc

ksh csh tcsh bash no login login no no no no no yes no no no no no

zsh no no no no no

no no no no no

no login no yes

yes yes

~/.login ~/.logout /etc/profile ~/.profile

no no

no login login no login login

no no

no no

login login no login login no no no no no no no no no no no no no no no no no no no no no no no no no no no

no i.login no no no no login login login no no no

~/.bash_profile no ~/.bash_login ~/.bashrc /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin ~/.zlogout

no no no no no no no no no no no no

no n/login no no no no no no no no no no no no no no no no no no no no no yes login int. login login yes login int. login login

Explicacin:

"no" significa que la shell no leer el archivo en absoluto. "yes" significa que el archivo es siempre ledo por el shell. "login" significa que el archivo es ledo si la shell es una shell de sesin (loging shell). "n/login" significa que el archivo is ledo si la shell no es una shell de sesin. "int." significa que un archivo es ledo si es un shell interactivo. "i.login" significa que un archivo es ledo si la shell es de sesin interactiva.

[editar] Histrico

Thompson shell (sh) -- La primel shell Unix fue escrita por Ken Thompson en Bell Labs. Distribuida con la versin 1 hasta la 6 de Unix, desde 1971 a 1975. Es considerada muy

rudimentaria por los estandars modernos y no es usada en sistemas actuales. Existen algunas partes disponibles de la misma: Ancient UNIX Systems. PWB shell o Mashey shell (sh) -- Una versin de la shell de Thompson, creada por John Mashey y otros, mientras estuvieron en Bell Labs. Distribuida con el Programmer's Workbench UNIX, en 1976.

[editar] shells no Unix


Dentro del conjunto de sistemas operativos Microsoft Windows, el anlogo son los programas command.com, o cmd.exe para sistemas operativos basados en Windows NT, y Windows PowerShell introducido con Windows Server 2008.

Vous aimerez peut-être aussi