Anda di halaman 1dari 15

ESTRUCTURA DEL SO.

UNIX El sistema operativo UNIX es un sistema operativo de tiempo compartido y por lo tanto, multiusuario, en el que existe la portabilidad para la implementacin de distintas computadoras. Est formado por una serie de elementos que pueden representarse en forma de capas concntricas donde, en primer lugar, alrededor del hardware, aislando a este de los usuarios, adems de adaptar el resto del sistema operativo a la maquina debido a la portabilidad que existe en el mismo. COMPILADORES INTERPRETE DE COMANDOS KERNEL HARDWARE NUCLEO SHELL APLICACIONES DE USUARIO En una segunda capa se encuentran los comandos, que no son otra cosa que el Interface entre los programas de aplicacin y el ncleo del sistema operativo. La ltima de las capas contiene los programas de aplicacin. El sistema operativo UNIX se compone de bloques funcionales que se encuentran representados en la Figura siguiente.

COPILADORES Pasos de compilacin Para compilar programas escritos en C, disponen de un compilador de nombre cc. Este compilador toma como parmetros los ficheros fuentes de que consta el programa final y, tras una serie de pasos, produce un fichero ejecutable. Si durante la compilacin se produce un error, no se genera el ejecutable. Los pasos de compilacin en UNIX son al menos estos tres: * Pre proceso (macros, inclusin de ficheros...) * Compilacin a objeto * Enlace (linking) de objetos y bibliotecas

El pre proceso interpreta las macros creadas con #define y expande los ficheros para incluir con #include. No es de mucho inters para ustedes. Un fichero una vez preprocesador se compila a cdigo mquina, pero no se genera un ejecutable, sino un fichero objeto. Este estadio intermedio es necesario por muchos motivos, entre ellos que las rutinas de biblioteca, como printf, tienen que ser "empotradas" posteriormente para generar un ejecutable, y en general debido a que un programa en C puede constar de varios ficheros compilados por separado. Por eso existe un ltimo paso, denominado enlace (linking en ingls), en el cual se recogen todos los ficheros objetos ms las bibliotecas (que tambin residen en ficheros) necesarios para producir el fichero ejecutable. INTERPRETE DE COMANDOS Existen distintos intrpretes de comandos en el mundo Unix: csh, bash, tsh, ksh,.. pero salvo pequeas diferencias todos son parecidos. En este documento partimos sobretodo de bash, ya que est muy extendido a travs de Linux. As como Windows lo vemos como un entorno con ventanas, programas, etc.,.. Unix Unix lo est debemos formado ver por como procesos lo y siguiente: ficheros.

Y no hay nada ms. Los dispositivos como el disco, el cdrom, la pantalla, est representado como un fichero en el sistema Linux, dentro de /dev. Los sockets de comunicacin son ficheros. Los directorios son ficheros. Los ficheros son ficheros. -Redireccin de entrada/salida

>: con este smbolo podemos redirigir la salida estndar de un comando a un fichero. Tngase en cuenta una cosa. Si decimos fichero siempre lo vamos a decir de manera genrica, puede ser un fichero de texto o la pantalla de terminal, ah cabe TODO.

>>: Con esto redirigimos el resultado a un fichero, pero sin sobrescribirlo, lo que hacemos es escribir al final de este (append en ingls).

<: con esto redirigimos el contenido del fichero a un programa. Se usa para

utilizar

el

contenido

del

fichero

como

input

de

un

comando.

<< END: este redireccin se utiliza para iniciar el paso de parmetros a un programa, y se termina cuando escribimos "END" o cualquier otra palabra que hayamos especificado al inicio del comando. EL NUCLEO O KERNEL El ncleo del sistema operativo UNIX (llamado Kernel) es un programa escrito casi en su totalidad en lenguaje C, con excepcin de una parte del manejo de interrupciones, expresada en el lenguaje ensamblador del procesador en el que opera. Las funciones del ncleo son permitir la existencia de un ambiente en el que sea posible atender a varios usuarios y mltiples tareas en forma concurrente, repartiendo al procesador entre todos ellos, e intentando mantener en grado ptimo la atencin individual. El Kernel opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cmputo. Es el componente central de UNIX y tiene las siguientes funciones: - Creacin de procesos, asignacin de tiempos de atencin y sincronizacin. - Asignacin de la atencin del procesador a los procesos que lo requieren. - Administracin de espacio en el sistema de archivos, que incluye: acceso, proteccin y administracin de usuarios; comunicacin entre usuarios v entre procesos, y manipulacin de E/S y administracin de perifricos. - Supervisin de la transmisin de datos entre la memoria principal y los dispositivos perifricos. El Kernel reside siempre en la memoria central y tiene el control sobre la computadora, por lo que ningn otro proceso puede interrumpirlo; slo pueden llamarlo para que proporcione algn servicio de los ya mencionados. Un proceso llama al Kernel mediante mdulos especiales conocidos como llamadas al sistema.

