# dcalvog25/py01-so-gestordeprocesos architecture

> Architecture diagram of the GitHub repository dcalvog25/py01-so-gestordeprocesos, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dcalvog25/py01-so-gestordeprocesos
- Repository: https://github.com/dcalvog25/py01-so-gestordeprocesos

## Overview

PY01-SO-GestorDeProcesos is a Swing-based MiniPC and operating-system simulator. The user loads an ASM file, which the controller parses into instructions, admits as a process, and runs stepwise or automatically on the simulated CPU; keyboard interrupts can pause execution for input, and the interface displays machine state. The model also includes FCFS scheduling, kernel-resident process-control blocks, a simulated stack, configurable RAM, and simulated disk storage. The README gives little detail, and controller excerpts are partial, so uncertain dispatch and storage wiring is omitted.

Main entry points: [`programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/controller/ControllerMiniPC.java`](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/controller/ControllerMiniPC.java) (UI controller), [`programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/CPU.java`](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/CPU.java) (CPU interpreter), [`programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/BCP.java`](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/BCP.java) (Process control block), [`programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/view/MiniPCFrame.java`](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/view/MiniPCFrame.java) (MiniPC window)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User interface"]
  node_app["Application entry<br/>[T1SOMiniPC.java]"]
  node_frame["MiniPC window<br/>[MiniPCFrame.java]"]
  node_controller["UI controller"]
end

subgraph group_execution["Program execution"]
  node_asm["ASM converter"]
  node_instruction["Instruction model<br/>[Instruccion.java]"]
  node_cpu["CPU interpreter<br/>[CPU.java]"]
  node_screen["Console output<br/>[Pantalla.java]"]
end

subgraph group_process["Process management"]
  node_planner["FCFS scheduler<br/>[Planificador.java]"]
  node_processes["Process list<br/>[ListaProcesos.java]"]
  node_bcp["Process control block<br/>[BCP.java]"]
  node_stack["Process stack<br/>[PilaBCP.java]"]
  node_dispatcher["Dispatcher<br/>[Dispatcher.java]"]
end

subgraph group_machine["Simulated machine"]
  node_memory[("RAM<br/>[Memoria.java]")]
  node_disk[("Simulated disk<br/>[Disco.java]")]
end

node_user(("User"))
node_asmfile["ASM file"]
node_keyboard(("Keyboard input"))

node_app -->|"creates"| node_frame
node_app -->|"connects"| node_controller
node_user -->|"operates"| node_frame
node_frame -->|"events"| node_controller
node_asmfile -->|"loads"| node_controller
node_controller -->|"parses"| node_asm
node_asm -->|"creates"| node_instruction
node_controller -->|"steps or runs"| node_cpu
node_controller -->|"uses"| node_disk
node_controller -->|"refreshes"| node_frame
node_keyboard -->|"enters input"| node_frame
node_controller -->|"delivers input"| node_cpu
node_cpu -->|"executes"| node_instruction
node_cpu -->|"reads and writes"| node_memory
node_cpu -->|"updates registers"| node_bcp
node_cpu -->|"prints"| node_screen
node_planner -->|"manages"| node_processes
node_planner -->|"admits process"| node_bcp
node_processes -->|"links"| node_bcp
node_bcp -->|"stores state"| node_memory
node_bcp -->|"creates"| node_stack
node_stack -->|"reads and writes"| node_memory
node_dispatcher -->|"dispatches"| node_cpu

click node_app "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/T1SOMiniPC.java"
click node_frame "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/view/MiniPCFrame.java"
click node_controller "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/controller/ControllerMiniPC.java"
click node_asm "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/ConvertidorASM.java"
click node_instruction "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Instruccion.java"
click node_cpu "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/CPU.java"
click node_screen "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Pantalla.java"
click node_planner "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Planificador.java"
click node_processes "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/ListaProcesos.java"
click node_bcp "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/BCP.java"
click node_stack "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/PilaBCP.java"
click node_dispatcher "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Dispatcher.java"
click node_memory "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Memoria.java"
click node_disk "https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Disco.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_frame,node_controller,node_user toneBlue
class node_asm,node_instruction,node_cpu,node_screen toneAmber
class node_planner,node_processes,node_bcp,node_stack,node_dispatcher toneMint
class node_memory,node_disk toneRose
class node_asmfile,node_keyboard toneIndigo
```

## Components

### User interface

- [Application entry](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/T1SOMiniPC.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/T1SOMiniPC.java`
- [MiniPC window](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/view/MiniPCFrame.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/view/MiniPCFrame.java`
- [UI controller](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/controller/ControllerMiniPC.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/controller/ControllerMiniPC.java`

### Program execution

- [ASM converter](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/ConvertidorASM.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/ConvertidorASM.java`
- [Instruction model](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Instruccion.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Instruccion.java`
- [CPU interpreter](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/CPU.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/CPU.java`
- [Console output](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Pantalla.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Pantalla.java`

### Process management

- [FCFS scheduler](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Planificador.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Planificador.java`
- [Process list](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/ListaProcesos.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/ListaProcesos.java`
- [Process control block](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/BCP.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/BCP.java`
- [Process stack](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/PilaBCP.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/PilaBCP.java`
- [Dispatcher](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Dispatcher.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Dispatcher.java`

### Simulated machine

- [RAM](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Memoria.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Memoria.java`
- [Simulated disk](https://github.com/dcalvog25/py01-so-gestordeprocesos/blob/main/programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Disco.java): `programa/T1SOMiniPC/src/main/java/com/minipc/t1sominipc/model/Disco.java`

### Other components

- **User**
- **ASM file**
- **Keyboard input**

## Connections

- Application entry → MiniPC window: creates
- Application entry → UI controller: connects
- User → MiniPC window: operates
- MiniPC window → UI controller: events
- ASM file → UI controller: loads
- UI controller → ASM converter: parses
- ASM converter → Instruction model: creates
- UI controller → CPU interpreter: steps or runs
- UI controller → Simulated disk: uses
- UI controller → MiniPC window: refreshes
- Keyboard input → MiniPC window: enters input
- UI controller → CPU interpreter: delivers input
- CPU interpreter → Instruction model: executes
- CPU interpreter → RAM: reads and writes
- CPU interpreter → Process control block: updates registers
- CPU interpreter → Console output: prints
- FCFS scheduler → Process list: manages
- FCFS scheduler → Process control block: admits process
- Process list → Process control block: links
- Process control block → RAM: stores state
- Process control block → Process stack: creates
- Process stack → RAM: reads and writes
- Dispatcher → CPU interpreter: dispatches
