İşletim sisteminde thread ve kaynak kullanımı hakkında

Başlatan tunayk, 14 Temmuz 2020, 12:35:16

tunayk

İşletim sistemi çalışma mantığı konusunda tecrübeli arkadaşların fikrini almak istiyorum . Windows özelinde olmakla beraber hepsini ilgilendirdiği için genel olarak düşünebiliriz.

Sahadaki donanımlardan seri/ethernet veya usb kanalıyla veri toplayıp işleyen bir uygulamamız olsun.  Bu uygulamada veri toplama işini thread içinde yapalım.  Veri toplama peryodumuz 0.1 - 1sn arasında düşünülebilir. Therad içindeki kod parçacığı ilgili porttan uzak cihaza veri gönderiyor, gelen cevabı işliyor ve sonraki çevrime kadar da uykuda bekliyor.

Sorular şöyle.

1- Bu veri toplayan thread, uygulama ilk çalıştırıldığında çalıştırılan ve içerde bir while döngüsünde sonsuz dönen bir yapıda mı olsa iyidir yoksa bir dış timer vasıtasıyla zamanı geldiğinde yeniden oluşturulup işi bittiğinde yok olan bir yapıda mı? (Uygulamanın ve Sistemin performansı açısında cevaplayalım)

2- Sorguda kullandığımız donanım kaynağını başka bir uygulamanın kullanmadığını düşünelim. Bu kaynağı thread başında bir kere açıp, sürekli açık tutmak mı yoksa, her sorgu başında kaynağı kullanıma açıp, sorgu tamamlandığında kullanıma kapatmak mı tercih edilmelidir. (Uygulamanın ve Sistemin performansı açısında cevaplayalım)

3- İkinci sorudaki durumu, SQL Veritabanları veya diskte yer alan dosyalar için de cevaplayalım.


Soruları cevaplarken sistemimizde fazlasıyla yeterli RAM ve işlemci gücü bulunduğunuz düşünebiliriz. Hedefimiz hem uygulamamızın hem de işletim sisteminin daha aktif kalabilmesi.

brandice5

1. Uygulama başladığında bir thread yaratıp içinde dönmek daha iyi çünkü her seferinde thread oluşturup silmek hele ki 0,1-1 sn aralığında bunu yapmak daha fazla kaynak tüketir.

2. Normalde performans olarak thread başlangıcında bır kere açıp sürekli kullanmak daha iyi ama benim tecrübelerime göre mesela USB-RS232 çevirici kullanıyorsanız port açıldıktan sonra bir şekılde bağlantı koparsa veya bırı usb portu söküp tekrar takarsa haberleşmenın devamı mümkün olmuyor. Bu yüzden bence her seferınde açıp kapatmak daha güvenlı, bır döngüde haberleşme olmasa bıle ıkıncı döngüde tekrar haberleşme sağlanır.

3. SQL ve disk bağlantısı dışarıdan bir etki ile etkilenmeyeceği için bunların sürekli açık olması daha iyidir.