Kacam.net

दुनिया को देखें

कंप्यूटर सिस्टम: एक बार में एक ही हिस्सा

«मेमोरी प्रबंधन» या «नेटवर्क» नहीं, बल्कि «TLB मिस और पेज फ़ॉल्ट में कितना फ़र्क़ है» और «पहले बाइट से पहले कितने चक्कर लगे» — हर पर्ची एक ही हिस्सा खोदती है, जब तक आप कोई अंक न बता सकें।

ये प्रॉम्प्ट अभी सिर्फ़ 简体中文 में हैं।

इसे कैसे इस्तेमाल करें

यह श्रृंखला सिखाती है, जिरह नहीं करती: यह राह दिखाती है, न कि तब तक दबाती है जब तक कहने को कुछ न बचे। अटकने पर पहले पूछती है कि आप किस परत पर अटके हैं (सुना ही नहीं / जानता हूँ पर क्यों नहीं पता / समझता हूँ पर लगा नहीं पाता), फिर तय करती है कि क्या देना है। दो बार राह दिखाने के बाद ही सीधा उत्तर देती है — और फिर अपने शब्दों में दोहरवाती है।

यह लगातार अंक माँगेगी: «थोड़ा ख़र्च तो है» या «तेज़ है» कहने पर टोक देगी। जिस नतीजे का अंक आप नहीं बता सकते, वह रटा हुआ नतीजा है — यही यह श्रृंखला सिखाती है।

कैसे शुरू करें

  1. एक चुनिए, खोलिए, प्रॉम्प्ट कॉपी कीजिए।
  2. एकदम नई ख़ाली बातचीत में चिपकाइए, कुछ मत कहिए, पहले सवाल का इंतज़ार कीजिए।
  3. अंक बताने के लिए तैयार रहिए: कितने नैनोसेकंड, कितने माइक्रोसेकंड, कितने गुना धीमा। न पता हो तो कह दीजिए — यह नोट करके आगे बढ़ जाएगी।

बीच में कभी भी कहे जा सकने वाले चार संकेत

  • 跳过 तुरंत अगले दृश्य पर
  • 换个说法 इस जगह को दूसरे कोण से फिर समझाना
  • 直说吧 पूरा उत्तर बताना, फिर मुझसे दोहरवाना
  • 复盘 सीधे समापन पर जाकर पुनरावलोकन कार्ड निकलवाना

तीन फंदे

  • अंत वाला उत्तर-पत्र पहले मत पढ़िए — उसका «आम तौर पर लोग क्या ग़लत समझते हैं» वाला हिस्सा ही हर सवाल का जवाब है।
  • शब्दजाल पर मत टूटिए। «यह TLB मिस है» कहना आसान है; यह बताना कि पेज फ़ॉल्ट से कितना सस्ता है — वही मायने रखता है।
  • जब वह तारीफ़ करने लगे, उसे «मेरी तारीफ़ मत करो» वाला नियम याद दिलाइए। राह दिखाना दुलारना नहीं है।

अंकों की समझ बनानी हो तो पहले रैंडम रीड और पहला बाइट। लाइव जाँच में काम आते हैं malloc, TCP का अटकना, कॉन्टेक्स्ट स्विच। समवर्ती कोड लिखते हों तो पुनःक्रम और छद्म साझाकरण।

मेमोरी

一次内存读,硬件走了几步
一次普通的内存读,硬件到底走了几步?
★★★★☆ · लगभग 35 मिनट
malloc 返回之后,内存就归你了吗
8GB 的机器上 malloc(4GB) 两次,会成功吗?
★★★☆☆ · लगभग 30 मिनट
mmap 省掉的到底是哪一次拷贝
「mmap 是零拷贝所以更快」——省的是哪一次,代价换到哪去了?
★★★★☆ · लगभग 30 मिनट

समवर्तीता

重排序,是编译器干的还是 CPU 干的
你说的重排序,是编译器干的还是 CPU 干的?
★★★★★ · लगभग 40 मिनट
改的是不同的变量,为什么互相拖慢
8 个线程各改各的计数器,为什么比单线程还慢?
★★★★☆ · लगभग 30 मिनट
一次上下文切换,贵在哪
切换的成本主要不是保存寄存器 —— 那是什么?
★★★★☆ · लगभग 30 मिनट

भंडारण

一次 4KB 随机读,时间花在哪
说 SSD 快,快在哪一项上?快多少倍?
★★★☆☆ · लगभग 30 मिनट
write 返回了,断电之后数据还在吗
write 返回了,一秒后断电 —— 数据还在吗?
★★★★☆ · लगभग 35 मिनट

नेटवर्क

第一个字节到达之前,来回跑了几趟
打开一个 2KB 的接口,网络上来回跑了几趟?
★★★☆☆ · लगभग 30 मिनट
两端都没挂,数据为什么过不去
两端都没挂,数据就是过不去 —— 卡了 40 毫秒还是 200 毫秒?
★★★★☆ · लगभग 35 मिनट
ये प्रॉम्प्ट ओपन सोर्स हैं मूल पाठ सार्वजनिक रिपॉज़िटरी kacam-net/hero-prompts में रखा जाता है। लगे कि कोई पर्याप्त सख़्ती से नहीं कुरेदता, या उसकी कुंजी में एक पंक्ति छूट गई है, तो जाकर बदल दीजिए — यहाँ चढ़ेगा या नहीं, यह अलग फ़ैसला है और इस तरफ़ की सूची तय करती है।