Vì nhiều bạn khá thích xem video, nên phần này không chỉ gợi ý sách mà còn giới thiệu thêm một số video hướng dẫn và Project của các trường đại học mà mình thấy hữu ích.
Operating System
Vì sao cần học Operating System?
Xét về việc nâng cao năng lực cá nhân, nhiều tư tưởng và thuật toán kinh điển trong Operating System đều có thể được tìm thấy trong các công cụ hoặc framework mà bạn sử dụng khi phát triển hằng ngày. Chẳng hạn, cache mà hệ thống sử dụng (ví dụ Redis) khá giống với cache tốc độ cao của Operating System. CPU có nhiều loại cache tốc độ cao, nhưng phần lớn đều nhằm giải quyết vấn đề tốc độ xử lý của CPU và bộ nhớ không tương đương nhau. Ta cũng có thể xem bộ nhớ là cache tốc độ cao của bộ nhớ ngoài: khi chương trình chạy, dữ liệu từ bộ nhớ ngoài được sao chép vào bộ nhớ; do tốc độ xử lý của bộ nhớ cao hơn nhiều so với bộ nhớ ngoài nên tốc độ xử lý được cải thiện. Tương tự, Redis cache được dùng để giải quyết sự chênh lệch giữa tốc độ xử lý của chương trình và tốc độ truy cập database quan hệ thông thường. Cache tốc độ cao thường dựa trên nguyên lý locality (2-8 principle) và thuật toán loại bỏ tương ứng để đảm bảo dữ liệu trong cache là dữ liệu thường được truy cập. Redis cache mà chúng ta thường dùng cũng nhiều khi áp dụng 2-8 principle; nhiều thuật toán loại bỏ tương tự các thuật toán trong Operating System. Đã nói đến 2-8 principle thì không thể không nhắc đến hit rate, khái niệm dùng chung cho mọi loại cache. Nói đơn giản, đó là tỷ lệ dữ liệu bạn cần truy cập có thể được tìm thấy trực tiếp trong cache. Hit rate cao thường cho thấy thiết kế cache hợp lý và tốc độ xử lý của hệ thống cũng nhanh hơn.
