[FAQ] Tại sao Nhân Linux viết bằng C mà không phải là C++?

Câu hỏi và câu trả lời tại đây!

HỎI: Những lý do nào về nhân Linux (nói chung cả Unix, bao gồm Solaris) được viết bằng C mà không phải là C++. Trong khi C++ là một ngôn ngữ tốt hơn C về các khái niệm hướng đối tượng. Tại sao kernel hay hầu hết các hệ thống CSDL phổ biến được viết bằng ngôn ngữ C thay vì bằng C++. (rkalyankumar)

TRẢ LỜI:

(maniac)
Những lý do cụ thể về Linux đã được giải thích chi tiết trong Linux Kernel Mailing List (LKML) Frequently Asked Questions (FAQ) tại:
  http://www.tux.org/lkml/

Continue reading

[FAQ] Tại sao Linux không lưu trữ thời gian tạo tập tin?

Hầu hết các hệ điều hành tương tự Unix không lưu trữ về thời gian tạo (creation time – crtime) tập tin. Đây thực sự không phải là một tính năng hữu ích cho hầu hết mọi người.

– Nếu tập tin chưa bao giờ được chỉnh sửa, thì creation time của nó sẽ bằng last modification time (mtime).
– Nếu tập tin được tự động tạo ra bởi một chương trình hoặc khi hệ thống được cài đặt, thì thời gian của một số tập tin có thể là như nhau, điều này không hữu ích cho tổ chức.
– Nếu bạn import các tập tin từ một file system khác mà không có lưu trữ creation time hoặc thời gian hệ thống không đúng, thì thời gian của tập tin trên hệ thống của bạn cũng sẽ sai và do đó không hữu ích.

Một vài hệ thống tập tin của Linux (chẳng hạn như Ext4..) có khả năng kỹ thuật để lưu trữ crtime, nhưng rất ít công cụ và thư viện được cập nhật cho việc sử dụng nó, vì:
1. Đó không phải là tiêu chuẩn hoặc không phổ biến.
2. Crtime thực sự không hữu ích và do đó không phải là một ưu tiên cao để đưa vào sử dụng.

Tóm lại, Linux không lưu trữ thời gian tạo tập tin, vì đó không phải là việc của nó. Theo dõi thuộc tính các tập tin là trách nhiệm của một hệ thống tập tin. Hầu hết các hệ thống tập tin không lưu trữ thời gian tạo, vì như trên đã nói, khi các tập tin được sửa đổi thường quan trọng hơn nhiều so với khi nó được tạo ra.

[FAQ] Linux: Thời gian tập tin được tạo ra ?

Một lập trình viên PHP hỏi: làm thế nào để lấy thông tin về thời điểm một tập tin được tạo ra trên hệ thống Linux? Bởi vì các thông tin do hàm fstat cung cấp là chưa đủ…

Á… một câu hỏi rất đơn giản nhưng mình không thể giải đáp ngay tức khắc. Nếu sử dụng lệnh ls để liệt kê đầy đủ các thông tin của tập tin, thì vẫn không tìm ra cái gọi là thời điểm tạo ra tập tin. (Mình nghi ngờ rằng, lệnh ls với tham số -l chỉ cho thông tin về thời điểm tập tin thay đổi lần cuối cùng.)

Cuối cùng, sử dụng đến lệnh stat để xem đầy đủ hơn. Quái lạ, cũng chỉ thấy Access time, Modify timeChange time. Có gì sai ở hệ thống tập tin?

Sau một hồi đọc man ls, mới phát hiện ra: khác hẳn với hệ thống NTFS của ngài Bill, trên Linux (và Unix) không có khái niệm thời điểm tập tin được tạo ra. Mà chỉ có ba loại thời điểm như vừa kể ở trên. Trong đó, modify liên quan tới nội dung, còn change liên quan tới sự thay đổi về inode trên hệ thống đĩa (điều này xảy ra, khi chẳng hạn có sự thay đổi về quyền, thuộc tính thi hành… của tập tin).

Như vậy, trên hệ thống file ExtX của Linux, câu hỏi thời điểm một tập tin được tạo ra là một câu hỏi… ngốc nghếch 🙂

Dragula.org

[FAQ] Make – không liên quan tới lập trình ?

Em thấy trong một số phần mềm họ chỉ cho source rồi tự mình make – make install, cho hỏi tại sao họ ko compile rồi đưa mình mà mình phải tự compile? (snoob)

[MrTux]
Đã compile rồi thì sao bạn tùy chỉnh được mã nguồn hay thậm chí đơn giản hơn là các options?

[banhbaochay]
Compile phải dựa vào hệ điều hành sử dụng, tức là compile cho U 10.04 sẽ ra cái khác, mà compile cho openSUSE sẽ ra cái khác, chính vì thế họ mới chỉ đưa mình source để tự compile.
Còn các bản compile sẵn cho từng hệ điều hành theo mình hiểu đó chính là các bản cài đặt ngay cho hệ điều hành đó.

[truongan]
Thế này nhá, PMNM công khai mã nguồn (1).
Đa số PMNM được viết trên ngôn ngữ C/C++, đây là 1 ngôn ngữ đa nền tảng. Nghĩa là nó có thể chạy đc trên các vi xử lí của Intel/AMD, và các vi xử lí khác kể cả không thuộc x86 (2).
Từ (1)(2)(3)=>Người dùng tự biên dịch, hết phim.

[vieniav]
Nếu bạn là người lập trình chắc bạn cũng sẽ rất ngán cảnh phải ngồi dịch cho từng platform, OS, distro, v.v… nên đưa source là khỏe nhất. Hơn nữa, để phần mềm của bạn đưa vào một Linux distro nào đó thì cung cấp mã nguồn là điều bắt buộc. Thế giới mã nguồn mở mà.

[Lumiere du Soleil]
1 – Nguồn mở => người khác có thể thay đổi, sửa chữa, viết thêm => chương trình phát triển.
2 – Cùng 1 chương trình nhưng compile ra để có thể chạy được không giống nhau trên các máy khác nhau: do khác biệt về phần cứng, dễ thấy nhất là CPU, CPU Intel khác CPU AMD, câu lệnh thực thi khác nhau nên cách compile ra cũng phải khác nhau; khác biệt về hệ điều hành: mỗi hệ điều hành cung cấp dịch vụ, thư viện … để chạy chương trình khác nhau nên ko thể vác cái đã compile cho cái này chạy trên kia được, ngoài ra còn khác biệt về code nữa (vì vậy mới cần nguồn mở để sửa).

[bulubuloa]
vì nó nên thành viên của forum này mới ngày càng đông đó bạn — i love linux

Tổng hợp trên ubuntu-vn.org