Neden 2 ^ 62 veya 2 ^ 31 veya başka bir şey olmasın?
Neden 2 ^ 62 veya 2 ^ 31 veya başka bir şey olmasın?
Yanıtlar:
Tamamen keyfi bir seçim gibi görünüyor. Herhangi bir şey olabilir, ama 1 kişi 4 milyonun yeterli olduğunu hissetti. Kaynağı kullanın :
/*
* A maximum of 4 million PIDs should be enough for a while.
* [NOTE: PID/TIDs are limited to 2^29 ~= 500+ million, see futex.h.]
*/
#define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \
(sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT))
Git'teki tarih sadece 2005'e kadar uzanıyor gibi görünüyor ve değer en azından bu kadar uzun.
1 manpage o diyor /proc/sys/kernel/pid_max
2.5.34 eklendi ve bakıyordu değişmek , benzediğini biri oldu Ingo Molnár :
<mingo@elte.hu>
[PATCH] pid-max-2.5.33-A0
This is the pid-max patch, the one i sent for 2.5.31 was botched. I
have removed the 'once' debugging stupidity - now PIDs start at 0 again.
Also, for an unknown reason the previous patch missed the hunk that had
the declaration of 'DEFAULT_PID_MAX' which made it not compile ...
Ancak, Ingo sadece ekledi DEFAULT_PID_MAX
. 2.5.37'dePID_MAX_LIMIT
Linus Torvalds tarafından eklendi :
<torvalds@home.transmeta.com>
Make pid_max grow dynamically as needed.
Anlaşılan, değişim günlüğünü yanlış okudum.
Değişiklikler 2.5.37 patchsetinde :
diff -Nru a/include/linux/threads.h b/include/linux/threads.h
--- a/include/linux/threads.h Fri Sep 20 08:20:41 2002
+++ b/include/linux/threads.h Fri Sep 20 08:20:41 2002
@@ -17,8 +17,13 @@
#define MIN_THREADS_LEFT_FOR_ROOT 4
/*
- * This controls the maximum pid allocated to a process
+ * This controls the default maximum pid allocated to a process
*/
-#define DEFAULT_PID_MAX 0x8000
+#define PID_MAX_DEFAULT 0x8000
+
+/*
+ * A maximum of 4 million PIDs should be enough for a while:
+ */
+#define PID_MAX_LIMIT (4*1024*1024)
#endif
Arama becerilerim beni yakaladığında.
@Hobbs sayesinde, Ingo sonuçta birileri gibi görünüyor . Yukarıda alıntıladığım yama ilk olarak onun tarafından gönderildi. Gönderen LKML mesaja beraberindeki:
yeni PID ayırıcısının bellek ayak izi / proc / sys / kernel / pid_max ile dinamik olarak ölçeklenir: varsayılan 32K PID'ler 4K ayırmaya neden olur, 1 milyon pid_max 128K ayak izine neden olur. Pid_max için geçerli mutlak sınır 4 milyon PID'dir - bu çekirdekte herhangi bir ayırmaya neden olmaz, bitmapler isteğe bağlı olarak ayrılmış çalışma zamanlarıdır. Pidmap tablosu 512 bayt alır.
Daha yüksek sınırlara sahip olma konusunda ateşli bir tartışma vardı, ama sonunda hiçbir şey çıkmadı.