Durum (bilgisayar)

Bilgi teknolojisi ve bilgisayar biliminde eğer önceki olayları veya kullanıcı etkileşimlerini hatırlamak için tasarlandıysa biliminde bir sistem durumsal olarak ifade edilmiştir, hatırlanan bilgiye ise sistemin durumu denir.
Bir sistemin kullanabileceği durumlar kümesi, sistemin durum alanı olarak bilinir. Ayrık bir sistemde, durum uzayı sayılabilir ve genellikle sonludur. Sistemin iç davranışı veya çevresi ile etkileşimi, sistemin durumunu değiştirmesine neden olabilecek veya vermeyecek, girdiyi kabul etme veya çıktı üretme gibi ayrı ayrı gerçekleşen bireysel eylem veya olaylardan oluşur. Bu tür sistemlerin örnekleri, dijital mantık devreleri ve bileşenleri, otomata ve biçimsel dil, bilgisayar programları ve bilgisayarlardır.
Dijital bir devrenin veya deterministik bilgisayar programının herhangi bir zamandaki çıkışı, tamamen mevcut girişleri ve durumu tarafından belirlenir.
Dijital mantık devresi durumu
Dijital mantık devreleri iki türe ayrılabilir: çıkış sinyalleri yalnızca mevcut giriş sinyallerine bağlı olan kombinasyonel mantık ve çıkışları hem mevcut girişlerin hem de geçmiş giriş geçmişinin bir fonksiyonu olan sıralı mantık. Sıralı mantıkta, geçmiş girişlerden gelen bilgiler, flip-floplar gibi elektronik bellek öğelerinde saklanır. Bu hafıza elemanlarının belirli bir zamanda depolanan içerikleri toplu olarak devrenin durumu olarak adlandırılır ve devrenin erişebildiği geçmişle ilgili tüm bilgileri içerir.
Bir flip-flop gibi her ikili bellek elemanı, bir veya sıfır olmak üzere yalnızca iki olası duruma sahip olduğundan ve sonlu sayıda bellek elemanı olduğundan, bir dijital devre yalnızca belirli bir sonlu sayıda olası duruma sahiptir. N, devredeki ikili bellek elemanlarının sayısı ise, bir devrenin sahip olabileceği maksimum durum sayısı 2 üzeri N'dir.
Program durumu
Buna benzer şekilde, bir bilgisayar programı, verileri bilgisayarın belleğindeki saklama konumlarını temsil eden değişkenler halinde depolar. Bu bellek konumlarının içeriğine, programın yürütülmesinin herhangi bir noktasında, programın durumu denir.
Ayrıştırıcılar, güvenlik duvarları, iletişim protokolleri ve şifreleme gibi veri akışlarında seri veya sıralı olarak çalışan bilgisayar programları için daha özel bir durum tanımı kullanılır. Seri programlar, gelen veri karakterleri veya paketleri üzerinde sırayla, birer birer çalışır. Bu programların bazılarında, alınan önceki veri karakterleri veya paketleri hakkındaki bilgiler değişkenler içinde saklanır ve mevcut karakter veya paketin işlenmesini etkilemek için kullanılır. Buna durum bilgisi olan bir protokol adı verilir ve önceki işlem döngüsünden taşınan verilere durum adı verilir. Diğerlerinde, programın önceki veri akışı hakkında hiçbir bilgisi yoktur ve her veri girişiyle yeniden başlar; buna durumsuz protokol denir.
Sabit kodlu programlama, hesaplamayı program durumu ve program durumunu değiştiren ifadeler açısından tanımlayan bir programlama paradigmasıdır (bir programlama dili tasarlama yolu). Bildirim temelli programlama dillerinde, program istenen sonuçları açıklar ve durumdaki değişiklikleri doğrudan belirtmez.
Sonlu durum makineleri
Sıralı bir devrenin veya bilgisayar programının herhangi bir zamanda çıktısı tamamen mevcut girişleri ve mevcut durumu tarafından belirlenir. Her ikili bellek elemanı sadece iki olası duruma sahip olduğundan, 0 veya 1, bir devrenin alabileceği farklı durumların toplam sayısı sonludur ve bellek elemanlarının sayısıyla sabitlenir. N ikili bellek öğesi varsa, bir dijital devre en fazla 2 üzeri N farklı duruma sahip olabilir. Durum kavramı, hem sıralı dijital devreleri hem de bilgisayar programlarını tasarlamak için kullanılan, sonlu durum makinesi olarak adlandırılan soyut bir matematiksel hesaplama modelinde resmileştirilmiştir.
Örnekler
Bir durumu olan günlük bir cihaza örnek bir televizyon setidir. Bir TV'nin kanalını değiştirmek için, kullanıcı genellikle uzaktan kumandada bir "kanal yukarı" veya "kanal aşağı" düğmesine basar ve bu, sete kodlu bir mesaj gönderir. Kullanıcının istediği yeni kanalı hesaplamak için, televizyondaki dijital tuner, içinde bulunduğu mevcut kanalın numarasını kaydetmiş olmalıdır. Ardından, yeni kanalın numarasını almak için bu numaradan bir tane ekler veya bir çıkarır ve TV'yi bu kanalı alacak şekilde ayarlar. Bu yeni numara daha sonra mevcut kanal olarak saklanır. Benzer şekilde, televizyon da hoparlörün ürettiği ses seviyesini kontrol eden bir numara kaydeder. "Sesi artır" veya "Sesi kıs" düğmelerine basmak bu sayıyı artırır veya azaltır, yeni bir ses düzeyi ayarlar. Hem mevcut kanal hem de mevcut ses seviyesi numaraları TV'nin durumunun bir parçasıdır. Bunlar, TV kapatıldığında bilgileri koruyan uçucu olmayan bellekte depolanır, böylece tekrar açıldığında TV önceki istasyonuna ve ses seviyesine geri döner.
Başka bir örnek olarak, bir mikroişlemcinin durumu, içindeki tüm bellek öğelerinin içeriğidir: toplayıcılar, depolama kayıtları, veri önbellekleri ve bayraklar. Dizüstü bilgisayarlar gibi bilgisayarlar, işlemciyi kapatarak enerji tasarrufu yapmak için uyku moduna girdiğinde, işlemcinin durumu bilgisayarın sabit diskinde depolanır, böylece bilgisayar hazırda bekletme modundan çıktığında geri yüklenebilir ve işlemci, kaldığı yerden işlemlere devam eder.