Curso Sistemas Operativos - Unidad Arquitectura del Computador

  • 2,164 views
Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,164
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ARQUITECTURA DEL COMPUTADOR Juan Rafael Álvarez Correa jalvarez at debian dot org 1
  • 2. CAPITULOS ■ 0 – Arquitectura del computador ■ 1 – Introducción a los sistemas operativos ■ 2 – Procesos e hilos ■ 3 – Comunicación, concurrencia y bloqueos ■ 4 – Gestión de memoria ■ 5 – Entrada y salida ■ 6 – Gestión de archivos y directorios ■ 7 – Seguridad y protección ■ 8 – Sistemas distribuidos 2
  • 3. CONTENIDO ■ Arquitecturas de computador  Von Neumann - Arquitectura Harvard ■ Bus ■ CPU  ALU, CU, FPU, Registros, ISA, Ciclo Fetch-Execute ■ Memoria  Interfaz de acceso, Jerarquia, Cache ■ Entrada y salida (Dispositivos)  Interfaz de acceso, Estrategias de I/O ■ Protección por hardware  Modo dual, I/O, Memoria, CPU 3
  • 4. ANTES ■ Los dispositivos “electronicos” eran diseñados para un proposito especifico  Para resolver el problema de la suma, se diseñaban dispositivos para sumar  Este dispositivo no podia ser utilizado para otros fines: resta, multiplicación, división  La corrección de errores en estos dispositivos se realizaba mediante el rediseño de los mismos 4
  • 5. ARQUITECTURA VON NEUMANN ■ Especifica el diseño de un dispositivo de proposito general (problemas diferentes) ■ Introduce el concepto de programa almacenado ■ Componentes  Memoria (utilizada para datos y codigo)  CPU = ALU + CU ➔ Instruction Set Architecture  Dispositivos: Entrada, salida, almacenamiento y comunicación  Bus: Datos, control y direcciones 5
  • 6. ARQUITECTURA VON NEUMANN ■ Ventajas y desventajas  Permite codigo automodificable  Arquitectura electronica “facil” de diseñar  Instrucciones y datos recuperados de forma secuencial (Von Neumann Bottleneck) Tomado de Universidad de Canterbury 6
  • 7. ARQUITECTURA HARVARD ■ Componentes  Memoria de datos  Buses de datos, control y direcciones para la memoria de datos  Memoria de instrucciones  Buses de datos (instrucciones), control y direcciones para la memoria de instrucciones  CPU = ALU + CU 7
  • 8. ARQUITECTURA HARVARD ■ Ventajas y desventajas  Facilita la realización del pipelining ➔ Completación de la instruccion actual (operadores) ➔ Recuperación de la siguiente instrucción Tomado de Universidad de Canterbury 8
  • 9. APLICACION DE ARQUITECTURAS ■ Arquitectura Von Neumann  Computadores actuales en el acceso de la CPU a la memoria principal (RAM) ■ Arquitectura Harvard  Computadores actuales en el acceso de la CPU a la memoria cache (dentro del procesador) ➔ Existen caches separados de instrucciones y datos  Microcontroladores ➔ PIC de Microchip 9
  • 10. CPU: UNIDADES ■ CU: Unidad de Control  Unidad de obtención  Unidad de decodificación  Unidad funcional ➔ Selecciona y dirige el componente adecuado de la ALU para el procesamiento ■ ALU: Unidad Aritmetico Logica  Realiza operaciones aritmeticas (+, -, *, /)  Realiza operaciones logicas (&&, ||, !) ■ FPU: Unidad de punto flotante 10
  • 11. CPU: REGISTROS ■ Architectural registers (Arquitectonicos)  Registros de proposito general ➔ Registros de datos -enteros- (EAX, EBX, ECX, EDX) ➔ Registros de dirección (ESI, EDI, ESP, EBP) ➔ Registros de punto flotante (ST0 - ST7) ➔ Registros constantes (MIPS $0 – Motorola 88100 r0) ➔ Registros vectoriales (MMX0 - MMX7, SSE?, SSE2?)  Registros de proposito especifico ➔ Registros de segmento (CS, DS, SS, ES, FS, GS) ➔ Registro de estado (EFLAGS) ➔ Registro de puntero a instrucción (EIP -PC-) 11
  • 12. CPU: REGISTROS ■ Non-Architectural Registers a.k.a ■ Machine/Model Specific Registers (MSR)  MAR: Memory Address Register  MDA: Memory Data Register  IR: Instruction Register (!= EIP)  IA32_BIOS_UPDT_TRIG (Actualizar microcodigo)  MSR_BPU_COUNTER0 (Registro de conteo) ➔ INSTRUCTIONS_EXECUTED (Evento de conteo) ■ Acceso y modificación de los MSR  Ver RDMSR y WRMSR 12
  • 13. BUS ■ Jerarquia de bus (Cercania a la CPU)  Back Side Bus: CPU <-> Cache L2  Front Side Bus: CPU <-> Northbridge  Local bus: Southbridge <-> Controlador  External bus: Controlador <-> Dispositivo ■ Diseño  Seriales: Un unico hilo  Paralelos: Multiples hilos electricos ■ Información que transporta  Control – Datos - Direcciones 13
  • 14. BUS 14
  • 15. BUS ■ Front Side Bus  EV6 (Athlon y Alpha), GTL+/AGTL+ (Intel) ■ Internal bus – Paralelos  ISA, EISA, VESA, MCA, PCI, AGP ■ Internal bus – Seriales  PCI Express (PCIe), I2C, HyperTransport ■ External bus – Paralelos  ATA (aka IDE, EIDE, ATAPI), SCSI, PCMCIA ■ External bus – Seriales  SATA, USB, IEEE 1394 (FireWire) 15
  • 16. INSTRUCTION SET ARCHITECTURE ■ Aspectos de la arquitectura visibles al programador  Instrucciones  Registros  Modos de direccionamiento  Arquitectura de memoria  Manejo de interrupciones y excepciones ■ Tiene un conjunto de codigos de operación que representan las instrucciones que puede procesar la CPU  Cada opcode tiene asociado un mnemonico 16
  • 17. INSTRUCTION SET ARCHITECTURE ■ Segun la complejidad de las instrucciones:  CISC: Complex Instruction Set Computer ➔ Sin compiladores, las instrucciones hacen demasiado ➔ Instrucciones complejas implican programas pequeños ➔ Ejecución en mas de un ciclo de reloj ➔ Menos operaciones de fetch a memoria ➔ Alta sobrecarga en el proceso de decodificación ➔ Diseño altamente complejo 17
  • 18. INSTRUCTION SET ARCHITECTURE ■ Segun la complejidad de las instrucciones:  RISC: Reduced Instruction Set Computer ➔ Instrucciones pequeñas implican programas grandes ➔ Ejecución en un ciclo de reloj ➔ Compiladores no usan frecuentemente instrucciones complejas ➔ Instrucciones complejas tienden a ser mas lentas que instrucciones pequeñas que hacen lo mismo (INDEX) ➔ Para el diseñador de un procesador es dificil optimizar todas las instrucciones de una ISA ➔ 98% de las constantes de un programa caben en 13b. ➔ Menos modos de direccionamiento, solo load-store. 18
  • 19. INSTRUCTION SET ARCHITECTURE ■ Segun la tecnica de implementación  “Cablear” la ISA en un circuito integrado ➔ Mayor rapidez al estar implementado en hardware ➔ El diseño y las modificaciones son complejas  Microprogramar la ISA (CISC~=RISC) [SIMH] ➔ Cada macroinstrucción (mnemonico y opcode -CISC-) se encuentra implementada con microinstrucciones almacenadas en el Control Store. ➔ Las microinstrucciones -RISC- son cableadas en el CI ➔ Los procesadores son faciles de diseñar ➔ Se logra mayor flexibilidad ➔ Ejemplo de microasemblers: Meta29, Micro2, MIC1 19
  • 20. INSTRUCTION SET ARCHITECTURE ■ Problemas que pudieron ser solucionados rapidamente con ISAs microprogramadas  f00f bug en Intel Pentium (0xf00fc7c8) cmpxchg8b {64bits} -> cmpxchg8b %eax cmpxchg8b %eax ➔ ➔ Compara el ECX+EBX con el operador si iguales cargar en el operador, si diferentes cargar en registros  FDIV bug en Intel Pentium ➔ La división de punto flotante no funcionaba adecuadamente con ciertos operadores 20
  • 21. INSTRUCTION SET ARCHITECTURE ■ Implementaciones concretas de ISA  x86 Varios CISC  IA-64 Intel CISC  68k Motorola CISC  Alpha DEC RISC  SPARC Sun RISC  PowerPC Apple-IBM-Motorola RISC  MIPS MIPS RISC  ARM ARM Ltd RISC  TIMI over SLIC IBM  Java Virtual Machine Sun 21
  • 22. INSTRUCTION SET ARCHITECTURE // a = b + c ■ load r3, b ■ load r4, c ■ add r3, r4 ■ store r3, a // d = a - 100 ■ load r4, =100 ■ subs r3, r4 ■ store r3, d Tomado de Sistemas Operativos de Gary Nutt 22
  • 23. HISTORIA DE UN PROGRAMA ■ Compilador  Entrada: Lenguaje de alto nivel (codigo fuente)  Salida: Lenguaje ensamblador (mnemonicos) ■ Ensamblador  Entrada: Lenguaje ensamblador (mnemonicos)  Salida: Codigo binario (codigos de operación) ■ Microprograma  Entrada: Codigo binario (codigos de operación)  Salida: Control fisico de las señales (HW) 23
  • 24. SINTAXIS DE ASM PARA X86 ■ Intel  Prefijos mov eax,1  Dirección de operandos mov dest,fuente  Operandos de memoria mov eax,[ebx+3]  Sufijos mov al,bl ■ AT&T  Prefijos movl %eax,$1  Dirección de operandos movl fuente,dest  Operandos de memoria movl 3(%ebx),%eax  Sufijos movb %bl,%al 24
  • 25. CPU: CICLO LECTURA-EJECUCIÓN PC = <dirección inicio maquina>; indicadorParada = limpiar; while (indicadorParada no activado) { IR = memoria [PC]; PC = PC + 1; ejecutar (IR); } Tomado de Sistemas Operativos de Gary Nutt 25
  • 26. MEMORIA ■ Interfaz de memoria  MAR: Memory Address Register  MDR: Memory Data Register  CMD: Command Register ■ Alineación  Restricción de la dirección de memoria que puede tener un objeto en la misma ➔ Un objeto debe estar alojado en una dirección multiplo de su tamaño ➔ byte (8), word (16), doubleword (32), quadword (64) ➔ Restricciones del bus de direcciones - Cada byte de una palabra se almacena en un banco de memoria diferente (bus tiene realmente 2 bits menos) 26
  • 27. MEMORIA ■ Jerarquia de memoria  Registros 1 ciclo de reloj  Cache (L1, L2) 1,10 ciclos de reloj  Memoria principal (RAM) 100 ciclos de reloj  Almacenamiento en disco 10000 ciclos de reloj ■ Arriba en la jerarquia de memoria  + velocidad (+ frecuencia de uso), - capacidad ■ Abajo en la jerarquia de memoria  - velocidad (- frecuencia de uso), + capacidad 27
  • 28. PROXIMIDAD REFERENCIAL ■ Todos los datos de un programa no tienen la misma probabilidad de ser accedidos ■ Tipos  Proximidad temporal (Cache) ➔ Si un dato es accedido, existe una alta probabilidad de que este sea accedido de nuevo en el futuro ➔ Replacement Policy = Least Recent Used (LRU) - El mas viejo  Proximidad espacial (Cache line) ➔ Si un dato es accedido, existe una alta probabilidad de que los datos cercanos sean accedidos en el futuro 28
  • 29. PROXIMIDAD REFERENCIAL ■ Proximidad temporal  Los ciclos hacen que las instrucciones vuelvan a ser utilizadas  El uso de variables de forma repetitiva  La invocación de subrutinas de forma reiterada ■ Proximidad espacial  Los programas son secuenciales a excepción de los saltos.  Las estructuras de datos son generalmente consecutivas en memoria. 29
  • 30. CACHE: ACTORES ■ Backing storage  Puede ser la memoria prinicipal u otro cache ■ Cache  Memoria de alta velocidad que busca disminuir el efecto del memory bound ➔ Cache hit: Hit rate/ratio ➔ Cache miss: Miss rate/ratio ■ Cliente del cache  Puede ser la CPU u otro cache 30
  • 31. CACHE: COMPONENTES ■ Index ■ Tag ■ Cache line (Proximidad espacial)  Xeon 512bits = Bus de datos 64bits x 8 lecturas Tomado de Wikipedia 31
  • 32. CPU: CICLO LECTURA DE CACHE recibir dirección de memoria de la CPU if (dirección esta en el cache) { referenciar el byte en el cache line } else { traer de memoria el bloque que lo contiene ubicar un cache line para el bloque referenciar el byte en el cache line } entregar el byte a la CPU 32
  • 33. CACHE: POLITICA DE UBICACIÓN ■ Direct mapped  Cada bloque de memoria solo puede estar en una posición especifica del cache ➔ (Dirección del bloque) % (# de cache lines del cache) ■ Fully associative  Cada bloque de memoria puede estar en cualquier posición del cache ■ Set associative  Cada bloque de memoria solo puede estar en un conjunto especifico de posiciones del cache ➔ (Dirección del bloque) % (# de conjuntos en el cache) 33
  • 34. CACHE: POLITICA DE UBICACIÓN ■ En un cache set associative, una vez ha sido seleccionado la posición se puede ubicar en cualquier posición del conjunto ■ Un cache direct mapped es un cache set associative con conjuntos de tamaño 1  Cache direct cache = 1-way set associative ■ Un cache fully associative es un cache set associative con 1 solo conjunto  Fully associative = m-way set associative 34
  • 35. CACHE: POLITICA DE UBICACIÓN Tomado de Wikipedia 35
  • 36. CACHE: POLITICA DE REMPLAZO ■ Criterio que indica cual cache line de un cache set associative con n>1 debe remplazarse ■ Aleatoria  Ignora la proximidad referecial (temporal) ■ LRU: Least Recent Used (Proximidad tempo) ■ LFU: Least Frecuently Used  Consideran la proximidad referencial (temporal) ■ ARC: Adaptive Replacement Cache  Inventado por IBM en el 2003 combina LRU y LFU 36
  • 37. CACHE: POLITICA DE ESCRITURA ■ En un write hit  Write through: Cache y memoria-backing storage ➔ Los datos son consistentes entre ambos ➔ Perdida de velocidad durante la escritura ➔ Facil implementación  Write back: Cache y a memoria solo remplazo ➔ Multiples escrituras son una sola escritura a memoria ➔ Es necesario marcar los cache lines con el flag dirty ➔ Mayor velocidad ➔ Dificil de implementar ➔ Inconsistencia entre la memoria y el cache 37
  • 38. CACHE: POLITICA DE ESCRITURA ■ En un write miss  Write allocate ➔ El bloque es ubicado en un cache line para luego ser modificado ➔ Utilizado con la politica de write back, esperando que las modificaciones siguientes queden en el cache  No write allocate ➔ La modificación ocurre en memoria sin ingresar el nuevo valor en el cache ➔ Utilizado con la politica de write through, ya que de igual forma igual forma la modificación ocurrira en memoria 38
  • 39. CACHE: COHERENCIA ■ Si un cache write-back tiene un cache-line sucio y un DMA desea acceder esos datos, el cache proporciona esa información en vez de la memoria. Si no esta sucio es marcado como invalido. ■ Mecanismos  Snooping: Leer el bus de direcciones  Snarfing: Leer el bus de direcciones y datos ■ Protocolos de coherencia de cache  MSI, MOSI, MESI, MOESI  Modified, Owned, Exclusive, Shared, Invalid 39
  • 40. CACHE: COHERENCIA ■ Modified  Cache line incosistente y unica copia ■ Owned  Cache line consistente, multiples copias y con derecho a actualizar las demas copias ■ Exclusive  Cache line consistente y unica copia ■ Shared  Cache line consistente y multiples copias ■ Invalid  Cache line invalida (stale) 40
  • 41. CACHE: MULTINIVEL ■ Caches inclusivos (Intel)  Cache L[X+1] contiene L[X] ➔ L1=32KB, L2=512KB, L3=4MB == 4MB ➔ Solo el cache mas lento hace snoop. Luego se sincronizan los demas caches. (Coherencia simple) ➔ Los accesos de coherencia acceden al cache de mayor nivel que esta menos ocupado por la CPU que el de menor nivel. ■ Caches exclusivos (AMD)  Cache L[X+1] no contiene L[X] ➔ L1=32KB, L2=512KB, L3=4MB == 4.53MB ➔ Todos los niveles deben hacer snoop 41
  • 42. DISPOSITIVOS ■ Recolectar o presentar datos 42
  • 43. DISPOSITIVOS: DIRECCIONAMIENTO ■ MMIO: Memory Mapped I/O  En el espacio de direcciones de memoria esta direccionada la memoria de los dispositivos  Se usan las mismas instrucciones de acceso a memoria para acceder a la memoria de los disp. ➔ Se simplifica el diseño de la ISA ■ PMIO: Port Mapped I/O  Existe un espacio de direcciones separado para la memoria y para los dispositivos (I/O port)  Se requieren instrucciones diferentes de la ISA para acceder este espacio de direcciones ➔ Toda la memoria esta disponible 43
  • 44. DISPOSITIVOS: DIRECCIONAMIENTO ■ MMIO: Memory Mapped I/O  Instrucciones en x86 ➔ movb / movw / movd / cpuid ➔ Serialización de instrucciones (no especulación) ■ PMIO: Port Mapped I/O  Instrucciones de I/O en x86 ISA ➔ insb / insw / insd ➔ outb / outw / outd  Espacio de direcciones de I/O en x86 ISA ➔ 16 bits direccionables por bytes ➔ 65536 bytes 44
  • 45. DISPOSITIVOS: INTERFAZ 45
  • 46. DISPOSITIVOS: INTERFAZ ■ Registro de estado [ocupado][hecho][error]  Ocioso [ 0 ][ 0 ] ➔ Se pueden colocar ordenes en el registro de ordenes ➔ Se han leido datos de los registros de datos  Finalizado [ 0 ][ 1 ] ➔ Se ha completado una operación de I/O  Trabajando [ 1 ][ 0 ] ➔ Se ha dado una orden ➔ Se ha iniciado la operación y aun no ha terminado  No definido [ 1 ][ 1 ] 46
  • 47. DISPOSITIVOS: POLLING-(SONDEO) ¿Como saber que la operación termino? ■ Polling  La CPU lee permanentemente el registro de estado de la memoria del dispositivo, para determinar que el trabajo ha finalizado (espera- activa o busy-wait) ➔ ocupado = 0 y hecho = 1 ■ Desventajas  Sin DMA la CPU estaba ocupada transfiriendo datos  Con polling la CPU esta ocupada verificando si una operación termino 47
  • 48. INTERRUPCIONES Y EXCEPCIONES ■ Eventos que indican que una condición existe en el sistema y requiere atención del procesador ■ Ventajas  Elimina las esperas activas  Permite utilizar la CPU para otras labores ■ El ciclo de lectura ejecución debe ser modificado para verificar la existencia de interrupciones 48
  • 49. INTERRUPCIONES (RECIBIDAS) ■ Generadas por hardware externo a la CPU. Se “reciben” y son asincronicas. ■ Tipos de interrupciones  Maskable Hardware Interrupt (IF en EFLAGS) ➔ Pin INTR (En x86) ➔ Operaciones de I/O finalizadas  Non-Maskable Interrupt ➔ Pin NMI (En x86) ➔ Errores irrecuperables (paridad en la RAM) ■ Origen  Hardware externo a la CPU 49
  • 50. EXCEPCIONES (DETECTADAS) ■ Tipos de excepciones  Faults: Posiblemente recuperable (Page fault) ➔ Se ejecuta de nuevo la instrucción generadora  Traps: Depuración (EFLAGS – Trap Flag – Bit 8) ➔ Se continua ejecutando la siguiente instrucción  Aborts: Double fault excepcion (8) ➔ No se puede continuar con la ejecución ■ Origen de la excepción  Detectadas por el procesador  Programadas (INT, INTO)  Verificaciones de maquina 50
  • 51. CICLO CON INTERRUPCION (HW) ... (igual que en el ciclo básico de la CPU) while (indicadorParada no activado) { IR = memoria [PC]; PC = PC + 1; ejecutar (IR); if (solicitudInterrupción activado) { memoria [x] = PC; PC = memoria [y]; } } Tomado de Sistemas Operativos de Gary Nutt 51
  • 52. INTERRUPT SERVICE ROUTINE (SW) ■ Interrupt Service Routine o Interrupt Handler  FLIH: First Level Interrupt Handler ➔ Almacenar el estado del procesador (en control stack) ➔ Deshabilitar interrupciones iguales (evitar race condition) o de menor prioridad (no expropiación) ➔ Almacenar la información solo disponible durante la interrupción ➔ Planificar el manejo de la interrupción SLIH ➔ Restaurar el estado del procesador (en control stack) ➔ Retornar el control (x86 = IRET)  SLIH: Second Level Interrupt Handler ➔ Manejar la interrupción de forma planificada 52
  • 53. VECTOR DE INTERRUPCIONES ■ Vector en la memoria que contiene las direcciones de memoria donde se alojan los FLIH de cada interrupción o excepción ■ El numero de la interrupción es el indice o desplazamiento en el vector ■ Ubicación del vector de interrupciones  En x86 es indicado por el registro IDTR  Durante la inicialización de un x86 es = a la dirección de memoria fisica 0x00000000  En Linux el vector de interrupciones se mueve a otra posición de memoria (remplaza el del BIOS) 53
  • 54. DISPOSITIVOS: PIC ■ Programmable Interrupt Controller  Dispositivo normalmente alojado en el southbridge (x86 = Intel 8259A x 2)  Canaliza las interrupciones a una unica linea de interrupción al procesador (x86 = INTR)  Encola interrupciones de menor prioridad o iguales a la atendida actualmente por el FLIH  Se gestiona como un dispositivo, pues tiene I/O (0x20-0x21) ports para recuperar la interrupcion ➔ Indicar cual fue la interrupción que ocurrio ➔ Indicar que ya fue manejada la interrupción ➔ Deshabilitar especificamente alguna interrupción 54
  • 55. DISPOSITIVOS: CICLO I/O ■ Ciclo de I/O a memoria (I/O-to-memory) load R2, =LONGITUD ciclo: load R1, [memoria_cont, R2] store R1, [memoria_ppal, R2] dec R2 jnz ciclo 55
  • 56. DISPOSITIVOS: DMA ■ Direct Memory Access  Evita que la CPU pierda tiempo realizando escrituras entre los dispositivos y la memoria  Normalmente incluido en el Southbridge  Es un dispositivo (Intel 8237 / 82374) ➔ Controlador DMA 1 (4) canales: I/O ports 0x00–0x1f ➔ Controlador DMA 2 (4) canales: I/O ports 0xc0–0xdf  Interfaz para cada canal (programado x driver) ➔ Registro de orden (dirección de la transferencia) ➔ Registro de dirección de memoria principal (src o dst) ➔ Registro contador (cantidad de bytes a transferir) 56
  • 57. ESQUEMATICO DE DMA 57
  • 58. FUNCIONAMIENTO DE DMA ■ Controlador solicita DMA: DRQ#=1 ■ 8237 solicita el bus a la CPU: HQR=1 ■ La CPU libera el bus: HLDA=1 ■ El 8237 señala lo siguiente:  Bus direcciones = Direccion memoria principal  MEMW=1, MEMR=0, IOR=1, IOW=0  DMA confirma al controlador: ACK#=1 ■ Controlador pone datos en el bus de datos  El I/O port origen esta cableado en el controlador ■ Si la transferencia termina: DRQ#=0 58
  • 59. INSTRUCCIONES DE I/O ■ Categorias  Instrucciones de control ➔ Indican a un dispositivos las funciones que debe realizar  Instrucciones de estado ➔ Verifica las condiciones de estado de un controlador de dispositivo  Instrucciones de transferencia ➔ Leen o escriben los datos entre la memoria del dispositivo y la memoria principal o los registros 59
  • 60. ESTRATEGIAS DE ENTRADA/SALIDA ■ ¿La CPU es responsable de ...?  Estado: Determinar si la operación de E/S finalizo  Transferencia: Transferir datos de la memoria del dispositivo a la memoria principal ■ Tipos  I/O Directa con sondeo  I/O Por DMA con sondeo ➔ No aplica. Si tiene DMA debe tener interrupciones.  I/O Directa con interrupciones  I/O Por DMA con interrupciones 60
  • 61. PROTECCIÓN POR HARDWARE ■ Otorgar mayores o menores privilegios de acceso a recursos criticos a partir de la confiabilidad del software  Sistema operativo ➔ Solo el sistema operativo esta habilitado para realizar las operaciones criticas  Aplicaciones ➔ Las aplicaciones no deben modificar el sistema operativo ➔ Las aplicaciones deben permitir que otras aplicaciones se ejecuten 61
  • 62. ANILLOS DE PROTECCIÓN ■ aka Niveles de privilegio ■ Nivel 0 (Software + critico + confiable)  Kernel mode (Kernel)  Mas privilegios de acceso ➔ Acceder a memoria de todos los anillos de protección ➔ Ejecutar todas las instrucciones de la ISA ■ Nivel 3 (Software – critico – confiable)  User mode (Aplicaciones)  Menos privilegios de acceso 62
  • 63. PROTECCIÓN ■ Protección de I/O  Las instrucciones de entrada y salida son instrucciones privilegiadas ■ Protección de memoria  Las aplicaciones no deben modificar ni código ni estructuras de datos del sistema operativo ➔ Vector de interrupciones ➔ Interrupt Service Routines ■ Protección de CPU  Interrupciones (0) generadas periodicamente de forma programada. PIT = Dispositivo 8253/4 63