SIMM 2006-2007
De ASIRodeira
AVISO: A información aqui recollida non está desenvolvida polo profesor da materia, senon por alumno, polo que pode conter erros e non ser de todo fiable.
Tema 2: HARDWARE
Microprocesadores
----------------------- | unidad de control | entrada --> |u. aritmético-lógica | <-- salida (bus) | | (bus) | memoria principal | ----------------------- ^ | | memoria secundaria
- Unidad de control: Trae a la memoria principal las instrucciones.
- PC (Program Center - Contador de programa): Contiene la dirección de la instrucción que se está ejecutando.
- RI (Registro de instrucción): Copia la instrucción que se esta ejecutando.
- Decodificador: pasa el codigo maquina a impulsos electricos.
- Reloj: marca el inicio de las instrucciones 2.8 Ghz = 2800 millones de instr /s
- Secuenciador: órdenes elementales.
- UAL (ALU- Unidad Aritmético Lógica): matemática y comparaciones.
- C.Operacional: operaciones (+,-, comparar)
- Registro entrada: datos que se van a operar
- Registro de estado: estado de la opereación
- R. Acumulador: datos operados
Memoria Principal
Tecnología:
- DRAM: asincrona.
- DDRAM: se refresca 2 veces
- SDRAM: sincrona
- SRAM: estática, cara, cache de los micros
Encapsulado:
- SIMM: Single in memory line module
- DIMM: Double in memory line module
- RIMM: Rambus in memory line module: tecnología propietaria rápida
Tema 3:SISTEMAS OPERATIVOS
Introducción
- Software básico de un ordenador.
- Conjunto de programas y funciones que gestionan el HW y el resto de SW.
- Manera sencilla y agradable de manejar un PC.
- El primer preograma que se ejecuta al encender.
- Un mismo HW puede funcionar de distinta manera si utilizamos SO distintos.
Objetivos
- Ofrecer la interfaz del usuario.
- Compartir datos entre usuarios.
- Compartir el HW entre usuarios y dar prioridades.
- Facilita la Entrada/Salida.
- Recuperación de errores.
Historia
Sistemas
- 1940
- Primeros computadores.
- No existian los SO.
- El programa se comunicaba directamente con el HW.
- 1950
- Primeros SO.
- Monitor residente.
- Procesamiento por lotes.
- Almacenamiento temporal (buffering y spooling).
- General Motors desarrolló un SO para la maquina IBM 701. El ejército desarrolo el Fortran para el IBM 709
- 1960
- Multiprogramacion (datos de mas de un programa, los programas se ejecutan a la vez).
- Multiusuario.
- Multiprocesador: Compartian Reloj y memoria.
- Se lanzó el OS/360 desarrollado por IBM. Comenzaron a desarrollarse los primeros UNIX.
- 1970
- Se reescribe Unix en C
- Aparecen los PC y los SO sencillos (DOS)
- Apple lanza Mac
- 1980
- Xwindows en UNIX
- Mini Unix
- Windows
- 1990
- Facilitar la interfaz del usuario.
- Linux (basado en Unix) abiertos.
Hardware
- 1 45-55 Válvulas de vacío
- 2 55-65 Transistor
- 3 65-80 Circuitos integrados. Baratos y rápidos. IBM/360.
- 4 80-... Semiconductores. Reducimos tamaño y costes.
Tipos
Usuarios
- Monousuario: solo puede trabajar un user a la vez. (WinXP,98,95 ... DOS)
- Multiusuario: pueden trabajar varios a la vez. (Win2003 Server, *NIX, OS/2, BSD)
Procesos
- Monotarea: Solo se puede ejecutar una tarea a la vez. (MS-Dos...)
- Multitarea: Varios procesos a la vez (Win95-2003 Server, *nix)
Procesadores
- Monoproceso
- Multiproceso:
- Simétricos: En cada procesador corre una copia identica del sitema y se comunica con los demas dependiendo de sus necesidades. (de igual a igual)
- Asimetricos: existe un procesador central y el resto ejecutan lo que manda el central.
Tiempo de respuesta
-Tiempo que se tarda en obtener la salida
- Real: requerimientos muy rígidos.
- Hard
- Soft
- Compartido: No existe interaccion entre user y maquina. Cuando la maquina pueda, lo ejecutará.
- Planificación de CPU
- Multiprgramacion
Componentes
- El SO es un conjunto de programas
Kernel
- Traslada el control de un programa a otro.
- Permanece siempre en memoria.
- Controla periféricos.
- Maneja IRQ's.
- Comunicación entre procesos.
- Maneja la memoria.
Programas de Control
- El núcleo delega en ellos algunos trabajos.
- Controlan el funcionamiento de los recursos.
- Procesador
- Memoria
- Periféricos
Programas de proceso
- Ayudan a los programadores a realizar las aplicaciones.
- Traductores: toman como entrada un programa escrito en código fuente y lo transforma en otro programa que es entendible por el HW (lenguaje objeto).
- Ensambladores: Transforman fuentes de bajo nivel a programas ejecutables.
- Compiladores:Transforman fuentes de alto nivel en progrmas objecto.
- Intérpetres: hacen lo mismo que los compiladores pero ejecutan las instrucciones a medida que las va compilando.
- Linkers: unen los objetos para convertirlos en un programa ejecutable.
Programas de servicio
- Programas que aydan al sistema o al usuario (utilidades)
- Manipulación de datos: p.e. desfragmentador de datos, copias de seguridad ...
- Programas de servicio del sistema: mantienes las bibliotecas de los programas.
Arquitectura
Niveles
- kernel: gestiona procesos.
- ejecutivo: administración y gestión de memoria.Almacena los procesos en páginas.
- supervisor: comunicación entre procesos y entre procesos y periféricos. (sistema <--> usuario)
- usuario: controla los procesos generados por los users.
Tema 4: PROCESOS
- programa=(codigo+datos) en un archivo
Proceso
- programa cargado en memoria por el kernel.
- prioridad: cada proceso debe tener una asignada por el planificador
- activar: el distribuidor activa procesos segun la prioridad
- estado:
- activo
- bloqueado: a la espera de un suceso.
- listo: esperando a entrar en la CPU.
- muerto: proceso mal acabado, bien por un error propio o un error del sistema.
en GNU/Linux:
- D durmiendo, no despierta
- R corriendo
- S durmiendo
- T parado
- Z zombie
- cambio de ubicacion: un proceso parado puede ser enviado a la memoria secundaria y cuando se vuelva a ejecutar recuperarlo a memoria pral.
Gestion de procesos
- un proceso tiene una duración determinada en el tiempo
- Interrupcion:indicacion a la cpu de que hay trabajo pendiente lo que provoca un cambio de contexto.
- Cambio de contexto
- PCB: area de memoria que tiene info sobre los procesos
Opciones basicas
- Creacion: pid, ponerlo como listo, darle prioridad, generar un PCB (process control block), recursos.
- Destruccion: liberamos recursos, guardamos el PCB y liberamos memoria
- Cambio de prioridad: cambiando el PCB
- Bloquear: para esperar a que algo suceda
- Activar:
- Despachar: pasar de listo a activo
Planificación de procesos
- Conjunto de políticas e instrumentos por los cuales el SO rige el orden en que se realizan las tareas.
- Lograr la maxima capacidad de ejecución
- Impedir que un proceso continue infinatamente en el tiempo
Criterios
- CPV
- Productividad (procesos acabados / tiempo )
- tiempo de retorno (tiempos transcurridos en entar en memoria, ejecutar en la CPU, efectuar, procesos E/S)
- tiempo total: tiempo que se tira en la cola de listos.
Proridades
- Normalmente las da el SO pero el admin puede cambiarlas.
- Pueden ser dinámicas o estáticas.
- Se puede usar el quantum, normalmete se usa combiando con las prioridades
Algoritmos
- round-robin: quantum total sin prioridad.
- fcfs: first come first served. El segundo proceso debe esperar a que el primero termine.
- sjf: shortest job first: el trabajo mas pequeño va primero, pero nunca se sabe a ciencia cierta cual va a ser el primero
- no apriopiativo: en le momento que un proceso entra en lista se le mete en un lugar de la lista y no se le puede cambiar
- apriopiativo: se le puede cambiar.
Comunicaión
- Seccion crítica: seccion de varios programas que acceden a los mismos datos que otro programa. El SO debe manejar los procesos para que no accedan a la vez a los datos.
- procesos independientes: que no pueden ser afectados por otros procesos
- procesos dependientes: pueden ser afectados
- Para prevenir el problema se usa la exclusion mutua. Mientras un proceso esta fuera de la seccion critica no bloquea a procesos y no puede entar en la seccion critica sin avisar.
Gestion de Memoria
Métodos
- Maquina desnuda: el usuario tiene todo el control, el SO ni tiene servicios.
- Monitor residente: se divide la memoria en dos, una parte para el motor residente (parte de memoria mas baja) y la otra para el usuario. La direccion donde comienzan los datos del user esta en el registro limite. Este registro se puede grabar en un chip y ser fijo o puede ser variable.
- Swapping: divide la memoria en dos. Cuando el SO ejecuta un programa este se carga en memoria y se empieza a ejecutar. Pero llega un momento en el que se agota la memoria fisica no se podrían cargar mas programas. Lo que se hace es mover ese programa a la swap .Se aumenta el tiempo de quantum para que no ande el proceso de paseo de la swap a la ram. Siempre va a haber un pequeño buffer entre la swap y la ram, debido a la diferencia notoria de velocidaddes.
- Particiones fijas: una particion fija (MFT) por usuario.
La memoria no tiene por que ser igual para todos.
- Particiones variables: Para evitar que un user que consume poco deperdicie el espacio y otro no se quede sin memoria(MVT).
- First-fit: coge la primera parte de memoria donde quepa el proceso
- Best-fit: Lee toda la memoria y coge el cacho que mas se adapte, pero es un poco lenta por tener que buscar su mejor sitio.
- Worst-fit: coge el cacho mas grande.
- Paginación: divide la memoria en trozos pequeños (frames), y crea una tabla de páginas donde indican que paginas ocupa un proceso, y con un vector de desplazamiento (tamaño en bytes que mida un marco). No existe fragmentacion externa, pero si interna, en un frame puden quedar partes libres.
- Segmentacion: divde el programa por funciones o partes y las pone cada una en un modulo distinto
- Memoria Virtual:Traduccion de memoria y gran cantidad de memoria secundaria rapida. Mantenemos en la memoria pral tan solo los procesos que se estan ejecutando.
Gestion de los periféricos
- Bloque:
- Caracter: byte a byte.
Gestion de Datos
Sistemas de archivos
Caracteristicas de un archivo
- nombre
- tipo
- tamaño
- propietario
- hora y fecha
Operaciones
- Crear archivo
- buscar un hueco libre
- señalizarlo en el indice (directorio)
- Escribir
- buscar en el indice el lugar del directorio
- escribir
- Leer
- buscar en el indice
- leer
- Borrar
- buscar en el indice
- eliminar la referencia en el indice
- liberar el espacio que ocupaba
Tipos de archivos
- archivos (tesxto, sonido, video, binarios, drivers)
- directorios: archivos con referencias a otros archivos
- raiz:directorio especial, todos los demas directorios cuelgan del. NO todos los SO's lo tienes (pej. OS/400 de la famosa AS/400)
Estructura de diriectorios
- No se pueden compartir cosas entre users:
- 1 solo nivel (OS/400, SpectrumZX)
- 2 niveles: un directorio por ususario (UFD - User File Directory y el raiz MFD - Master File Directory)
- Se puede compartir:
- En Arbol. (grafo - enlaces)
Metodos para la implementacion
Asignacion contigua
- Cada vez que se crea un archivo, se hace al lado del ultimo.
- Los archivos no pueden crecer indefinidamente, pues se le reserva una parte del disco
Asignacion encadenada
- Bloques encedenados que no tienen pq estar contiguos
- Cuando se ocupa todo el espacio, se pone una referencia al final a la direccion de la siguiente parte del disco.
Indexada
- No busca secuencialmente en el disco, se crea un indice con todos los archivos.
- como desventaja necesita espacio para un indice.
Manejo de espacio libre
- lista de bloques libres
- vector de bits
- lista encedenada
Estructura fisica de un disco
- cilindro: conjunto de sectores que puede ser leido simultaneamente (sin mover los cabezales)
Direccion:
- Se compone de:
- numero de dispositivo
- cara del disco
- pista
- sector
Tiempos
- busqueda: mover el cabezal hasta la pista adecuada
- latencia: tiempo que tarda en leer y transferir a la memoria
- transparencia
Gestion de Usuarios
- Para proteger los datos.
/etc/passwd
- Nombre de Usuario
- Password
- User ID (UID)
- Group ID (GID)
- Home directory
- Path: lugar donde se colocan los programas ejecutables.
Tema 5: MS-DOS
Ficheros del sistema
- IBMBIOS.COM: E/S
- IBMDOS.COM: nucleo: servicios
- COMMAND.COM: interprete, interrupciones
- IO.SYS: drivers
- MSDOS.SYS: nucleo: archivos directorio y memoria
- CONFIG.SYS: configuracion del sistema
Arranque
- Leemos la ROM y cargamos el bootstrap que lee el primer sector del disco de arranque y carga el programa de arranque.
- Este ejecuta el DOS.SYS y el IO.SYS: que contiene el IBMBIOS.COM.
- Este a su vez tiene dos partes el BIOS y el SYSINT, que ve la cantidad de memoria contigua, el sysint en memoria baja, y lo recarga en memoria alta para cargar el nucleo (DOS.SYS y IBM donde estaba.
- kernel(nucleo): ve los perifericos, discos, etc y llama al sysint. Este ejecuta el config.sys y el command.com que ejecuta el autoexec.bat.
- Se descarga sysint
- queda el command.com
Ayuda
- help
- dir /?
- help dir
Comandos
- dir directorio
- /w saca la info en columnas
- /p para en cada pagina
- /s lista recursivamente
- /o ordenar
- /A:H ocultos
- edit
- ver: version
- backup y restore: hacen backup y los restauran
- mem: ver como está distribuida la memoria.
- format /a:s formate disco de arranque
- unformat (>5.0): recupera el borrado de un formato siempre que no escribieras nada por encima.
- chdsk (/f /v): verifica el estado de un disco.
- diskcopy: copia bajo nivel discos
- attrib: permisos(+ -)
- R: solo lectura
- A: lectura escritura
- S: sistema
- type=cat
- prompt: cambia el prompt del sistema
Estructura de directorios
- Independiente de cada unidad
- Unidad lógica: representacion de una unidad física
Unidades
- A: 1º disco flexible (3 1/2)
- B: 2º disco flexible (5 1/4)
- C: 1º disco duro
- D: 2º disco duro, 2º particion del primer disco, unidad de CDROM
- ...
- F: disco compartido en las tecnologias Novell Netware
Gestion de memoria
Direccionamiento
- 1 celda = 1 bye = 8 bits
- segun el tamaño de bus de direcciones podran direccionar mas o menos memoria
- En DOS el tamaño del bus son 20bits por lo que puede redireccionar 1M.
- Los primeros 640K (memoria convencional) están reservados para el SO.
- El resto (memoria superior) eran para la ROM y el Hard
Administradores de Memoria
- HighMem: extendida (286 o superiores)
- EMM386: superior, permite usar la extendida como expandida(memmaker)
Reparto de la memoria
====Convencional==== (los primeros 640K)
- Memoria libre para el usuario
- Programas residentes
- Command.com (3K)
- Controlador dispositivos (lo anterior 44K)
- config.sys
- nucleo DOS
- reservado para el sistema (2K)
====Superior==== (Hasta los 1024K)
- Rom-BIOS
- Extensiones ROM
- Video
====Extendida==== (Superior a 1024K )
- Memoria expandida
- Memoria alta (64K)
Mapeo de memoria
- se usa la memoria expandida como una especie de swap. Los datos se mueven de la expandida a la superior y viceversa.
Cargar el DOS en memoria alta
- Cargar el hymen.sys y la orden DOS=HIGH
- Seria conveniente colocal los buffers en high con BUFFERS(45)
Convertir extendida en expandida
- EMM386.EXE
Cargar programas en memoria superior
- Necesitaremos 384K libres
- hymem.sys
- Instalamos en emm386.exe (deberemos poner NOEMS o RAM)
- activamos el DOS=UMB
- DEVICEHIGH
- LOADHIGH
(todo esto se pone en el autoexec o en el config.sys)
Aumentar convencional
- cargar DOS en alta
- descargar los residentes innecesarios
- memaker
Aumentar extendida
- para trabajar con extendida se carga el himen.sys
- cargamos el emm386 con los argumentos: noems min=0
- ramdrive y activar el smartdrive(cache de disco para no tener que ir a leer tantas veces) en el autoexec al final del todo.
Aumentar expandida
- cambiar noems por ram.
- reducir la memoria asignada a estos programas.
Gestion de discos
- Los discos cuentan con dos estructuras, una fisica y una lógica.
Fisica
- Se dividen en caras, cilindros (espacio en cual no tienes que mover la cabeza) y sectores. Todos los discos almacenan info por las dos caras del disco.
- Cada disco se divide en pistas, la estructura lógica de los cilindros.
- Las pistas se dividen en sectores
- La densidad es igual al nº de sectores por cada pista.
- cilindro es igual al conjunto de pistas de igual numero en las diferentes caras.
- cluster: unidad minima de info que el DOS recoge del disco.
Crear un disco de arranque MS-DOS
- debes copiar el command.com io.sys y el MSDOS.SYS
- tambien se puede crear con format a: /s
Gestion de archivos
- Máximo ocho letras en cada nombre de archivo mas 3 en la extension.
- No estas permitidos mucho caracteres especiales como ()*/\;, .Solo se puden usar el guion(-) y el bajo (_)
- Comodines:
- * cualquier caracter
- ? un solo caracter
Redireccionamiento
Operadores
- salida < entrada
- entrada > salida
- >> añadir
- | pipe
Filtros
- more para cada 23 lineas
- more > proba espera a que metamos las lineas por teclado y las inserta en proba
- sort ordena alfabeticamente
- find encontar filas dentro de un fichero
- find /i (no case-sensitive) "expresion" < archivo
LINUX
Comandos
Sistema
- reiniciar la red: service network restart.
- whoami: que usuario eres en esa shell.
- logname: con que user entraste en el sistema.
- id: devuelve el UID y los GID de los grupos a los que pertenezcamos.
- tty devuelve la terminal en la que estoy.
- uname: nombre del nucleo del sistema
- -r version del kernel
- -p procesador
- -v fecha de compilacion
- man: manual.
- who: nombre, terminal, inicio de sesion IP
- w: JCPU (carga de cpu de esa terminal) PCPU (tiempo del proceso actual) what (que comando esta ejecutando)
- wall: write a todos
Ficheros
- mkdir -p: crea los directorios recursivamente
- mv,cp,rm: se puede usar -i para que nos avise si vamos a sobrescribir algo.
- find
- -name por nombre
- -user por usuario
- -group por grupo
- -links nºlinks
- -type d(directorio) l(link) . . .
- -print saca por pantalla
- -fprint fichero igual que > fichero
- -fls igual que -fprint pero como si fuera un ls -l
Formatear salida
- pr: formatear la salida
- -h: titulo pone un titulo
- tee: saca la salida por el stdout y a un fichero a la vez
- -a: no sobreescribe
- sort: ordena el contenido
- -f : non-case-sensitive
- -n : ordenacion numerica
- -r : invierte la ordenación
- -o : mete la salida en un fichero
- -t : permite indicar un separador de campos
- -k :columna por la quiero ordenar, en caso de tener mas de una
- uniq : elimina las lineas repetidas de un fichero siempre que esten ordenadas (una linea igual debajo de la otra)
- - c : antepone a cada linea el numero de lineas iguales que hay
- -u : muestra solo las lineas que no estan repetidas
- cut: extrae las columnas de un fichero
- -f numero de la columna
- -d separador (TAB por defecto)
- paste: concatena varios ficheros
- -d separador
paste -d : fichero1 fichero2 fichero3
- join:une varios ficheros pero necesita un campo comun
- -t separador
- - n (siendo n un número) indica cual es el campo comun
Expresiones regulares
. caracter simple
asterisco cualquier numero de repeticiones del mismo caracter
[] calquiera de los caracteres o rangos que van dentro de ellos
^ eso rango excluyente (todo menos "eso")
eso $ lineas que terminan con "eso"
- grep: localiza expresiones regulares en uno o varios ficheros
- fgrep: no puede usar expresiones regulares, es mas rápido y permite buscar varias cadenas entre comillas asi:
fgrp "cadena1 |Enter| cadena2" fichero
- egrep: el mas completo, permite varias expresiones regulares
egrep "expresion1|expresion2" comerciales
- -c : cuenta el numero de lineas que contienen la expresion
- -i : non-case-sensitive
- -n :nos da posicion en el fichero
- -v : lineas que no tienen la expresion
Bash scripting
Variables
$# numero de parametros pasados al comando $* todos los parametros $HOME $PATH $MAIL $UID $LOGNAME $SHELL $TERM tipo de terminal $PS1 cadena del inidicador del sistema (por ej. root@debian:~# ) $PS2 cadena secundaria del indicador del sistema. Para cuando no terminas el comando y necesita mas datos (por ej. >) shift numero como bash solo admite 9 argumentos va desplazando los argumentos hacia adelante
Test
-f si existe el archivo
-r si tienes permisos de lectura
-w " de escritura
-x " de ejecucución
-s si esta vacio
-d si es un directorio
Operadores logicos
NOT !
AND -a
OR -o
Funciones
Las variables son todas globales y pueden ser modificables. Sin embargo las varibles se pueden definir con "local" delante para que solo correspondan a esa funcions.
function funcion1 ()
{
comandos
}
Instrucciones
- if
if condicion
then comando
elif condicion
then comando
else comado
fi
- while
while condicion do coamando done
- until
Lo mismo que while, pero solo ejecuta los comandos cuando la condicion es falsa.
- case
case $variable in
patron)
comandos;;
patron2|patron3)
comandos;;
*)
comandos;;
esac
- for
for var in lista_valores; do comandos done
#numeros del 1 al 5 for v in 1 2 3 4 5; do echo $v done
#todos los ficheros de un directorio for fich in * ;do echo $fich done
- select
opciones="opcion1 opcion2 ... salir" select op in $opciones; do case $op in
opcion1)
comandos;;
opcion2)
comandos;;
salir)
comandos;;
done
Test
- comparaciones numéricas
test $n1 -eq $n2
-eq igual
-ne no igual
-ge mayor o igual
-gt mayor
-le menor o igual
-lt menor
- comparaciones de cadenas
test $c = $d
$var si tiene un valor cualquiera
-z si no tiene un valor
= igual
!= no igual
Archivos de configuarción en Fedora
red: /etc/sysconfig/network-scripts/ifcfg-eth0
Permisos
Directorios
r listar no acceder
w crear y eliminar
x acceso
Archivos
r leer
w modificar y eliminar
x ejecutar
Permisos Especiales
Setuid: sea cual sea el usuario que lo ejecuta, se ejecuta como si fuera el propietario del fichero chmod 4775 (4 mas los 3 bits de los permisos normales). Cambiará la x del propietario por una s.
Setgid: se puede aplicar a ficheros y directorios. Igual que el setuid pero para grupos. Si lo aplicamos a un directorio, sea quien sea el usuario que cree un archivo dentro de ese directorio le pondrá el grupo que tiene ese directorio. chmod 2775. Cambiará la x del grupos por una s.
Sticky bit: (bit pegajoso) para directorios en los que todos los users tienen permisos de lectura. Solamente puede ser borrado por el propietario del fichero o el del directorio. chmod 1775. Cambiará la x de otros por una t.
WINS
Nbstat
- -c lista la caché
- -r borra la cache
- -a nombre_host lista la info de nombre_host
Archivos
- Lmhost: contien los nombres netbios
- Hosts: contiene los nombres DNS
Traballos
Trabajo3: Descripcion do equipo
Trabajo 4: Historia de Internet



