Konular her şeyi paylaşır [1]. Tüm süreç için bir adres alanı vardır.
Her iş parçacığının kendi yığını ve kayıtları vardır, ancak tüm iş parçacıklarının yığınları paylaşılan adres alanında görülebilir.
Bir iş parçacığı yığınında bir nesne atar ve adresi başka bir iş parçacığına gönderirse, her ikisinin de o nesneye eşit erişimi olur.
Aslında, daha geniş bir sorunu fark ettim: Sanırım kelimenin iki kullanımını karıştırıyorsunuz segment .
Yürütülebilir dosya (ör. ELF) için dosya biçiminde, derlenmiş kod (metin), başlatılmış veriler, bağlayıcı sembolleri, hata ayıklama bilgileri vb. İçeren bölümler olarak adlandırılabilecek farklı bölümler vardır. burada, sadece çalışma zamanı yapıları olduğu için.
Bu ikili dosya segmentleri, farklı adreslerle (örneğin kod / metin için salt okunur yürütülebilir dosya ve başlatılmış veriler için yazılamaz kopyalanmayan) işlem adresi alanına ayrı olarak eşlenebilir.
Bu adres alanının alanları, yığın ayırma ve iş parçacığı yığınları gibi farklı amaçlarla kullanılır (kural çalışma zamanı kitaplıklarınız tarafından zorlanır). Yine de hepsi sadece bellektir ve sanal 8086 modunda çalışmadığınız sürece muhtemelen bölümlere ayrılmaz. Her iş parçacığının yığını, iş parçacığı oluşturma zamanında ayrılan bir bellek yığınıdır ve geçerli yığın üst adresi bir yığın işaretçi kaydında depolanır ve her iş parçacığı, diğer kayıtlarıyla birlikte kendi yığın işaretçisini tutar.
[1] Tamam, biliyorum: sinyal maskeleri, TSS / TSD vb. Eşlenen program bölümleri de dahil olmak üzere adres alanı yine de paylaşılıyor.