Süreçler sistem kaynaklarının ayrılması için kullanılan ilkel birimlerdir. Her sürecin kendi adres uzayı ve (dolayısıyla) bir denetim evresi vardır. Bir süreç bir yazılımı çalıştırır; aynı yazılımı çalıştıran çok sayıda süreç oluşturabilirsiniz fakat her sürecin kendi adres uzayında kendi yazılım kopyası bulunur ve onu diğer kopyalardan bağımsız olarak çalıştırır. Bir süreç aynı yazılım içinde çok sayıda denetim evresine sahip olabildiği ve bir yazılım çok sayıda mantıksal olarak ayrı modüllerin birleşimi olabildiği halde bir süreç daima sadece bir yazılımı çalıştırır.
Biz bu kılavuzun amaçlarına uygun olarak ve Unix sistemi bağlamında bir ortak tanımın karşılığı olan "program" için "yazılım" karşılığını kullanıyoruz. Popüler kullanımda, "program" daha geniş bir tanıma sahiptir; örneğin, bir sistemin çekirdeği, bir metin düzenleyici makrosu, karmaşık bir yazılım paketi veya bir süreç içinde çalıştırılan ayrı bir kod parçası olabilir.
Yazılımın geliştirilmesi bu kılavuzun tamamında anlatıldığı gibi yapılır. Bu oylumda yazılımınız ile onun çalıştığı sistem arasındaki çok temel arayüz açıklanacaktır. Bu, sistem için parametrelerin (argümanlar ve ortam) aktarılması, sistemden temel hizmetlerin istenmesi ve sisteme yazılımın ne yaptığının söylenmesini içerir.
Bir yazılım başka bir yazılımı
exec ailesinden bir sistem çağrısı ile başlatır. Bu oylumda olaya yazılımı çalıştıran açısından değil çalışan yazılım açısından bakacağız. Olaya bir yazılımı çalıştıranın açısından bakmak için
Bir Dosyanın Çalıştırılması bölümüne bakınız. (Ç.N.: Aslında bu oylumda olaya yazılımın içinden bakacağız. Olaya yazılımın dışından yani bir dış uygulama açısından bakmak için
Bir Dosyanın Çalıştırılması bölümüne bakın demek daha doğru olacak.)