Learning Outcome & Exercises: Linux: Process & Thread

2 câu hỏi~10 phút đọc, vài giờ làm labTừ khóa: learning outcome, Basic, Intermediate, Challenge, evidence

Tổng kết chương Linux: Process & Thread: học xong mình phải làm được gì, và làm bài tập nào để chứng minh?

Đọc hiểu chưa đủ để đi phỏng vấn. Mỗi chương kết thúc bằng những việc làm được và chứng minh được: có code chạy, có test cho cả trường hợp lỗi, có log hoặc số đo. Bài tập nằm trong repo riêng java-backend-interview-labs, thư mục labs/linux.

1. Mục tiêu đầu ra

Học xong chương này, bạn tự làm được:

2. Basic: Process & thread

Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành

ps, top -H, /proc/<pid>/status cho một app Spring Boot; ánh xạ thread Java sang thread OS.

Bài liên quan: Process lifecycle, JVM thread ↔ OS thread

Hoàn thành khi:

3. Intermediate: FD & signal

Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành

Tạo rò rỉ file descriptor, quan sát ls /proc/<pid>/fd tăng; bắt SIGTERM bằng shutdown hook.

Bài liên quan: IPC, file descriptor, signal, Scheduler & context switch

Hoàn thành khi:

4. Challenge: cgroups

Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành

Chạy JVM trong container giới hạn 512MB, đọc memory.max và so với MaxHeapSize JVM tự chọn.

Bài liên quan: Container & cgroups, Virtual memory

Hoàn thành khi:

5. Tiêu chí hoàn thành chung

6. Lab và trạng thái

MứcBài tậpTrạng tháiTest / bằng chứng
BasicProcess & thread⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành—
IntermediateFD & signal⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành—
Challengecgroups⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành—

Repo lab: java-backend-interview-labs/labs/linux. TODO: link GitHub là placeholder cho tới khi repo được push.

Phỏng vấn hỏi về Linux: Process & Thread, câu nào hay gặp nhất và trả lời sao?

Q1. Too many open files là lỗi gì?

🇻🇳 Tiếng Việt:

Process đã dùng hết số file descriptor cho phép (socket, file). Kiểm tra bằng ls /proc/pid/fd và ulimit -n; thường là rò rỉ connection/stream chưa đóng chứ không chỉ cần tăng limit.

🇬🇧 English:

The process has used up its allowed file descriptors, which include sockets and files. Check with ls /proc/pid/fd and ulimit -n; usually it is a leak of unclosed connections or streams, not just a low limit.

Cách nhớ ngắn gọn


Tự kiểm tra

Bài tập Basic (Process & thread) được coi là xong khi nào?

Lệnh và output có chú thích. Chưa có code chạy và bằng chứng thì chưa tính là xong.

Bài tập Intermediate (FD & signal) được coi là xong khi nào?

Số FD trước/sau; Log shutdown hook. Chưa có code chạy và bằng chứng thì chưa tính là xong.

Bài tập Challenge (cgroups) được coi là xong khi nào?

Output memory.max và java -XX:+PrintFlagsFinal; Cần Docker. Chưa có code chạy và bằng chứng thì chưa tính là xong.