Contenido Núcleo o Kernel

Anuncio
V 1.0
República Bolivariana de Venezuela
Aldea Universitaria Liceo Fray Pedro de Agreda
Trayecto I
Introducción a la Programación III
Prof. Elías Cisneros
Prof. Juan Cisneros
Introducción a Sistemas Operativos
Guía II
Contenido
Núcleo o Kernel.........................................................................................................................................1
Línea de Comandos o Shell.......................................................................................................................3
Algunos sistemas operativos comerciales..................................................................................................4
GNU / Linux..............................................................................................................................................4
Sistemas de Archivos Linux......................................................................................................................5
Documentación del sistema en línea..........................................................................................................7
Comandos básicos Linux...........................................................................................................................7
Núcleo o Kernel
En informática, el núcleo (también conocido en español con el anglicismo kernel, de raíces germánicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el núcleo también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. En el siguiente gráfico se muestra el esquema de relaciones por capas del computador.
1
V 1.0
En informática, el núcleo de un sistema operativo, es el programa informático que se asegura de:
• La comunicación entre los programas informáticos y el hardware. • Gestión de los distintos programas informáticos (tareas) de una máquina. • Gestión del hardware (memoria, procesador, periférico, forma de almacenamiento, etc.) La mayoría de los sistemas operativos se construyen en torno al concepto de núcleo. La existencia de un núcleo, es decir, de un único programa responsable de la comunicación entre el hardware y el programa informático, resulta de compromisos complejos referentes a cuestiones de resultados, seguridad y arquitectura de los procesadores. El núcleo tiene grandes poderes sobre la utilización de los recursos materiales (hardware), en particular, de la memoria. En la siguiente figura se observa más detalladamente las capas operativas de un sistema de computación.
2
V 1.0
Línea de Comandos o Shell
Intérprete de órdenes, Intérprete de línea de mandatos, Intérprete de comandos, Terminal, Consola, Shell ó su acrónimo en idioma 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 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. A continuación se muestra un ejemplo de línea de comandos.
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. 3
V 1.0
Algunos sistemas operativos comerciales
●
●
●
●
●
●
●
●
Linux.
Debian ( Distribución basada en Kernel de Linux).
Ubuntu ( Distribución basada en Debian).
Microsoft Windows 2000.
Microsoft Windows XP.
Microsoft Windows Vista.
Sun Microsystems Solaris.
UNIX.
GNU / Linux
Linux (también conocido como GNU/Linux) es un sistema operativo Unix­Like (igual a unix) que se distribuye bajo la Licencia Pública General de GNU (GNU GPL), es decir que es software libre. Su nombre proviene del Núcleo de Linux, desarrollado desde 1991 por Linus Torvalds. Es usado 4
V 1.0
ampliamente en servidores y super­computadores y cuenta con el respaldo de corporaciones como Dell, Hewlett­Packard, IBM, Novell, Oracle, Red Hat y Sun Microsystems.
Puede ser instalado en gran variedad de hardware, incluyendo computadores de escritorio y portátiles (PCs x86 y x86­64 así como Macintosh y PowerPC), computadores de bolsillo, teléfonos celulares, dispositivos empotrados, videoconsolas (Xbox, PlayStation 3, PlayStation Portable, Dreamcast, GP2X) y otros (como enrutadores o reproductores de audio digital como el iPod).
Las variantes de estos sistemas se denominan "distribuciones" y su objetivo es ofrecer una edición que cumpla con las necesidades de determinado grupo de usuarios. Algunas son gratuitas y otras de pago, algunas insertan software no libre y otras contienen solo software libre. La marca registrada Linux (Número de serie: 1916230 ) pertenece a Linus Torvalds y se define como "un sistema operativo para computadoras que facilita su uso y operación".
Sistemas de Archivos Linux
En GNU/Linux se pueden encontrar estándares como el FHS (Filesystem Hierarchy Standard), el cual explica qué se puede encontrar, o dónde buscarlo, en la estructura del sistema de archivos de nuestro sistema. O el LSB (Linux Standard Base), el cual comenta diferentes componentes que suelen ser encontrados en los sistemas.
En el estándar FHS (Filesystem Hierchachy Standard) se describen la estructura de árbol del sistema de archivos principal (/), donde se especifica la estructura de los directorios y los principales archivos que contendrán. Este estándar se utiliza en mayor o menor medida también para los UNIX comerciales, en los cuales al principio hubo muchas diferencias que hicieron que cada fabricante cambiara la estructura a su gusto. El estándar pensado en un principio para GNU/Linux se hizo para normalizar esta situación y evitar los cambios drásticos. Aun así, el estándar es seguido con diferentes grados, la mayoría de distribuciones siguen en un alto porcentaje el FHS, realizando cambios menores o aportando archivos o directorios que no existían en el estándar.
Un esquema básico de directorios podría ser:
●
/bin: son utilidades de base del sistema, en general programas utilizados por los usuarios, ya sea desde los comandos básicos del sistema, como /bin/ls, listar directorio, pasando por los shells (/
bin/bash), etc.
●
/boot: son los archivos que se necesitan durante el arranque del sistema, por ejemplo la imagen del kernel Linux, en /boot/vmlinuz.
●
/dev: aquí se encuentran los archivos especiales que representan los dispositivos posibles en el sistema, el acceso a los periféricos en sistemas UNIX se hace como si fueran periféricos. 5
V 1.0
También se pueden encontrar archivos como /dev/console, /dev/modem, /dev/mouse, /dev/cdrom, /dev/floppy, los cuales son en general, enlaces a dispositivos más específicos del tipo de controlador o interfaz que utilizan los dispositivos: /dev/mouse fi /dev/psaux, un ratón de tipo PS2; o /dev/cdrom fi /dev/hdc,un CD­ROM que es un dispositivo del segundo conector IDE y máster. Aquí se encuentran los dispositivos IDE como /dev/hdx, los scsi /dev/sdx, ... con x variando según el dispositivo.
/etc: son archivos de configuración. La mayoría de tareas de administración necesitarán examinar o modificar los archivos contenidos en este directorio. Por ejemplo: /etc/passwd contiene la información de las cuentas de los usuarios del sistema.
●
●
/home: aquí se encuentran las cuentas de los usuarios, es decir, los directorios personales de cada usuario.
●
/lib: son las bibliotecas del sistema, compartidas por los programas de usuario, ya sean estáticas (extensión .a) o dinámicas (extensión .so). Por ejemplo, la biblioteca C estándar, en archivos libc.so o libc.a.
●
/mnt: este es el punto para montar, comando mount, los sistemas de archivos extraíbles; por ejemplo: /mnt/cdrom, para montar el lector de CD­ROM.
●
/opt: con esto se coloca, en general, el software añadido al sistema posterior a la instalación; otra instalación válida es en /usr/local.
/sbin: son utilidades de base del sistema. Son normalmente comandos reservados para el administrador (root). Por ejemplo: /sbin/fsck para verificar el estado de los sistemas de archivos.
●
●
/tmp: son archivos temporales de las aplicaciones o del propio sistema.
●
/usr: son los diferentes elementos instalados en el sistema. Aquí se instala cualquier software de sistema más completo, además de los complementos multimedia, como iconos, imágenes, sonidos, por ejemplo en: /usr/share, y la documentación del sistema (/usr/doc. Esto se suele utilziar también en /usr/local para instalar algún software.
●
/var: son los archivos de registro de sesión o de estado, los archivos de tipo log, y/o los errores del propio sistema y de diversos servicios, tanto locales como de red. Por ejemplo, los archivos de sesión en /var/log, los contenido de los mails en /var/spool/mail, o los trabajos de impresión en /var/spool/lpd.
6
V 1.0
Documentación del sistema en línea
Uno de los aspectos más relevantes para las tareas de soporte es contar con la documentación correcta para el sistema y el software instalado. Existen muchas fuentes de información, pero se destacarán las presentadas a continuación:
●
man es la ayuda por excelencia. Ésta permite consultar el manual de GNU/Linux, que se encuentra agrupado en varias secciones, correspondientes a comandos de administración, formatos de archivos, comandos de usuario, llamadas de lenguaje C, etc. Normalmente, para obtener la ayuda asociada con este elemento sólo se necesita: man comando En cada página se describe el comando junto con sus opciones y, en general, algunos ejemplos de su uso. Algunas veces, puede existir más de una entrada en el manual. Por ejemplo, puede que haya una llamada C con igual nombre que un comando; en este caso, hay que especificar qué sección se desea revisar:
man n comando siendo n el número de sección.
También, existen unas cuantas herramientas de exploración de los manuales, por ejemplo xman y tkman, que por medio de la interfaz gráfica hacen más fácil el análisis de las diferentes secciones, así como de los índices de los comandos. Otro comando interesante es apropos palabra, que nos puede servir para localizar páginas man que traten un tema específico, en general, asociado con la palabra buscada.
Documentación de las aplicaciones: aparte de ciertas páginas man, es normal incluir algo de documentación extra en las aplicaciones, ya sea en forma de manuales o tutoriales, o simples guías de usuario. En general, estos componentes de documentación se instalan en el directorio /usr/doc, en donde se crea un directorio por paquete de aplicación.
Sistemas propios de las distribuciones. Debian presenta los manuales como un paquete de software más y suelen instalarse en /usr/doc. Por otro lado, dispone de herramientas que clasifican la documentación presente en el sistema, y la organizan por menús para su visualización, como dwww o dhelp, las cuales presentan interfaces Web para revisar la documentación del sistema.
Comandos básicos Linux
Ahora es importante conocer algunos comandos básicos, para esto pruebe los siguientes comandos desde su cuenta de usuario:
● pwd ­­> muestra el nombre del directorio actual de trabajo.
● whoami ­­> muestra el nombre del usuario actual.
7
V 1.0
Manejando archivos y directorios
Comando ls
Lista el contenido del directorio en el que nos encontramos. Si ponemos sólo ls se obtiene una lista con el nombre de los archivos; si se quiere obtener más información sobre esos archivos se utilizan las opciones del comando, cuya sintaxis general es: ls [­alsF] archivo
●
●
●
●
●
­a ­­> lista además los archivos invisibles (es decir, los que empiezan por punto).
­l ­­> muestra la siguiente información de los archivos :
­s ­­> el tamaño del archivo en kilobytes (1024 bytes) precede al nombre de cada archivo.
­F ­­> Añade un / a los archivos directorios y un * a los archivos ordinarios ejecutables.
archivo ­­> Nombre de un archivo o un directorio.
Algunos Ejemplos:
● ls ­­> lista el contenido de un directorio (archivos comunes y directorios).
● ls ­a ­­> lista el contenido de un directorio (todos los archivos y directorios).
● ls ­A ­­> lista el contenido de un directorio (casi todos los archivos y directorios, es decir, omite los ".." y ".")
● ls ­la ­­> lista todo el contenido de un directorio con información detallada.
● ls ­d ­­> Lista todos los directorios del directorio actual.
● lsof prueba ­­> muestra información sobre el archivo prueba abierto por procesos.
Comando grep
El comando grep busca una cadena de caracteres en uno o más archivos y lista todas las líneas que la contienen. La sintaxis del comando es: grep [­ v l i w n r ] cadena1 archivo(s), donde:
●
­v ­­> lista las líneas que no contienen la cadena de caracteres.
●
­l ­­> lista el nombre del archivo que contiene la cadena de caracteres.
●
­i ­­> ignora la diferencia entre letras mayúsculas y minúsculas.
●
­w ­­> se debe de utilizar cuando la cadena de caracteres es una única palabra.
●
­n ­­> muestra el número de la línea en la que se encuentra la cadena de caracteres.
●
­r ­­> en caso que sea un directorio, para buscar en todos los que dependen de él.
●
cadena ­­> cadena de caracteres que se quiere buscar.
●
archivo(s) ­­> nombre o nombres de los archivos en los que se quiere buscar la
●
cadena de caracteres especificada.
Ejemplos
● Para mostrar todas las líneas que contienen la cadena "tal" en una lista de archivos (donde "*" representa todos los archivos en el directorio actual):
grep tal * 8
V 1.0
●
●
●
●
●
Para mostrar todas las líneas que no contengan la cadena "tal", se usa "­v":
grep ­v tal * Para mostrar sólo el nombre de tales archivos, se usa "­l":
grep ­l tal * Para buscar recursivamente, no sólo en los archivos del directorio actual sino también en los de sus subdirectorios (donde "." representa el directorio actual), se usa "­r":
grep ­r tal . La opción ­r puede no estar disponible en todas las plataformas Unix.
Para buscar todas las líneas que comienzan por "Ahora" y terminan con "siempre" seguido de una cantidad arbitraria de espacio en blanco (nótese que el carácter ^ representa el inicio de la línea, así como $ representa el final):
grep '^Ahora.*siempre *$' Para hacer que grep lea de la entrada estándar, no se especifica archivo alguno. Por ejemplo, como ps ­ef lista todos los procesos actualmente en ejecución, el siguiente comando imprime todos los procesos que está ejecutando el usuario actual:
ps ­ef | grep $USER ó ps ­efa | grep $USER ( Mostrará las cuentas de usuarios que presenten actividad en ese momento). Comando more
El comando more se utiliza para editar archivos por la pantalla; la principal diferencia con cat es que se puede controlar el número de líneas que aparecen en pantalla, utilizando las teclas siguientes:
●
Barra Espaciadora ­­> se avanza una página.
●
Tecla Return ­­> se avanza una línea.
●
Tecla DEL ó q se sale de la edición.
●
La sintaxis de este comando es: more [­cd] [+número de líneas] [+/path] archivo(s) donde
­c ­­> edita pantalla a pantalla.
­d ­­> número de líneas que se van a editar.
+número de líneas ­­> número de la línea a partir de la cual se va a editar.
+/path ­­> path correspondiente al archivo que se va a editar.
archivo(s) ­­> Nombre o nombres de los archivos que se van a editar.
●
●
●
●
●
Por ejemplo: more ­c10 +25 +/usr/share/doc/gedit/README mostrará 10 líneas, empezando por la 25, del archivo llamado README que se encuentra en el directorio /usr/share/doc/gedit. También se puede usar con otros comandos para paginar la salida por pantalla.
Comando cp
El comando cp se utiliza para copiar archivos. Su sintaxis es:
cp [­i] archivo_entrada archivo_destino
9
V 1.0
●
●
●
●
­i ­­> origina que el comando requiera una confirmación, en el caso de que el archivo destino ya exista; es decir, pregunta si se desea hacer la copia.
­r ­­> para copiar un directorio completo.
archivo_entrada ­­> nombre del archivo que se va a copiar.
archivo_destino ­­> nombre del archivo en el que se va a copiar el contenido del archivo de entrada
Comandos du, df ­h, fdisk ­l
Uso estimado del directorio y espacio disponible du ­s /home/vcasti df ­h Comando rm
El comando rm se utiliza para borrar archivos. La sintaxis de este comando es:
rm [­i] archivo(s)
● ­i ­­> origina que el comando requiera confirmación para ejecutarse. Esta opción se debe de utilizar para pedir confirmación antes de proceder al borrado.
● archivo(s) ­­> nombre o nombres de los archivos que se van a borrar.
Comando mv
El comando mv se utiliza para renombrar archivos; es decir, el contenido del archivo no cambia, sólo cambia el nombre; o para mover archivos entre directorios. La sintaxis del comando es: mv [­i]. archivo_entrada archivo_destino
● ­i ­­> origina que el comando requiera una confirmación, en el caso de que el archivo destino ya exista; es decir, pregunta si se desea hacer la copia.
● archivo_entrada ­­> nombre del archivo que se va a renombrar.
● archivo_destino ­­> nombre del archivo en el que se va a copiar el contenido del archivo de entrada.
Nota: en el caso de que el archivo destino exista, ¡lo sobreescribe!
Comando pwd
Este comando pwd muestra la ruta completa del directorio en el que estamos.
usuario@pc001:~$ pwd
usuario@pc001:~$ /home/usuario
Comando cd
El comando cd nos permite movernos entre directorios. Ejemplos de su uso:
● cd nombre_directorio ­­> cambia al directorio nombre_directorio del directorio actual o del directorio que figura en la variable CDPATH.
10
V 1.0
●
●
●
●
●
●
cd / ­­> cambia al directorio raíz.
cd ­­> cambia al directorio personal del usuario actual.
cd /nombre_directorio ­­> cambia al directorio /nombre_directorio
cd .. ­­> cambia al directorio padre.
cd ~prueba ­­> cambia al directorio prueba del directorio personal del usuario.
cd ­ ­­> cambia al directorio anterior.
Comando mkdir
Comando que permite crear directorios.
Sintaxis: mkdir nombre_directorio ­­> crea un directorio nuevo llamado nombre_directorio en el directorio actual.
Comando rmdir
Borra directorios siempre y cuando el mismo esté vacío. Ejemplo: rm prueba ­­> borra el directorio prueba. Si el directorio no está vacío se puede usar la sintaxis rm ­r directorio
Comando gzip
gzip es el compresor por excelencia en cualquier sistema Unix. Operaciones básicas:
● Comprimir un archivo: gzip [­n] archivo (siendo n un número del 1 al 9), 1 más rapido,
● 9 más comprimido.
● Descomprimir un archivo: gzip ­d archivo.gz
● También existe otro compresor, bzip2, que a pesar de ser mas lento es bastante más
● eficiente. La sintaxis es prácticamente la misma, solo que el sufijo del archivo es .bz2
Ejemplo:
● bzip2 prueba ­­> comprime prueba para crear prueba.bz2 (mejor compresión que gzip).
● bunzip2 prueba.bz2 ­­> descomprime prueba.bz2 para crear prueba
● En cualquier caso, la forma estándar de juntar y comprimir varios archivos consiste en hacer un .tar con todos ellos y luego comprimir el archivo con gzip
Comando tar
tar es la forma estándar de hacer un volumen de archivos (un archivo que contiene varios archivos). Hay que notar que tar no comprime el volumen resultante. Somos nosotros los que elegimos el algoritmo de compresión mediante otro programa (normalmente gzip). Sintáxis básica: tar [OPERACIONES Y OPCIONES] archivos_involucrados
Operaciones básicas:
● Creación de un volumen: tar ­cf archivo.tar archivo_o_dir1 [archivo_o_dir2] ...
● Añadir archivos a un volumen: tar ­rf archivo.tar archivo_o_dir1 [archivo_o_dir2] ....
● Extraer archivos de un volumen: tar ­xf archivo.tar [archivo_o_dir1] [archivo_o_dir2]
● Listar los archivos contenidos: tar ­tf archivo.tar
Algunos Ejemplos:
11
V 1.0
●
●
●
●
●
●
tar ­xvvf prueba.tar ­­> extrae los archivos de prueba.tar
tar ­xvvzf prueba.tar.gz ­­> extrae los archivos prueba.tar.gz
tar ­xvvf ­­bzip2 prueba.tar.bz2 ­­> extrae los archivos de prueba.tar.bz2.
tar ­cvvf prueba.tar prueba/ ­­> empaqueta el contenido de la carpeta prueba/ en prueba.tar.
tar ­cvvzf prueba.tar.gz prueba_uno/ ­­> empaqueta el contenido de la carpeta prueba/ en el archivo comprimido prueba_uno.tar.gz.
tar ­cvvf ­­bzip2 prueba.tar.bz2 prueba_uno/ ­­> empaqueta el contenido de la carpeta prueba_uno/ en el archivo comprimido prueba.tar.bz2
Comando gunzip
Es muy común encontrarse en internet este tipo de formato y es tan fácil de descomprimir con solo colocar en el interprete de comandos: gunzip nombre_del_archivo.gz
Ejemplos:
gunzip prueba.gz ­­> descomprime prueba.gz para crear prueba.
Comando ln
En Linux pueden definirse enlaces a elementos del sistema de archivos para poder acceder a ellos desde distintos lugares en la jerarquía. Un enlace no es más que un nombre que apunta a un determinado recurso del sistema de archivos, sea físico o lógico. Debido a esto se clasifican en dos tipos:
Fuertes o duros: son aquellos que no se diferencian en nada del archivo original.
Realmente un archivo existe físicamente (ocupa una zona en algún dispositivo de almacenamiento) y su nombre no es más que un enlace fuerte a él. Si se creara otro enlace fuerte, solo se estaría apuntando a la misma zona física a través de otro nombre. De esta forma se obtendrían dos o más copias lógicas de un archivo, pero solo habría una copia física. De aquí se deduce que un archivo no desaparece físicamente hasta que no se borren todos los enlaces fuertes que apunten a él. Los enlaces duros a un archivo determinado se almacenan en la estructura del i­nodo que lo representa. Si modificamos un archivo, los mismos cambios aparecerán en cualquier enlace fuerte. Imaginemos que queremos compartir en red un archivo situado en nuestro directorio de trabajo, pero que no queremos compartir todo el directorio. La solución más simple consiste en crear un enlace fuerte desde dentro de un directorio que sí queramos compartir.
Simbólicos o débiles: son apuntadores al nombre del archivo, no a su contenido. Si desaparece el archivo original (todos los enlaces duros a este) los enlaces simbólicos correspondientes quedan inconsistentes.
No se pueden crear enlaces fuertes a directorios, ni a archivos en particiones distintas. Para crear enlaces se emplea el comando ln.
12
V 1.0
Sintaxis: ln [opciones] archivo_o_directorio [nombre_del_enlace]
Opción:
­s ­­> se utiliza para crear enlaces simbólicos en lugar de fuertes (como es por defecto).
Es importante destacar que el nombre del archivo o el directorio al que queremos hacer el enlace debe escribirse con todo el path, es decir, "/ruta_al_archivo/archivo"
Ejemplos:
● ln ­s /home/pepe/public_html/raiz.html index.html ­­> hace que al acceder al archivo "index.html" nos envíe al archivo "raiz.html".
● ln ­s /usr/bin /binarios ­­> si entramos en el directorio "/binarios" nos enviará al directorio "/usr/bin"
Actividades de estudios independientes
Revisar los siguientes recursos disponibles en Internet
Windows XP
http://es.youtube.com/watch?v=3T2l2nExMlw
Ubuntu
http://es.youtube.com/watch?v=eYU4QA­ddOA
Debian
http://es.youtube.com/watch?v=684OLRsTrrs
Windows Vista vs Ubuntu
http://es.youtube.com/watch?v=xC5uEe5OzNQ
Lecturas
http://es.wikipedia.org/wiki/N%C3%BAcleo_(inform%C3%A1tica)
http://es.wikipedia.org/wiki/L%C3%ADnea_de_comandos
http://es.wikipedia.org/wiki/Linux
13
Descargar