El Kernel consta de dos artes principales: la seccin 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 perifricos. En trminos generales, cada vez que algn usuario oprime una tecla de una terminal, o que se debe leer o escribir informacin del disco magntico, se interrumpe al procesador central y el ncleo se encarga de efectuar la operacin de transferencia. Cuando se inicia la operacin de la computadora, debe cargarse en la memoria una copia del ncleo, que reside en el disco magntico (operacin denominada bootstrap). Para ello, se deben inicializar algunas interfaces bsicas de hardware; entre ellas, el reloj que proporciona interrupciones peridicas. El Kernel tambin prepara algunas estructuras de datos que abarcan una seccin de almacenamiento temporal para transferencia de informacin entre terminales y procesos, una seccin para almacenamiento de descriptores de archivos y una variable que indica la cantidad de memoria principal. 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 duplicacin 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 seccin especial de la memoria, llamada tabla de procesos, que contendr los descriptores de cada uno de los procesos existentes en el sistema. Despus 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 activacin de otros procesos que tambin forman parte del ncleo. 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 cul proceso se ejecutar y cules van a entrar o salir de la memoria central. A partir de ese momento se conoce el nmero 1 como proceso de inicializacin 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 intrprete del lenguaje de control (Shell) en la terminal principal, o consola, del sistema y proporcionndole privilegios de "supe usuario". En la modalidad de un solo usuario la consola permite iniciar una primera sesin, con privilegios especiales, e impide que las otras lneas de comunicacin acepten iniciar sesiones nuevas. Esta modalidad se usa con frecuencia para revisar y reparar sistemas de archivos, realizar pruebas de funciones bsicas 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 sesin en alguna lnea de comunicacin. Cuando esto sucede, realiza ajustes en el protocolo de la lnea y ejecuta el programa login, que se encarga de atender inicialmente a los nuevos usuarios. Si la clave del usuario, y la contrasea proporcionadas son las correctas, entonces entra en operacin el programa Shell, que en lo sucesivo se encargar de la atencin 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 intrprete Shell. Cuando se desea terminar la sesin hay que desconectarse de Shell (y, por lo tanto, de UNIX), mediante una secuencia especial de teclas (usualmente. < CTL > - D). A partir de ese momento la terminal queda disponible para atender a un nuevo usuario. SHELL DE UNIX 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 shellscripts, 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). Las interfaces de usuario grficas para Unix, como son GNOME, KDE y Xfce pueden Por s mismo, ser llamadas shells

visuales o shells grficas.

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 un muchas distribuciones compatible con de ms

Linux, /bin/sh es

un enlace

simblico a

shell

caractersticas (como Bash). POSIX especifica su shell estndar como un subconjunto estricto del Korn shell.

APLICACIONES DE USUARIO El sistema Unix es un sistema operativo multiusuario. Linux est basado en el sistema Unix. Para que mltiples usuarios puedan hacer uso del sistema de una forma segura y ordenada, es necesario que el sistema disponga de mecanismos de administracin y seguridad para proteger los datos de cada usuario, as como para proteger y asegurar el correcto funcionamiento del sistema.

Cuentas de usuario Para poder utilizar el sistema operativo Unix es necesario disponer de una cuenta de usuario que se compone de nombre de usuario (login) y de contrasea (password). Las cuentas de usuario son creadas por el administrador que en Unix es un usuario especial llamado root (ver ms abajo). Los usuarios debern pertenecer al menos a un grupo de usuarios ya que obligatoriamente deben tener asignado un grupo principal o grupo primario. Cuando un usuario entra en un sistema Unix, debe identificarse indicando su nombre de usuario (en ingls 'login') y su contrasea (en

ingls 'password'). Si se equivoca al introducir su nombre o su contrasea, el sistema le denegar el acceso y no podr entrar.

Inicio de sesin en Linux Una vez se haya identificado de forma satisfactoria, el usuario podr utilizar el sistema y ejecutar todas las aplicaciones que le sean permitidas, as como leer, modificar o borrar aquellos archivos sobre los cuales tenga permiso. Las cuentas de usuario no solo ofrecen al usuario un nombre y una contrasea, tambin le proporciona una ruta para almacenar sus documentos y su perfil generalmente dentro de la carpeta /home/nombre-usuario y comnmente denominada carpeta home del usuario y un intrprete de comandos (shell) que le permitir ejecutar aplicaciones. Cuando el usuario ejecuta una aplicacin, el sistema carga la aplicacin en memoria y la ejecuta. En el argot informtico a las aplicaciones que se estn ejecutando en un momento determinado se les denomina procesos. Los procesos en ejecucin pertenecen a algn usuario. El sistema asigna a los procesos el usuario que los ejecuta. Ejemplo, si el usuario "pepe" ejecuta la aplicacin "konqueror", en la lista de procesos del sistema aparecer un nuevo proceso llamado "konqueror" cuyo propietario es "pepe". Obligatoriamente, todos los procesos del sistema pertenecen a algn usuario. Ejecutando el comando 'ps aux' podemos ver todos los procesos en ejecucin. Si ejecutamos el comando 'top' lo veremos a tiempo real.

