Archivo del blog

Mostrando entradas con la etiqueta UF1465. Mostrar todas las entradas
Mostrando entradas con la etiqueta UF1465. Mostrar todas las entradas

lunes, 13 de marzo de 2017

Dale vida a tus scripts con Zenity

Hace tiempo que quiero hablaros de esta pequeña pero matona herramienta llamada Zenity, que nos ayuda a ponerle una interfaz gráfica a nuestro scripts mediante funciones, menús o cajas de diálogos ya preconfigurados y combinables entre sí.
En ella podemos encontrar diálogos de calendario, formularios, listas, cuadros de mensajes o alertas, selección de archivos, entrada de texto, barra de progresos, iconos de notificación, etc.
Zenity es una herramienta de GNOME que podemos descargar desde este enlace, pero que está en los repositorios de algunas distribuciones y en otras como Ubuntu ya está instalado por defecto.
Veamos algunos ejemplos de lo que podemos hacer con Zenity. Para ello abrimos nuestro terminal y tecleamos lo siguiente:
zenity --calendar

zenity --password --username

zenity --scale

zenity --width=360 --height=320 --list --title "Ejemplo" --column file "Visita LinuxZone"

zenity --question --width=350 --height=120 --title "El sistema encontró un error critico" --ok-label="Definitivamente" \
--cancel-label="Sí" --text "Windows se encuentra instalado en su disco. ¿Desea desinstalarlo?" ; echo $


Por supuesto esto solo es el marco, lo que queremos que aparezca dentro eso ya depende de nosotros. Por ejemplo, vamos a crear en unos pocos pasos un lanzador con tres sencillas funciones, que nos abra una aplicación, que nos abra una carpeta y que nos lleve a una página web, con la ayuda del comando xdg-open. Abre un editor y escribe lo siguiente:
#!/bin/bash
file=$(zenity –width=360 –height=320 –list –title “Lanzador” –column Acciones “Abrir Gedit” “Abrir carpeta Música” “Ir a LinuxZone”)
if [ “$file” = “Abrir Gedit” ]; then
/usr/bin/gedit
elif [ “$file” = “Abrir carpeta Música” ]; then
xdg-open ~/Música/
elif [ “$file” = “Ir a LinuxZone” ]; then
xdg-open http://linuxzone.es/
else
exit 0
fi
Le ponemos el nombre que queramos, seguido de la extensión .sh y le damos permisos de ejecución.

Como vemos, tan solo hay que seleccionar una de las opciones y le damos a aceptar para que la ejecute.
Pero tal vez no te guste ese dialogo y prefieras una pantalla de selección en la que puedas abrir varias opciones de golpe, pues nada más sencillo, solo tenemos que añadir otra columna y la función –checklist, que podemos ponerla marcada (TRUE) o desmarcada (FALSE) por defecto:
#!/bin/bash
file=$(zenity –width=360 –height=320 –title “Lanzador” –list –column=”” –column=”Acciones” –checklist FALSE “Abrir Gedit” FALSE “Abrir carpeta Música” TRUE “Ir a LinuxZone”)
if [ “$file” = “Abrir Gedit” ]; then
/usr/bin/gedit
elif [ “$file” = “Abrir carpeta Música” ]; then
xdg-open ~/Música/
elif [ “$file” = “Ir a LinuxZone” ]; then
xdg-open http://linuxzone.es/
else
exit 0
fi

En este enlace disponen de varios ejemplos de cuadros de dialogo y muchas opciones para experimentar. Así que ya sabes, si le quieres dar mas vistosidad a tus scripts o simplemente te has animado a empezar a hacer tus “pinitos” en bash, sin duda Zenity te lo pone fácil.
Proyecto Zenity

Este es un post continuo de Un ejemplo de diálogo de zenidad completa 1 , en este post cubriremos el diálogo de zenidad para el progreso, pregunta, advertencia, escala, información de texto y lista.
¿Cómo crear el diálogo de progreso zenity?
El diálogo de progreso es hacer un seguimiento de una progresión de una rutina, puede ser cualquier cosa, digamos que quiero almacenar la lista de resultados de archivos abiertos (lsof) en una llamada de archivo lsof.txt, y utiliza el progreso zenity para realizar un seguimiento de la progresión, lo hago :
gksudo lsof | tee >(zenity --progress --pulsate) >lsof.txt 


Tengo que usar tee, porque sin usar tee, zenity se despojará de mi resultado. Echa un vistazo a los ejemplos de tee para obtener más información.
¿Cómo crear diálogo de preguntas de zenidad?
 zenity --question --text "Are you sure you want to shutdown?"; echo $? 
Como echo $? Devuelve el resultado 0 significa que el usuario presiona yes, 1 significa cancel.

¿Cómo crear un diálogo de advertencia de zenidad?
 zenity --warning --text "This will kill, are you sure?";echo $? 

¿Cómo crear el diálogo de la escala de la zenidad?
Diálogo de escala le permite establecer un rango de número, por lo que el usuario es fuerza para elegir un número dentro del rango.
 ans=$(zenity --scale --text "pick a number" --min-value=2 --max-value=100 --value=2 --step 2);echo $ans 

¿Cómo crear un diálogo de información de texto de zenity?
La información de texto puede ser muy útil para mostrar texto a una GUI. Utilizo de nuevo los ejemplos lsof, pero esta vez alimentar los resultados al cuadro de información de texto.
 gksudo lsof | zenity --text-info --width 530 

Como puede ver, puede especificar el ancho y la altura de un diálogo de zenidad. Demasiado malo, el cuadro de diálogo de información de texto no tiene opción para deshabilitar el ajuste de texto y especificó qué tipo de letra utilizar.
¿Cómo crear el diálogo de lista de zenity?
El diálogo de lista es el diálogo más flexible y he gastado bastante a veces para utilizar el uso. Como puede generar varias columnas, selección múltiple, lista de comprobación, radiolist, etc. checkout -help-list para más información.
Esto es para radiolista:
 ans=$(zenity --list --text "Is linux.byexamples.com helpful?" --radiolist --column "Pick" --column "Opinion" TRUE Amazing FALSE Average FALSE "Difficult to follow" FALSE "Not helpful"); echo $ans 

