Kryteria Popka-Goldberga – kryteria właściwego funkcjonowania maszyny wirtualnej oraz kryteria możliwości zbudowania takowej na zadanej architekturze komputera przedstawione w 1974 roku przez Geralda J. Popka i Roberta P. Goldberga.
Maszyna wirtualna w myśli Popka i Goldberga by być skuteczna musi spełniać trzy warunki:
W systemie operacyjnym wyróżniamy trzy zbiory instrukcji dostępnych na danej architekturze:
Warto pamiętać, że nie są ani rozłączne, ani nie sumują się do zbioru wszystkich instrukcji architektury.
Z tą wiedzą możemy poznać twierdzenie przedstawione przez Popka i Goldberga:
Dla każdego standardowego komputera trzeciej generacji wirtualna maszyna może zostać skonstruowana, jeśli zbiór instrukcji wrażliwych jest podzbiorem zbioru instrukcji uprzywilejowanych.
Z tegoż twierdzenia wynika tyle, iż każda operacja, która mogła spowodować niepoprawne działanie maszyny wirtualnej, powoduje przerwanie lub wywołanie systemowe, dzięki czemu maszyna może podjąć odpowiednie kroki. Cała reszta instrukcji nieuprzywilejowanych jest przekazywana po prostu do fizycznego sprzętu, aby uzyskać odpowiednią wydajność.
Okazuje się jednak, że można zbudować maszynę wirtualizującą architekturę nie spełniającą założeń twierdzenia, choć zwykle powoduje to utratę wydajności lub nakłada inne ograniczenia. Przykładami są parawirtualizacja oraz dynamiczna rekompilacja z wykrywaniem wrażliwych instrukcji.