Mostrando procesos con top. La segunda columna indica el propietario Cuando se crea un nuevo archivo, el propietario del archivo ser el usuario que lo ha creado y el grupo del archivo ser el grupo principal de dicho usuario. Ejemplo, si "pepe" cuyo grupo principal es "profes" crea un nuevo archivo llamado examen.txt, el propietario de examen.txt ser "pepe" y el grupo propietario ser "profes", o lo que es lo mismo, el archivo pertenecer al usuario pepe y al grupo profes. Obligatoriamente, todos los archivos del sistema pertenecen a algn usuario y a algn grupo.

examen.txt pertenece al usuario pepe y al grupo profes La cuenta de usuario le permite acceder al sistema tanto de forma presencial (sentado delante del ordenador) como de forma remota accediendo desde otro equipo por la red. Los permisos que tiene el usuario cuando utiliza el sistema presencialmente son los mismos que tiene cuando lo hace remotamente. Lo habitual es utilizar el sistema de forma remota ya que al ser Unix un sistema multiusuario, la nica forma de que varios usuarios lo utilicen de forma simultnea es remotamente. El sistema Unix codifica los usuarios con un nmero diferente a cada uno que es el identificador de usuario (uid = User IDentifier). Internamente el sistema trabaja con el uid, no con el nombre del usuario. Normalmente a los usuarios que creemos se les asignan uids desde 1000 en adelante. Los nmeros uid menores que 100 se reservan para usuarios especiales del sistema. En Unix por defecto, la informacin de los usuarios de un sistema se guarda en el archivo /etc/passwd. Es un archivo de texto que puede visualizarse con cualquier editor. Cada linea del archivo /etc/passwd almacena los parmetros de un usuario. Solo puede modificarlo el administrador (root). A continuacin mostramos el archivo passwd:

Volcado del archivo /etc/passwd Las contraseas de cada usuario se guardan encriptadas con un sistema de codificacin irreversible, en el archivo /etc/shadow que tambin es un archivo de texto.

Volcado del archivo /etc/shadow

Grupos de usuarios Para poder administrar los permisos de los usuarios de una forma ms flexible, el sistema Unix permite la organizacin de usuarios en grupos y establecer permisos a los grupos. Ejemplo, si en un centro educativo el grupo "profesores" tiene acceso a ciertas carpetas, cuando demos de alta un profesor nuevo, tan solo tendremos que aadirle al grupo "profesores" para que pueda acceder a todas esas carpetas. Es lo que se denomina administracin de permisos por grupos. Todos los usuarios pertenecen al menos a un grupo que es el grupo principal del usuario, tambin llamado grupo primario del usuario, pero pueden

pertenecer a ms grupos. En caso de que pertenezcan a ms grupos, stos sern grupos secundarios.

Todo usuario debe pertenecer a un grupo principal obligatoriamente Los grupos pueden contener varios usuarios. Los grupos de usuarios solo pueden contener usuarios, nunca podrn contener a otros grupos. El sistema Unix codifica los grupos de usuarios con un nmero diferente a cada uno que es el identificador de grupo (gid = Group IDentifier). Internamente el sistema trabaja con el gid, no con el nombre del grupo. Normalmente a los grupos que creemos se les asignan gids desde 1000 en adelante. Los nmeros gid menores que 100 se reservan para grupos especiales del sistema. En Unix por defecto, la informacin de los grupos de un sistema se guarda en el archivo /etc/group. Es un archivo de texto que puede visualizarse con cualquier editor. Cada lnea del archivo /etc/group almacena los parmetros del grupo y los usuarios que contiene. Solo puede modificarlo el administrador (root). Las contraseas de los grupos se guardan encriptadas con un sistema de codificacin irreversible, en el archivo /etc/gshadowque tambin es un archivo de texto.

Usuario root El usuario root, a veces llamado supe usuario, es el usuario administrador del sistema. Est identificado con el nmero de usuario cero (uid=0) y tiene

permisos sobre todo el sistema sin ningn tipo de restriccin. El usuario root puede acceder a cualquier archivo, ejecutar, instalar y desinstalar cualquier aplicacin, modificar los archivos de configuracin del sistema y administrar usuarios. Si dispones de la contrasea de root tendrs control total sobre todo el sistema.

Anda mungkin juga menyukai