{"id":29139635,"url":"https://github.com/virn2005/proyectoops2_virtualmemorysimulator","last_synced_at":"2025-06-30T15:37:35.918Z","repository":{"id":296336638,"uuid":"993019943","full_name":"VIRN2005/ProyectoOps2_VirtualMemorySimulator","owner":"VIRN2005","description":"This script simulates memory paging with FIFO, LRU, and OPT policies, tracking page faults, replacements, disk writes, and EAT from a trace file.","archived":false,"fork":false,"pushed_at":"2025-05-30T05:20:27.000Z","size":2022,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-05-30T06:03:51.877Z","etag":null,"topics":["fifo","lru","opt","phython","trace"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VIRN2005.png","metadata":{"files":{"readme":"ReadME.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-30T04:46:44.000Z","updated_at":"2025-05-30T05:20:31.000Z","dependencies_parsed_at":"2025-05-30T06:03:53.759Z","dependency_job_id":"1623e0dc-2af2-4427-8ada-65d4e1fb07fd","html_url":"https://github.com/VIRN2005/ProyectoOps2_VirtualMemorySimulator","commit_stats":null,"previous_names":["virn2005/proyectoops2_virtualmemorysimulator"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VIRN2005/ProyectoOps2_VirtualMemorySimulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VIRN2005%2FProyectoOps2_VirtualMemorySimulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VIRN2005%2FProyectoOps2_VirtualMemorySimulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VIRN2005%2FProyectoOps2_VirtualMemorySimulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VIRN2005%2FProyectoOps2_VirtualMemorySimulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VIRN2005","download_url":"https://codeload.github.com/VIRN2005/ProyectoOps2_VirtualMemorySimulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VIRN2005%2FProyectoOps2_VirtualMemorySimulator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262801910,"owners_count":23366648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fifo","lru","opt","phython","trace"],"created_at":"2025-06-30T15:37:34.633Z","updated_at":"2025-06-30T15:37:35.892Z","avatar_url":"https://github.com/VIRN2005.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Simulador Avanzado de Gestión de Memoria Virtual\n\nEste simulador en Python implementa un **sistema completo de gestión de memoria virtual** con múltiples algoritmos de **reemplazo de página** y análisis estadístico avanzado. Procesa archivos de trazas de acceso a memoria y proporciona métricas detalladas de rendimiento.\n\n---\n\n## 🧠 Características Principales\n\n### Algoritmos de Reemplazo Implementados\n- **FIFO** (First In, First Out) - Reemplaza la página más antigua\n- **LRU** (Least Recently Used) - Reemplaza la página menos recientemente usada\n- **LFU** (Least Frequently Used) - Reemplaza la página menos frecuentemente usada\n- **CLOCK** - Algoritmo de segunda oportunidad con bit de referencia\n- **OPT** (Óptimo) - Reemplaza la página que no se usará por más tiempo (requiere preprocesamiento)\n\n### Métricas Calculadas\n- **Fallos de página** (Page Faults)\n- **Tasa de aciertos** (Hit Rate)\n- **Número de reemplazos**\n- **Escrituras a disco** (cuando se elimina una página sucia)\n- **Tiempo de Acceso Efectivo (EAT)**\n- **Estadísticas de operaciones** (lecturas vs escrituras)\n- **Páginas únicas accedidas**\n- **Frecuencia de acceso por página**\n\n### Características Avanzadas\n- 🎨 **Interfaz colorida** con tablas formateadas y barras de progreso\n- ⚡ **Procesamiento eficiente** de archivos grandes con `tqdm`\n- 📊 **Análisis estadístico completo** con comparaciones de rendimiento\n- 💾 **Exportación de resultados** en formato JSON\n- 🔧 **Parser de argumentos** flexible para configuración personalizada\n- 📈 **Visualización en tiempo real** opcional\n\n---\n\n## 🚀 Instalación y Uso\n\n### 🔧 Requisitos\n\n```bash\npip install tqdm\n```\n\nRequiere **Python 3.x**\n\n### ▶️ Uso Básico\n\n```bash\npython Virtual_Memory_Simulator.py \u003carchivo_de_traza\u003e\n```\n\n### ▶️ Uso Avanzado\n\n```bash\n# Configuración personalizada de frames y políticas\npython Virtual_Memory_Simulator.py trace.txt --frames 10 50 100 --policies FIFO LRU OPT\n\n# Guardar resultados en JSON\npython Virtual_Memory_Simulator.py trace.txt --save-json resultados.json\n\n# Mostrar estadísticas en tiempo real\npython Virtual_Memory_Simulator.py trace.txt --realtime\n\n# Probar todos los algoritmos\npython Virtual_Memory_Simulator.py trace.txt --policies FIFO LRU LFU CLOCK OPT\n```\n\n### 📋 Opciones de Línea de Comandos\n\n| Opción | Descripción | Ejemplo |\n|--------|-------------|---------|\n| `trace_file` | Archivo de traza (requerido) | `trace.txt` |\n| `--frames` | Número de frames a probar | `--frames 10 25 50 100` |\n| `--policies` | Algoritmos a simular | `--policies FIFO LRU OPT` |\n| `--save-json` | Guardar resultados en JSON | `--save-json results.json` |\n| `--realtime` | Mostrar estadísticas en tiempo real | `--realtime` |\n\n---\n\n## ⚙️ Configuración Predeterminada\n\n```python\n# Configuración por defecto en el código\nframe_counts = [10, 50, 100]           # Cantidad de marcos de página\nreplacement_policies = ['FIFO', 'LRU', 'OPT']  # Algoritmos a simular\n\n# Tiempos para cálculo de EAT\nMEMORY_ACCESS_TIME = 100          # nanosegundos\nPAGE_FAULT_TIME = 10_000_000     # nanosegundos (10ms)\n```\n\n---\n\n## 📊 Formato de Salida\n\n### Tabla de Resultados Principales\n```\n┌────────┬──────────┬─────────────┬───────────┬─────────────┬────────────┐\n│ Frames │ Política │ Page Faults │  Hit Rate │   EAT (ns)  │ Tiempo (s) │\n├────────┼──────────┼─────────────┼───────────┼─────────────┼────────────┤\n│     10 │   FIFO   │    12,345   │   87.65%  │  234,567.89 │    3.21    │\n│     10 │    LRU   │    10,987   │   89.23%  │  198,765.43 │    2.97    │\n│     10 │    OPT   │     9,876   │   90.12%  │  187,654.32 │    4.15    │\n└────────┴──────────┴─────────────┴───────────┴─────────────┴────────────┘\n```\n\n### Estadísticas Detalladas por Simulación\n- **Page Faults**: Número total de fallos de página\n- **Hit Rate**: Porcentaje de accesos que resultaron en acierto\n- **Fault Rate**: Porcentaje de accesos que resultaron en fallo\n- **Replacements**: Número de reemplazos de página realizados\n- **Disk Writes**: Escrituras a disco por páginas sucias\n- **EAT**: Tiempo de Acceso Efectivo en nanosegundos\n- **Reads/Writes**: Distribución de operaciones de lectura y escritura\n- **Unique Pages**: Número de páginas únicas accedidas\n\n### Mejores Rendimientos\nEl simulador identifica automáticamente:\n- 🥇 **Mejor Hit Rate**: Algoritmo con mayor tasa de aciertos\n- 🥇 **Mejor EAT**: Algoritmo con menor tiempo de acceso efectivo\n- 🥇 **Más Rápido**: Algoritmo con menor tiempo de ejecución\n\n---\n\n## 📁 Formato del Archivo de Traza\n\nCada línea debe contener una dirección hexadecimal seguida de la operación:\n\n```\n\u003cdirección_hexadecimal\u003e \u003coperación\u003e\n```\n\n### Ejemplo:\n```\n0x0040A23F R\n0x0010B23A W\n0x00508000 R\n0x0040A240 W\n```\n\n**Operaciones soportadas:**\n- `R` = Lectura (Read)\n- `W` = Escritura (Write)\n\n---\n\n## 🔬 Funcionamiento de los Algoritmos\n\n### FIFO (First In, First Out)\n- Mantiene una cola de páginas en orden de llegada\n- Reemplaza siempre la página más antigua\n- Implementación: `deque` para eficiencia O(1)\n\n### LRU (Least Recently Used)\n- Rastrea el orden de uso de las páginas\n- Reemplaza la página menos recientemente usada\n- Implementación: `OrderedDict` para acceso O(1)\n\n### LFU (Least Frequently Used)\n- Cuenta la frecuencia de acceso de cada página\n- En caso de empate, usa el tiempo de último acceso\n- Implementación: Contadores con timestamps\n\n### CLOCK (Segunda Oportunidad)\n- Utiliza un bit de referencia circular\n- Da una \"segunda oportunidad\" a páginas referenciadas\n- Implementación: Puntero circular con bits de referencia\n\n### OPT (Óptimo de Belady)\n- Requiere conocimiento futuro de referencias\n- Reemplaza la página que se usará más tarde en el futuro\n- Implementación: Preprocesamiento completo del archivo\n\n---\n\n## 📈 Exportación de Resultados\n\n### Formato JSON\n```json\n{\n  \"timestamp\": \"2024-12-01T10:30:00\",\n  \"results\": [\n    {\n      \"frames\": 10,\n      \"policy\": \"FIFO\",\n      \"page_faults\": 12345,\n      \"hit_rate\": 87.65,\n      \"eat\": 234567.89,\n      \"execution_time\": 3.21,\n      \"total_accesses\": 100000,\n      \"unique_pages\": 2500\n    }\n  ],\n  \"summary\": {\n    \"total_simulations\": 9,\n    \"policies_tested\": [\"FIFO\", \"LRU\", \"OPT\"],\n    \"frame_counts_tested\": [10, 50, 100]\n  }\n}\n```\n\n---\n\n## 🎯 Casos de Uso\n\n### Investigación Académica\n- Comparación de algoritmos de reemplazo de página\n- Análisis de patrones de acceso a memoria\n- Estudios de localidad temporal y espacial\n\n### Optimización de Sistemas\n- Evaluación de configuraciones de memoria\n- Análisis de rendimiento de aplicaciones\n- Tuning de sistemas operativos\n\n### Educación\n- Demostración visual de algoritmos de SO\n- Análisis comparativo de políticas\n- Comprensión de conceptos de memoria virtual\n\n---\n\n## 📌 Notas Técnicas\n\n### Cálculo del EAT\n```\nEAT = Tiempo_Acceso_Memoria + (Tasa_Fallos × Tiempo_Fallo_Página)\nEAT = 100ns + (fault_rate × 10,000,000ns)\n```\n\n### Optimizaciones Implementadas\n- **Preprocesamiento inteligente** para el algoritmo OPT\n- **Estructuras de datos eficientes** (deque, OrderedDict)\n- **Conteo rápido de líneas** para archivos grandes\n- **Barras de progreso** para archivos que requieren mucho procesamiento\n\n### Limitaciones\n- El algoritmo OPT requiere dos pasadas por el archivo\n- El consumo de memoria es proporcional al número de páginas únicas\n- Los archivos extremadamente grandes pueden requerir mucho tiempo de preprocesamiento\n\n---\n\n## 👨‍💻 Autor\n\n**Víctor Romero** - 12211079\n\n---\n\n## 🏆 Características Destacadas\n\n- ✅ **5 algoritmos de reemplazo** implementados\n- ✅ **Interfaz visual atractiva** con colores y tablas\n- ✅ **Análisis estadístico completo**\n- ✅ **Exportación flexible** de resultados\n- ✅ **Configuración personalizable**\n- ✅ **Manejo eficiente** de archivos grandes\n- ✅ **Comparación automática** de rendimiento","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirn2005%2Fproyectoops2_virtualmemorysimulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvirn2005%2Fproyectoops2_virtualmemorysimulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirn2005%2Fproyectoops2_virtualmemorysimulator/lists"}