Bir iş ve süreç arasındaki fark nedir?


Yanıtlar:


46

İşlem, kendi adres alanına sahip çalışan bir programdır.

İş, kabuk tarafından kullanılan bir kavramdır - etkileşimli olarak başlattığınız herhangi bir programın (yani bir arka plan programı değil) işten çıkarılmasıdır. Etkileşimli bir program çalıştırıyorsanız, CtrlZaskıya almak için tuşuna basabilirsiniz . Ardından ön planda (kullanarak fg) veya arka planda (kullanarak ) başlayabilirsiniz bg.

Program askıya alınmış veya arka planda çalışırken, başka bir program başlatabilirsiniz - daha sonra çalışan iki işiniz olur. Ayrıca, bir "&" Böyle ekleyerek arka planda bir program çalışmasını başlatabilir: program &. Bu program arka plan işi olacaktı. Çalıştığınız tüm işleri listelemek için kullanabilirsiniz jobs.

İşler hakkında daha fazla bilgi için , bash man sayfasının bu bölümüne bakın.


Biz ne zaman Yukarıdaki örnekte, 2 iş çalışan biz de var 2 süreçler çalışan , öyle değil? Kendi adres alanının anlamını açıklayabilir misiniz ? Bu durumda, bir programın kendi adres alanı yoktur?
Kenny

@Kenny evet, bu tro işleri de süreç olacaktı. Aslında, her iş bir süreçtir. Bir iş senin o oturumu ile ilgili. Başlattığın her süreç, tty'inizden kopmaz, bir iştir.
Shawn J. Goff

@Kenny, işlemler söz konusu olduğunda, program derken, bu çok genel bir şey - CPU'nun gerçekleştirmesi için bir takım talimatlar. Buna görev veya yürütme ipliği de denir. Bir işlem adres alanını paylaşan başka bir iş parçacığı oluşturabilir.
Shawn J. Goff

1
gibi komutlu komutlar ls | sortbir iştir, ancak her komut farklı bir alt kabuk işleminin alt süreci olarak çalışır. Bu, çoklu işlemlerden oluşan bir iş örneğidir. Bir iş tanımınız bir işin birden fazla süreçten oluşabileceğini nasıl açıklayabilir?
Tim

30

UNIX'in "işlem", "işlem grubu" ve "oturum" gibi farklı kavramları vardır.

Giriş yaptığınız her kabuk kendi yeni oturumunun ve süreç grubunun lideri olur ve terminalin kontrol süreci grubunu kendisine ayarlar.

Kabuk, geçerli oturum içinde başlattığı her "iş" için bir işlem grubu oluşturur ve başlattığı her işlemi uygun işlem grubuna yerleştirir. Örneğin ls | head, kabuğun tek bir iş olarak gördüğü ve yeni ve tek bir süreç grubuna ait olacağı iki işlemden oluşan bir boru hattıdır.

Bir işlem, (ve) adres dizisi ve dosya tanımlayıcı tablosu gibi diğer bağlamların yürütme iş parçacığıdır. Bir işlem başka işlemlere başlayabilir; bu yeni işlemler, başka bir işlem yapılmazsa, ebeveyn ile aynı işlem grubuna ait olacaktır. Her işlem aynı zamanda ebeveyni ile aynı şekilde başlayan bir "kontrol terminaline" sahip olabilir.

Kabuk "ön plan" işleri ve "arka plan" işleri kavramına sahiptir. Ön plan işleri, terminalin kontrolünü içeren işlem gruplarıdır ve arka plan işleri, terminalin kontrolünü içermeyen işlem gruplarıdır.

Her terminalin bir ön plan işlem grubu vardır. Bir işi ön plana getirirken, kabuk terminalin ön plan grubu olarak ayarlar; İşi arka plana koyarken, kabuk terminalin ön plan işlem grubunu başka bir işlem grubuna veya kendisine ayarlar.

İşlemler, ön plan işlem grubundaysa, terminallerini okuyup yazabilirler. Aksi takdirde bunlar, alma SIGTTINve SIGTTOUgirişimleri üzerinde sinyaller sırasıyla gelen ve yazma terminali okuyun. Varsayılan olarak, bu sinyaller işlemi durdurur, ancak çoğu kabuk maskelidir, SIGTTOUböylece bir arkaplan işi kesintisiz olarak terminale yazabilir.


1
Bu, kabuk ve terminal işlem yönetimi hakkında iyi ve özlü bir bakış niteliğindedir. Bir “işin”, bir süreç grubunda birbirine bağlı birden fazla süreç olabilen bir “boru hattı” olduğunu söyleyerek iyileştirilebilir.
Chris Sayfa

1

Hesaplamada, İş bir birimi veya yürütme birimidir (söz konusu işi yapan). Bir işin bir bileşenine (iş birimi olarak) görev veya adım adı verilir (sıralıysa, bir iş akışında olduğu gibi). Bir yürütme birimi olarak, bir iş tek bir işlemle somut bir şekilde tanımlanabilir; bu da alt işlemlere (alt süreçler; işin ana sürecine karşılık gelen süreç) gerçekleştiren görevleri veya adımları içeren tek bir süreçle somut olarak tanımlanabilir. iş; veya bir işlem grubuyla; veya Unix iş kontrolünde olduğu gibi bir süreç veya süreç grubuna soyut bir referans ile.

Kaynak

güzel örnekler


-1

Tanımların üstünde çok teknikler var, ancak belki de operasyon uzmanı günden güne açıklığa kavuşturmak istedi. Bir işin zamanlanmış bir süreç olduğunu düşünüyorum. Genel olarak süreçlerle uğraşırken mutlaka zamanlama kavramı olmaz, ama "iş" kelimesini kullandığımızda her zaman programlanmış veya bir döngü gibi tekrarlanan anlamına gelir, bir işçi gibi.


1
Aşağı oy kullanmak istiyorsanız, lütfen aşağı oy verin. Bu cevap doğru değilse, en azından neden doğru olmadığını düşündüğünüzü açıklayın. Şimdiye kadar cevabımın hala mantıklı olduğunu düşünüyorum, bu benim aradığım bir açıklama.
eloone

Oy veren birinin nedenini açıklamış olması gerektiğine katılıyorum. Ama bence aşağı yöndeki sebebi "iş" tanımınızın doğru olmadığıdır.
18'de

Neden doğru olmadığını açıklamak ister misin? “İş”, bir “işlem” ne olduğu gibi açıkça tanımlanmamıştır (sistemdeki PID ile). Tecrübelerime göre, "iş" her zaman sıklıkla planlanan ve arka planda çalışan ve başlatabileceğiniz belirli bir işlem türünü tanımlamak için kullanılan bir kelimedir. Bu yüzden tanımlamak zor, çünkü kullanım onu ​​tanımlar. Aynı zamanda bir süreçler grubu olabilir, ancak bir "konteyner" (LXC) de olabilir, ancak bir "konteyner" bir "iş" değildir. "Nginx" gibi başlatılmış bir işlem de “iş” değildir. Benim yorumum hala cevaba sth ekler. Yine, anlamaya çalıştığım şeyi cevaplıyor.
eloone

Ayrıca hala düzgün bir tanım arıyorum, bu yüzden üzgünüm, cevaplayamıyorum (henüz). Fakat doğru olmayan şey, zamanlanmış olması gerektiğidir.
18'de
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.