Primero debe definir columnas, luego alimentar todas las opciones de lista una por una.
Esto es para la lista de verificación:
 ans=$(zenity --list --text "How linux.byexamples can be improved?" --checklist --column "Pick" --column "options" TRUE "More pictures" TRUE "More complete post" FALSE "Includes Installation guidelines" FALSE "Create a forum for question queries" --separator=":"); echo $ans 

El resultado de este tiempo será largo y probablemente más de uno, por lo que puede spefify un separador para diferenciarlos.

Preámbulo

Uno de los errores más comunes cuando se aprende a utilizar los scripts “bash” bajo GNU/Linux para leer un archivo línea por línea, es el utilizar un bucle “for”, (for line in $(cat file.txt); do ...) lo que conduce a una evaluación de cada palabra y no de cada línea, que es lo que se busca.

Ejemplo de un bucle “for”:
for line in $(cat file.txt); do echo "$line" ; done
Esta
Es 
La 
Línea
n°
1
Esta
Es 
La 
Línea
n°
2
Esta
[...]

La solución consiste en utilizar un bucle “while” asociado al comando interno “read”.

Sin embargo, también podemos obtener el mismo resultado con un bucle “for” con la condición de que cambiemos el valor de la variable "$IFS" (Internal Field Separator, separador de campo interno) antes de ejecutar el bucle. Es lo que veremos a continuación.

Bucle while

El bucle “while” sigue siendo el método más apropiado y simple para leer un archivo línea por línea.

Sintaxis

while read linea
do
   comando
done < archivo


Ejemplo

El archivo de inicio:
Esta es la línea n° 1
Esta es la línea n° 2
Esta es la línea n° 3
Esta es la línea n° 4
Esta es la línea n° 5

Las instrucciones en línea de comandos:
while read line; do echo -e "$line\n"; done < file.txt

o en un script “bash”:
#! /bin/bash

while read line
do 
   echo -e "$line\n"
done < file.txt

La salida en la pantalla será (stdout):
Esta es la línea n° 1
Esta es la línea n° 2
Esta es la línea n° 3
Esta es la línea n° 4
Esta es la línea n° 5


Trucos

También podemos a partir de un archivo estructurado (como una libretas de direcciones o /etc/passwd por ejemplo) obtener los valores de cada campo y asignarlos a varias variables con el comando “read”. Sin embargo hay que tener cuidado de asignar a la variable “IFS” el separador de campo adecuado (espacio por defecto).

Ejemplo:
#! /bin/bash

while IFS=: read user pass uid gid full home shell
do
echo -e "$full :\n\
 Pseudo : $user\n\
 UID :\t $uid\n\
 GID :\t $gid\n\
 Home :\t $home\n\
 Shell :\t $shell\n\n"
done < /etc/passwd


Complemento

while read i; do echo -e "parametro : $i"; done < <(echo -e "a\nab\nc")


Bucle for

Si bien es cierto que el bucle “while” es el método más simple, sin embargo este tiene un gran inconveniente, el de eliminar el formateado de las líneas y especialmente los espacios y tabulaciones.
Felizmente el bucle “for” asociado a un cambio de IFS permite conservar la estructura del documento a la salida.

Sintaxis

oldIFS=$IFS     # conserva el separador de campo
IFS=$'\n'     # nuevo separador de campo, el caracter fin de línea
for línea in $(cat archivo)
do
   comando
done
IFS=$old_IFS     # restablece el separador de campo predeterminado

¿Cómo se puede comprobar en un script de Bash si el contenido de una variable es un número?

Una posible solución sería utilizar una expresión regular como la siguiente:



Esta expresión regular tiene en cuenta los números enteros, los decimales y los números negativos. Si necesitas una comprobación más simple, puedes utilizar las siguientes expresiones regulares alternativas:

    ^[0-9]+$, números enteros positivos.
    ^[0-9]+([.][0-9]+)?$, números enteros o decimales positivos.

¿Cómo comprobar si una variable de Bash contiene una determinada cadena de texto?




Sed – Eliminar una o varias líneas de un fichero

Sintaxis

sed '{[/]<n>|<cadena>|<regex>[/]}d' <nombre_ fichero>
sed '{[/]<direccion1>[,<direccion2>][/]d' <nombre_fichero

/.../ = delimitadores
n = el número de línea
cadena = la cadena contenida en la línea
regex = expresión regular correspondiente a la ocurrencia buscada
direccion = la dirección de una línea (número u ocurrencia)
d = delete (borrar)

Ejemplos
Eliminación de la 3ra línea

sed '3d' mi_fichero.txt

Eliminación de la línea conteniendo la cadena "awk"

sed '/awk/d' mi_fichero.txt

Eliminación de la última línea

sed '$d' mi_fichero.txt

Eliminación de todas las líneas vacías

sed '/^$/d' mi_fichero.txt
sed '/./!d' mi_fichero.txt


Eliminación de la línea conteniendo una expresión regular
(aquí se elimina la línea conteniendo caracteres numéricos (al menos 1 cifra) situados al final de la línea)

sed '/[0-9/][0-9]*$/d' mi_fichero.txt

Eliminación del intervalo comprendido entre las líneas 7 y 9

sed '7,9d' mi_fichero.txt

Lo mismo pero esta vez la dirección es reemplazada por una ocurrencia

sed '/-Inicio/,/-Fin/d' mi_fichero.txt

Nota
Los ejemplos precedentes únicamente modifican la visualización del archivo (salida estándar 1 = la pantalla).
Para realizar modificaciones permanentes, en las antiguas versiones (<4) utilizar un fichero temporal, para GNU sed utilizar el parámetro "-i[sufijo]" (--in-place[=sufijo]), como en el ejemplo siguiente:

