Bir işlem yasa dışı bir talimatı yerine getirmeye çalıştıktan sonra nasıl sona erer?


0

Bir işlem yasadışı bir talimat yürüttüğünde (sıfıra bölme veya yasak bir hafıza alanına erişmeye çalışırken), bu CPU tarafından algılanır ve ardından CPU, kaydetmesi gerekenleri kaydeder ve IP'yi (talimat işaretçisi) o özel hatanın sorumlusu olan OS rutin adresine değiştirir. Sonra süreç anormal biçimde sonlanıyor (ya da değil?).

İki şeyi bilmek istiyorum:
1. Yasadışı talimatlar vermeye çalışan süreç yapar her zaman anormal olarak sonlandırılıyor mu?
2. Fesih OS veya CPU tarafından mı yapılıyor?

Yanıtlar:


1
  1. Yok hayır.
  2. İstisna CPU'da ortaya çıkar, ardından CPU kontrolü OS'ye aktarır.

Bu olaya "istisna" diyoruz. DivisionByZero tipik bir istisnadır.

CPU, işlem / yazılım ile değil, kodlarla çalışır. İşletim sistemi transferleri CPU için bir sonraki opcode. CPU yanıtı bir istisna ise, işletim sistemi bundan sonra ne izleyeceğini ele alır: sonlandırma ya da ileri sarma. Ayrıca, işlem istisnaları yönetmek için işletim sistemi kurabilir, bu durumda işletim sistemi tarafından alınan ve işleme yönlendirilen CPU istisnası ve işlem bir sonraki adımı yönetebilir.

Fakat bu çok karmaşık bir konudur, birkaç kelimeyle özetlemek zor.


@Plajdo: Teşekkürler, cevaplarımı düzenlemek için çekinmeyin, uzun zamandır İngilizce kullanmadım.
uDev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.