sed -i".bak" '3d' mi_fichero.txt

No mostrará el resultado en la salida estándar, y modificará el fichero original "mi_fichero.txt" eliminando la 3ra línea y creará un fichero de respaldo llamado "mi_fichero.txt.bak"
Fichero a ser utilizado en los ejemplos (mi_fichero.txt):


Eliminar caractéres

tr -d "\n" < fichero.txt > fichero2.txt
tr ',' '.' < fichero2.txt > fichero3.txt

¿Cómo dividir en bash una cadena mediante un delimitador específico?

La solución más sencilla para dividir la cadena y convertirla en un array sería el siguiente código:

IN="bla@some.com;john@home.com"
arrIN=(${IN//;/ })

Otra posible solución consiste en utilizar la variable IFS (Internal Field Separator). Al cambiar el valor de esta variable en un comando, los cambios afectan solamente a ese comando, así que no tiene efectos secundarios. El resultado sería:

IFS=';' read -ra ADDR <<< "$IN"
for i in "${ADDR[@]}"; do
    # procesar "$i"
done

Una generalización de la solución anterior sería:

while IFS=';' read -ra ADDR; do
    for i in "${ADDR[@]}"; do
        # procesar "$i"
    done
done <<< "$IN"

 













viernes, 10 de marzo de 2017

Linux : copias de seguridad

En este apartado vamos a ver cómo utilizar el comando tar con una serie de opciones específicas que permiten emplearlo para la realización de copias de seguridad.

Por otro lado, también vamos a estudiar el programa AMANDA, el cual utilizaremos para implementar políticas de seguridad utilizando la arquitectura cliente/servidor.

tar

El comando tar puede utilizarse como alternativa para hacer copias de seguridad de nuestro sistema de ficheros. En tal caso, es importante tener en cuenta que si un usuario modifica un fichero a la vez que tar lo está archivando es muy probable que la copia de seguridad no se realice correctamente y la recuperación del fichero falle.
Existen dos opciones especiales en la orden tar para hacer copias de seguridad, y son:
--listed-incremental=fichero-de-registro ó -g fichero-de-registro
--incremental ó -G
Estas opciones permiten crear y manipular información que registra los ficheros que han intervenido en el backup.
La opción -g (--listed-incremental) incluye el fichero donde tar registrará qué ficheros fueron modificados, añadidos y borrados desde el último backup, para así tenerlo en cuenta en la siguiente copia de seguridad y sólo incluir las modificaciones.

Creación de una copia de seguridad completa o de nivel 0:

Si quisiéramos crear una copia de seguridad completa del directorio /home sobre el fichero /var/backups/completa.tgz debemos ejecutar la siguiente orden:
# tar -czf /var/backups/completa.tgz -g /var/backups/backup.info /home
La clave para que el backup sea de nivel 0 es que el fichero /var/backups/completa.info no exista y entonces se cree por primera vez. En dicho fichero se registrarán todos los archivos que han intervenido en la copia.
Si el fichero /var/backups/completa.info existiera y quisiéramos hacer un backup de nivel 0, simplemente tendríamos que borrarlo.

Creación de copias de seguridad diferenciales:

Para hacer una copia de seguridad diferencial días después de haber hecho una copia total, tendríamos que ejecutar lo siguiente:
# tar -czf /var/backups/diferencial.tgz -g /var/backups/backup.info /home
donde el fichero backup.info contiene inicialmente la información generada por el backup total previo.
En este caso, sólo se copiarán en diferencial.tgz las modificaciones (ficheros nuevos y actualizados) desde la copia total, y en backup.info se añadirá la metainformación necesaria para registrar los ficheros que han intervenido, es decir, los ficheros nuevos, modificados y borrados desde el backup total.
Es el fichero backup.info (generado por la copia de seguridad completa) la base para calcular los cambios producidos en el directorio /home. Es por esto, que si nuestra intención es hacer días después, otra copia de seguridad diferencial, antes del paso anterior deberíamos haber hecho una copia de backup.info original, para que la nueva copia diferencial se vuelva a basar en la metainformación generada por el backup completo. Es decir, para la primera copia diferencial:
# cp /var/backups/backup.info /var/backups/backup-diferencial.info
# tar -czf /var/backups/backup-diferencial.tgz -g /var/backups/backup-diferencial.info /home
y días después para la segunda copia diferencial:
# rm /var/backups/backup-diferencial.tgz /var/backups/backup-diferencial.info
# cp /var/backups/backup.info /var/backups/backup-diferencial.info
# tar -czf /var/backups/backup-diferencial.tgz -g /var/backups/backup-diferencial.info /home

Creación de copias de seguridad incrementales:

Si después de hacer la copia de seguridad total, lo que queremos es ir haciendo copias de seguridad incrementales, lo que debemos hacer es acumular la metainformación sobre el mismo fichero, es decir, backup.info. Así, tras la copia total, para hacer la primera copia incremental:
# tar -czf /var/backups/incremental-1.tgz -g /var/backups/backup.info /home
Para la siguiente copia incremental ejecutaríamos:
# tar -czf /var/backups/incremenl-2.tgz -g /var/backups/backup.info /home
Y así, sucesivamente.

Restauración de la copia de seguridad:

Para restaurar las copias de seguridad usaremos la opción -x junto con la opción -G (--incremental); no será necesario hacer referencia al fichero con los metadatos del backup, pues toda la información para la extracción se encuentra en los ficheros de backup.
Cuando se extrae un fichero de copia de seguridad, el comando tar intenta restaurar el estado exacto del sistema de ficheros que había cuando el fichero se creó, lo que implica borrar aquellos ficheros y directorios que no existían por entonces. Si se utilizan varios niveles de copias de seguridad, para dejar el sistema de ficheros como estaba cuando se realizó el último backup, habrá que restaurar cada uno de los niveles por orden, empezando por el nivel más bajo, el nivel 0. Por ejemplo, en los casos anteriores:
  • Con una copia de seguridad completa y una diferencia:
# tar -xzf /var/backups/completa.tgz -G
# tar -xzf /var/backups/diferencial.tgz -G 
  • Con una copia de seguridad completa y dos incrementales:
# tar -xzf /var/backups/completa.tgz -G
# tar -xzf /var/backups/incremental-1.tgz -G
# tar -xzf /var/backups/incremental-2.tgz -G

Listar el contenido de una copia de seguridad:

Puede obtenerse información extra de los fichero backup generados con tar, es necesario para ello usar la opción -G y dos veces la opción -v, por ejemplo:
# tar -tvvGf i.tgz 
tar: Eliminando la `/' inicial de los nombres
drwxr-xr-x root/root        16 2014-11-23 21:49 /root/tmp/
D d1
D d2
Y h.txt

drwxr-xr-x root/root         9 2014-11-23 14:36 /root/tmp/d1/
N f1
N f2

drwxr-xr-x root/root         5 2014-11-23 21:50 /root/tmp/d2/
Y g1

-rw-r--r-- root/root         0 2014-11-23 21:49 /root/tmp/h.txt
-rw-r--r-- root/root        15 2014-11-23 21:50 /root/tmp/d2/g1
El significado de la D, N e Y que aparecen en el listado anterior es el siguiente:
  • D: Es un directorio
  • Y: Es un fichero almacenado en la copia de seguridad.
  • N: Es un fichero que está en el directorio respaldado pero que no se encuentra en la copia de seguridad por no haber sido modificado.


domingo, 26 de febrero de 2017

UF1465_17: Resumen

TEMA 1
un ordenador es una máquina que procesa información y puede almacenarla, organizarla, recuperarla y transmitirla.

los elementos funcionales del pc son.
la unidad de entrada, los datos deben codificarse en las unidades de entrada como el teclado, escáner, micrófono.
la unidad central de proceso, los datos son sometidos a procesos aritméticos y lógico.
la unidad de salida, para hacer visible los datos.

la unidad central de sistema es la caja que contiene los elementos electrónicos: fuente, ventiladores, placa base, microprocesador y memoria.

los periféricos son los dispositivos que están fuera de la caja.

la fuente de alimentación transforma la corriente alterna en continua.

la memoria : RAM consiste en una memoria de acceso aleatorio y la ROM de solo lectura

el procesador un chip de silicio que contiene un microprocesador que trabaja a una determinada velocidad controlada por un reloj, de él depende la velocidad y la fiabilidad.

los procesadores se diferencian en la forma de procesar la información: CISC maneja bit a bit y RISC maneja agrupaciones.

Los CISC tienen un conjunto de instrucciones complejo, con multitud de instrucciones potentes y especializadas. DIFICULTA el paralelismo por lo que en la actualidad implementa un sistema que convierte las instrucciones en simples.
    VENTAJAS : más fácil creación de compiladores, disminuye la traducción de lenguajes de alto nivel en código máquina, los código generados son más cortos, y la memoria caché no requiere mucho espacio para almacenar las instrucciones.
    INCONVENIENTES: poco uso de instrucciones y direccionamientos complejos, los accesos a memoria disminuyen la velocidad de ejecución, consumo energético elevado

Los RISC tienen un conjunto de instrucciones simple que se ejecutan más rápidamente. solo las instrucciones de carga y almacenamiento acceden a memoria.
    VENTAJAS: microarquitectura más simple, instrucciones más cortas, menos tiempo de acceso a memoria, compiladores más sencillos. consumo de energía bajo.
    INCONVENIENTES: mayor número de líneas de código, la compatibilidad con arquitecturas antiguas es difícil de mantener.

Partes de un procesador.
  • Registros.
        grupo de datos tratados como unidad.
        memoria de alta velocidad interna en el procesador.
        son la manera más rápida de guardar datos.
  • ALU (unidad aritmético lógica). realiza operaciones aritmeticas y logicas
  • Unidad de control. encargada de interpretar los datos y emitir señales para que el resto de unidades realicen sus misiones.
        Sus funciones : lectura instrucciones, decodificación,     ejecución instrucciones.
    Memoria. un lugar donde se guardan los datos de forma temporal mientras sean necesarios.
  • Contador. guarda la dirección de la próxima instrucción a leer
  • Interrupciones. señales que rompen la secuencia normal de ejecución
    se producen:  
    cuando hay un error en la ejecución de las instrucciones.
    acceso ilegal a instrucciones.
    acceso ilegal a posición de memoria.
    periférico solicita atención.
    interrupciones de reloj.
    consecuencia : se transfiere la ejecución a otro programa que atiende la interrupción.
    pasos a realizar:
    comprobación de señal de interrupción activada.
    salva el contador y el registro .
    pasa a modo núcleo.
    obtiene la dirección de la interrupción.
    almacena la dirección.
    consecuencias:
    salva el resto de registros del proceso.
    atiende la interrupción.
    restaura los registros del programa interrumpido.
    ejecuta instrucción RETI.
  • Set de instrucciones: son las encargadas de decir al procesador que hacer con los datos.
        Tipos : Aritméticas, Lógicas, Control de flujo : saltan a otra parte


instrucciones 8086
  • aritméticas :     ADD, DEC, DIV
  • logicas:         AND, OR, NOT
  • manejo bits:     RCL, RCR, ROL
  • conversion:     AAA, AAD, AAM
  • comparar:         CMP, CMPS, TEST
  • salto condición     JA, JB, JC
  • salto incondicional:    CALL, JMP, RET
  • manejo interrup INT, INTO, IRET
  • transferencia usando
  • Registros      LEA, LES, POP   
        (movimiento de datos entre registros y memoria o vi)   
  • puertos    IN, OUT, ESC
        (comunicación procesador y elementos del bus y perifer.)
  • especiales     REP, REPE, REPNE
        (transf. datos repetitivas )
  • control micro:
        (alteran banderas)            CLC, CLD, CLI
        (afectan funcionamiento micro)    HLT, LOCK, NOP

memoria ram : almacén temporal de datos que se están procesando
    características importantes : capacidad, velocidad,
    tipos de módulos:
        simm
            circuito impreso
            chips memoria 1 lado
            SIN muescas
            72 conectores
            32 bits
        dimm
            circuito impreso
            chips memoria 2 lados
            1 muescas posición
            184 conectores DDR
            240 conectores DDR2, DDR3
        rimm
            184 conectores
            2 muescas posición
            64 bits
    tipos por velocidad
        sdram
            2 muescas
            168 contactos
            entre 66 y 168 mhz
        ddr ram
            1 muesca
            184 contactos
            entre 200 y 600 mhz
            1 ciclo 2 intercambios de datos
        ddr2 ram
            1 muesca
            entre 400 y 800 mhz
        ddr3 ram
            doble veloc. ddr2
        rambus
            entre 600 y 1066 mhz
            184 contactos
        so-dimm
            portátiles

        rimm

memoria rom máscara
    circuito integrado con programación específica desde su fabricación
memoria prom
    unidad programable
memoria eprom
    unidad borrable y programable

memoria caché
    La caché de disco sirve para almacenar en la memoria RAM Los datos recientemente leídos en el disco duro.
    almacena información temporal
    ayuda a adquirir velocidad y eficacia
    puede estar dentro o fuera de la memoria principal
    diseñada para el apropiado y organizado almacenamiento de información
    La caché del micro tiene tres niveles
    L1: dentro de los circuitos del micro, muy rápida y eficiente, misma velocidad
    L2: (antes en ram) integrada en el micro
    L3:

Interfaces
    serie / com / rs232
        25 / 9 pines
        20 kbs
        transf. bit a bit
        modem / ratón
    paralelo / lpt
        25 pines
        2,4 mbs
        impresoras / scanners
    usb
        1.1 1,5 / 12 mbs
        2.0 480 mbs
        3.0 600 mbs
    firewire
        400 mbs
        hasta 63 dispositivos video
    inalámbricos
    ethernet o lan
    específicos
        ps2 (raton y teclado)
        vga (video)
        dvi (video)
        pcmcia ( portátiles )

discos mecanicos
    unidad principal de almacenamiento
    formado por
        platos
        motor
        cabezal

discos por su interfaz
    ide /ata / pata
        40 pines
        soporta 2 dispositivos
            maestro
            esclavo
        10 / 750 gb
        circuitos integrados
        altamente compatibles
        33 mbs
    sata
        1 conector datos 7 hilos
        1 conector elect 15 pines
        40 gb / 4 tb
        conexión en caliente
    scsi
        servidores
        necesita tarjeta adaptadora
        caros
        placa base especial
        320 mbs
    fc (fibre channel)
        alto rendimiento
        bajo coste
        conexión en caliente
        no permite transferencia simultánea de datos
    externos

disco duro estado solido ssd
    dispositivo almacenamiento secundario sin partes mecánicas, formados por una memoria NO volátil
    componentes
        controlador : admin.memoria, velocidad y ejecuta firmware
        cache : memoria dram
        condensador: almacena datos temporalmente en ausencia de corriente
    ventajas
        arranque más rápido
        menor tiempo acceso
        menor consumo energético
        menos peso y tamaño
        menos calor
        más silencioso
        aguantan mejor movimientos
        compatibles puerto sata
    desventajas
        caros
        vida útil menor
        no hay estándar velocidad
        difícil recuperación fallos

procesador 64 bits
    intel 4004 (1971)
        micro 4 bits
        2300 transistores
        encapsulado 16 pines
        reloj 740 khz
        datos separados programas
    intel 8008 (1974)
        micro 14 bits
        encapsulado 18 pines
        bus compartidos de datos
        puede acceder 8 puertos entrada y 24 salida
    intel 8086 (1978)
        micro 16 bits
    intel 80286 (1982)
        micro 16 bits
        reloj 6 / 8 mhz llegó a 20 mhz
    intel core duo
        2mg cache
        2 núcleos
        667 mhz
    intel 2 quad
        4 núcleos
        70% mas rapidos  q core duo

tipos de lenguajes
    alto nivel
        cobol
        pascal
        basic
        java
    mediano nivel
        c
        bcpl
    bajo nivel
        ensamblador
            instrucciones mnemotécnicas : ADD, SUB, DIV
            necesita compilación
            velocidad de cálculo
            control total pc
            optimización programas
            dependencia total máquina
            compleja formación programadores
    máquina



TEMA 2
 
Sistema Operativo.
DEFINICIÓN.
Un sistema operativo es un programa que gestiona los recursos de hardware y da servicios a los programas.

Objetivos de los sistemas operativos.
- Hacer posible el uso eficiente de los recursos del sistema.
- coordina las diferentes velocidades de los dispositivos.
- Simplificar la operación de trabajo con el hardware.
 
Funciones de los sistemas operativos.
- Asignación de tiempo de CPU:
- Asignar recursos de forma racional.
- Control de entrada/salida:
- Control de los errores y protección:   
- Interfaz con el usuario.
- Cálculo de costes de uso de Ce Pe U.
 
Tipos de sistemas operativos.
- Sistemas monousuarios y multiusuarios.
(MS-DOS, DR-DOS e IBM-DOS).
- Sistemas monotarea y multitarea.
- Sistemas monoproceso y multiproceso.
      
Estructura de sistemas operativos.
- Núcleo.
- Gestión de la memoria.
- Control de entrada/salida.
- Gestión de dispositivos de almacenamiento masivo.
- Asignación de recursos y planificación.
- Protección.
- Interfaz de usuario.
 
Núcleo.
Descansa directamente sobre el hardware y proporciona servicios a las capas superiores del sistema.
Las tareas principales son:
- Manejo de interrupciones.
- Asignación de trabajo al procesador.
- Proporcionar una vía de comunicación entre los diferentes programas.
 
Gestión de la memoria.
La memoria principal es más pequeña de lo que sería necesario.
El módulo  de gestión de memoria es el encargado de asignar ciertas porciones de la memoria principal a los diferentes programas, mientras el resto de programas y datos se mantienen en los dispositivos de almacenamiento masivo.
La forma mas común de gestión de memoria es crear una memoria virtual utilizando los dispositivos de almacenamiento masivo.
 
División de la memoria.
- Por páginas: bloques de bytes de igual tamaño para todos los procesos y tareas.
- Por segmentos: bloques de bytes con distinto tamaño según el proceso.
- Por segmentos paginados: Los segmentos de tamaño distinto se dividen a su vez en páginas de distinto tamaño.
  
Gestión de la memoria. Requerimientos.
- Reubicación.
Los programadores no saben dónde estará el programa en memoria cuando se ejecute.
Mientras el programa se ejecuta, puede ser movido al disco y devuelto a memoria principal en un posición diferente.
Se deben traducir las referencias a memoria del código a las direcciones físicas reales.      
Gestión de la memoria. Requerimientos.
- Proteción.
Los procesos no deberían ser capaces de referenciar el espacio de memoria de otro proceso sin permiso.
Es imposible comprobar las direcciones absolutas de los programas puesto que éstos pueden ser reubicados.
Deben ser traducidas durante la ejecución.
- Compartición
Permitir a varios procesos acceder a la misma zona de memoria.
Es mejor permitir a cada proceso accesos a la misma copia del programa que tener cada uno su copia individual.

Memoria virtual.
Permite a los programadores direccionar la memoria desde un punto de vista lógico.
Evitar que haya un vacío entre el desalojo de un proceso a disco y la carga del siguiente.
Necesita soporte de haradware.

Tipos de memoria.
Memoria real: la principal
Memoria virtual: la memoria en disco. Libera de la limitación del tamaño de la memoria principal.

Soporte necesario para la memoria virtual.
El hardware debe soportar paginación y segmentación.
El sistema operativo debe ser capaz de  gestionar el movimiento de páginas y segmentos entre la memoria secundaria y la memoria principal.

Asignación de recursos y planificación.
El planificador cuenta con una política que varia de un sistema operativo a otro. Una política muy común consiste en la asignación de intervalos cortos de tiempo a los programas.
 
Protección.
Actuá contra dos sucesos:   
Errores.
Abuso deliberado de los recursos del sistema.
 
Tipos de interfaz.
Interfaz de usuario.
Interfaz de comandos.
Interfaz gráfica.
 
Paginación.
Permite a los procesos estar constitutidos por un número de bloques de tamaño fijo, llamados páginas.
La dirección virtual se descompone en un número de página y un desplazamiento dentro de la página.
Cada página puede situarse en cualquier sitio de la memoria, llamados marcos de página.
La dirección real o física se refiere a la memoria principal.   

Paginación.
VENTAJAS.
- Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud.
- No es necesario que las paginas estén contiguas en memoria.
- Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.
  
Paginación.
DESVENTAJAS.
- El costo de hardware y software se incrementa. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantación.
- Se deben reservar áreas de memoria para los procesos. Al no ser fija el tamaño de estas, se crea un problema: como asignar un tamaño óptimo sin desperdicio de memoria.

Paginación.
EXISTEN 2 FUNCIONES.
- LLEVAR A CABO LA TRANSFORMACIÓN DE UNA DIRECCIÓN VIRTUAL A FÍSICA.
- TRANSFERIR PÁGINAS DE LA MEMORIA SECUNDARIA A LA MEMORIA PRINCIPAL, Y DE LA MEMORIA PRINCIPAL A LA MEMORIA SECUNDARIA CUANDO YA NO SEAN NECESARIAS.

Gestión de la memoria en Linux
Linux emplea en la gestión de memoria tanto intercambio como paginación. Cuando necesita generar una dirección en memoria virtual, utiliza una estructura de tabla de páginas con tres niveles que son:
- Directorio de páginas: el tamaño de una página donde cada entrada apunta al directorio intermedio de páginas.   
- Directorio intermedio de páginas: pueden ser varias páginas y cada entrada señala a una página de la tabla de páginas.
- Tabla de páginas: cada entrada hace referencia a la página virtual.

Las direcciones virtuales en linux se encuentran divididas en cuatro campos:
Directorio: es el primer campo, se usa como índice del directorio de páginas.
Intermedio: es el segundo campo y el indice del directorio intermedio de páginas.
Página: es el tercer campo, índice que accede a la tabla de páginas.
Desplazamiento: es el cuarto campo, indica el desplazamiento dentro de la página seleccionada de la memoria.

El gestor de memoria Linux se descompone en dos partes bien diferenciadas:
- Asignación de páginas:  Sistema colega.
- Algoritmo reemplazo de páginas: eNe eRre U.
 
Asignación de páginas:
- Linux utilizan bloques de páginas contiguas que corresponden a bloques de marcos contiguos.
- El algoritmo utilizado para asignar la página es conocido como el sistema colega.
 
- El sistema colega permite mantener los bloques libres de la memoria física.
- En este método solo se reservan tamaños que son potencias de dos.
  
Ventajas del sistema colega:
- Es muy fácil de implementar.
- Es rápido.
Inconvenientes:
- Tamaños solo potencia de dos.
- Provoca fragmentación interna en el procedimiento.
 
El algoritmo NRU favorece las páginas que fueron utilizadas recientemente y tiene el siguiente funcionamiento:
- Cuando una página es referenciada o modificada, fija el bit de referencia o modificación de esa página.
  
Algoritmo reemplazo páginas.
En cada intervalo de tiempo, el gestor de memoria resetea los bits de referencia de todas las páginas.
De este modo, las páginas que tienen bits de referencia o modificación son relevantes y tienen menos prioridad para ser modificada.
  
El gestor de memoria clasifica las páginas en cuatro categorías.
- Categoría 0, no referenciada, no modificada.
- Categoría 1, no referenciada, modificada.
- Categoría 2, referenciada, no modificada.
- Categoría 3, referenciada, modificada.
Las páginas que se sustituirán serán las de categoría 0, posteriormente las de la 1 y así sucesivamente.
  
Gestión de la memoria en Windows.
Al ejecutarse un proceso en Windows, el sistema busca asignarle un espacio de direcciones virtuales.
Al tener una gran cantidad de procesos en ejecución a la vez, comienza a realizar un cambio entre la memoria virtual y la física.
Windows utiliza la paginación con el fin de hacer la gestión de su memoria. Una pagina en Windows es de 4 Kilobytes.
    
Gestión de la memoria en Windows.
El intercambio se realiza no de bytes a bytes, sino de pagina a pagina, donde se almacenan los datos de los procesos. De ahí que toda la memoria esté paginada, tanto la física como la virtual.
A diferencia de los otros sistemas las páginas pueden estar en tres estados.
Disponible.
Reservada.
Asignada.
 
Gestión de la memoria en Windows.
Paginación.
Cuando la memoria empieza a escasear, el gestor de memoria virtual mueve las páginas que se han utilizado hace más tiempo de cada uno de los procesos.
En sistemas Windows, estas páginas se almacenan en archivos (Pagefile.sys) en la raíz de una partición.
    
El gestor de memoria Windows tiene las siguientes partes interesantes.
- Mapa de direcciones virtuales.
- Asignación de páginas.
- Algoritmo de reemplazo de páginas.
- eLe eRre U ó FIFO.
  
Mapa de direcciones virtuales en Windows.
Cada uno de los usuarios dispone de su propio espacio de direcciones de 32 bits.
Lo que permite a cada usuario disponer de hasta 4 Gigabytes.
De estos 4 Gigabytes el sistema operativo se reserva 2 de direcciones virtuales.
  
Asignación de páginas en Windows.
Cada proceso de un usuario puede hacer uso de hasta 2 Gigabytes.
El espacio está dividido en páginas de tamaño fijo y cualquier página puede ser cargada en memoria.
  
Algoritmo de reemplazo de páginas en Windows.
Paginación por demanda con agrupación de páginas.
En el caso de que se produzca un fallo de páginas porque no se encuentra cargada en memoria, se solicita dicha página y se cargan páginas cercanas.
  
Gestión de la memoria en Windows. FIFO.
El algoritmo FIFO solamente almacena el orden de llegada de las páginas
De modo que al necesitar espacio para una nueva página solamente debe elegir la que fue cargada primero.
Este método tiene el gran problema de que se elimina una página de memoria muy utilizada solo porque es antigua.
  
TEMA 3

Sistema de archivos
 Debe ser posible almacenar una cantidad muy grande de información.
 La información debe sobrevivir a la conclusión del proceso que la utiliza.
 Debe ser posible que varios procesos tengan acceso concurrente a la información.

Los archivos son una colección de datos con nombre.
 Pueden ser manipulados : open, close, create, destroy, copy, rename, list.
 Los datos dentro del archivo pueden ser manipulados : read, write, update, insert, delete.
 
El “Sistema de Archivos” es la parte del sistema de administración del almacenamiento responsable, principalmente, de la administración de los archivos del almacenamiento secundario.
Es la parte del S. O. responsable de permitir “compartir controladamente” la información de los archivos.
 
Se deben proporcionar posibilidades de “respaldo” y “recuperación” para prevenirse contra:
 La pérdida accidental de información.
 La destrucción maliciosa de información.
 Se debe poder referenciar a los archivos mediante “Nombres Simbólicos”
 el sistema de archivos debe proporcionar posibilidades de “Cifrado” y “Descifrado”.
 
Un “Archivo” es un conjunto de registros relacionados

El “Sistema de Archivos” suele contener:
 “Métodos de acceso”
 “Administración de archivos”
 “Administración del almacenamiento auxiliar” almacenamiento secundario.
 “Integridad del archivo”
 “Mecanismo de abstracción el usuario no tenga que enterarse de los detalles de cómo y dónde está almacenada la información

El nombre de archivo puede estar restringido a un largo máximo, por ejemplo:
 - MSDOS: 8 para el nombre, 3 para la extensión
 - NTFS y ext*: 255 en el total (nombre + extensión)
 En sistemas windows determina el contenido del archivo y la aplicación encargada de manejarlo. Aquí se suele tener solo 1 extensión: archivo.zip.

-En linux no es estricto ni establecido por sistema. suele tener varias extensiones

Estructura de archivos
 Los archivos internamente pueden ser estructurados o libres.
 Libres son simplemente secuencia de bytes.
 Estructurados tienen una organización interna a través de la cual deben ser accedidos los datos.

Archivo, atributos
Los sistemas de archivos guardan, además del nombre del archivo y sus datos, información como fecha, hora, usuario, permisos, etc; los cuales se denominan atributos.
Algunos de los atributos que puede guardar un sistema de archivos son:
Permisos que el dueño del archivo establece sobre el archivo.

Tipos sistemas archivos
Sistemas de ficheros de disco
 Son sistemas diseñados para almacenar ficheros en dispositivos de almacenaje de datos, que deben estar conectados directa o indirectamente al ordenador.
 Ejemplos:
 FAT
 NTFS
 HFS y HFS+
 EXT2/3

Tipos sistemas archivos
Sistemas de ficheros transaccionales
Sirven para asegurar la integridad del sistema comprobando que toda operación debe estar acabada.
   ReiserFS   Reiser4   Ext3   NTFS (Solo metadatos).
 
Sistema de ficheros de red
 Es un sistema de ficheros que actúa como cliente para un servidor de acceso remoto a ficheros, permitiendo acceso a los ficheros en el servidor.
   NFS   SMB   AFS   CIFS
 
NTFS es el sistema de archivos de sistema MS Windows.

 El journaling es un mecanismo por el cual un sistema informático puede implementar transacciones.
 También se le conoce como «registro por diario».
 Se basa en llevar un journal o registro de diario en el que se almacena la información necesaria para restablecer los datos afectados por la transacción en caso de que ésta falle.
 
Directorios
-Directorio Raíz: aquel que contiene al resto del sistema de archivos.
-Directorio de trabajo: directorio en el cual se esta ejecutando un proceso,
-Ruta absoluta: ubicación de un archivo o directorio indicando su posición explicitando todos los directorios desde el directorio raíz al elemento.
-Ruta relativa: ubicación de un archivo o directorio indicando su posición respecto al directorio de trabajo actual.
-Directorio Padre: aquel en el cual es contenido un directorio. Se simboliza con punto doble (..).
 
  Organización de directorios
 Único nivel (espacio plano)
 Dos niveles
 En árbol
 Grafo acíclico (enlaces)
 Grafo general (enlaces sin restricciones)
 
  Unix, sistema de archivos
 Formato de la salida
 La primera letra indica el tipo de archivo:
 d directorio
 - archivo normal
 b archivo tipo bloque
 c archivo tipo carácter
 l enlace simbólico
 Las 9 siguientes indica los permisos de propietario (3), grupo (3) y otros (3)
 Seguido los links
 Seguido Propietario y grupo
 Después el tamaño
 Después la fecha, hora
 Y para finalizar el nombre
  
 Seguridad del sistema de archivos
 Necesidad de mantener la seguridad de la información:
   De daños físicos (integridad)
   Copias de seguridad
   Accesos indebidos (privacidad)
  
Comando chmod (Simbólica)
 indican los permisos :chmod <who>+j-<permiso><archivo>
  
Comando chown
 chown usuario1 nota
    Cambia el dueño del archivo nota adjudicándoselo a usuario1.
 chown usuario1 arch1 arch2
   Cambia el dueño de la lista de archivos indicada.

Comando chgrp
 chgrp tecnicos nota
 Cambia de grupo el archivo notas, adjudicándoselo al grupo tecnicos.
 chgrp tecnicos arch1 arch2
 Cambia el grupo de la lista de archivos.

 ¿Qué es un usuario?
 Se conoce como usuario a la persona que utiliza algo cotidianamente, sea un objeto o un servicio.
 
 Tipos de usuarios   Usuario final
 Es la persona en específico a la cual se destina un producto o servicio.
 
 Tipos de usuarios  Usuario registrado
 Refiere aquellas personas que para utilizar un servicio online tienen un identificador y una clave que le permite el acceso a este.

 Tipos de usuarios   Usuario anónimo
 Es el usuario que utiliza a diario un servicio producto sin que nadie lo reconozca,
 
 Tipos de usuarios   Usuario tester
 Describe a los tipos de usuarios que tienen como fin validar la funcionalidad de un web o programa, teniendo como objetivo principal velar por el correcto funcionamiento del mismo.
 
 Tipos de usuarios   Usuario administrador
 quien tiene la total autorización de realizar cualquier ajuste o cambio a lo que está desarrollando.
 
 Tipos de usuarios   Usuario beta tester
 quien busca los medios de que el programa creado logre llegar al usuario final sin presentar ningún error.
 
  Tipos de usuarios   Usuario de sistema
 Son las personas que se registran en un determinado sistema con el fin de utilizar un servicio que este ofrece.

 Cuentas en Windows, usuarios
 Las cuentas de usuario proporcionan acceso a los recursos locales
 Se almacenan en una base de datos de seguridad local
 Inicio  Programas  H. Administrativas   Administrador de equipos

Administración de permisos y derechos de usuarios y recursos
 Cuentas en Windows, Planificación nuevas cuentas
 Determinar requerimientos de Password
 Expiracióndepassworddeusuarios temporales
 Inculcar a usuarios a usar password seguras
 Evitarpasswordobvias   Usarpasswordlargas
  
 Cuentas en Windows, Creación de cuentas
 Como administrador  Inicio  Programas  H. Administrativas   Administrador de equipos   
   
 Cuentas en Windows, Practicas aconsejables
 Renombrar cuenta de Administrador
 Requerir que los usuarios deban cambiar el password (Seguro)
 Proporcionar perfiles de usuario estándar
  
Cuentas en Unix, Usuarios del sistema
 root: Administrador (UID 0).
 daemon: Ejecuta procesos de servicio del sistema (UID 1).
 bin: Propietario de ejecutables (UID 2).
 sys: Ficheros de sistema (UID 3).
 adm: Ciertos log (UID 4).
 nobody: Usuario sin privilegios.
   
Cuentas en Unix, /etc/passwd
 El “Archivo de contraseñas”.
   
 Los campos eparados por “:”
   identificador de Inicio   Contraseña encriptada    uid     group-id
   varios  Home Directory   Shell
Cuentas en Unix, /etc/group
 El Archivo /etc/group contiene los nombres de grupos y sus identificadores, y define a los usuarios miembros de los grupos.
   
 Los archivos /etc/profile y .profile
 Cada usuario de un sistema Unix tiene definido un shell por defecto, un interprete de órdenes que será el programa que le va a servir de interfaz para con el sistema operativo
 shell mas estándar (sh), versión mejorada (bash)
  
 Los archivos /etc/profile y .profile
 Otro archivo equivalente al .profile es el /etc/profile.
 especifican ordenes y variables comunes a todos los usuarios.
 Como este archivo es administrado por el root del sistema