[Series] [Linux programming] Linux - lịch sử hình thành và sự chuẩn hóa [Part 1]
Là một kĩ sư lập trình nhúng chúng ta sẽ làm việc với Linux, liệu bạn đã hiểu hết về Linux?
Một chút tua ngược dòng lịch sử, nơi mà sự vĩ đại bắt đầu!
1. Lược sử về UNIX và C:
Unix được phát triển bởi Ken Thompson tại Bell Labs (AT&T) vào năm 1969 (năm của nhiều giai thoại, cũng là năm cha đẻ Linux - Linus Torvalds ra đời). Bấy giờ UNIX được thiết kế cho con máy mini-computer PDP-7, viết bằng assembler :v. Cái tên UNIX xuất phát từ MULTICS (Multiplexed Information and Computing Service), dự án về OS đời đầu của AT&T + MIT + General Electric. Một thời gian sau AT&T tách ra do không cùng chí hướng, họ hướng tới một phiên bản OS mang tính phổ thông và đem lại lợi ích kinh tế ($$$).
Năm 1970 thì UNIX được viết lại bằng assembly cho con máy PDP-11 (máy ngon hơn). Tuy nhiên UNIX cho thấy sự thành công của nó khi vượt qua MULTICS về mọi mặt vào giai đoạn 1980. Một thời gian sau đó, Dennis Ritchie (cũng làm chung với bác Thompson ở Bell Labs) thiết kế và triển khai ngôn ngữ C, mở đường cho UNIX kernel viết bằng C vào 1973 (Oh yeah). Một chút ngoài lề, C được phát triển dựa trên ngôn ngữ biên dịch B, bạn này được bác Tom viết dựa trên ý tưởng từ BCPL. Và, UNIX đã nghiễm nhiên trở thành một trong những OS đời đầu được viết bằng ngôn ngữ bậc cao, khiến cho việc porting qua lại giữa các kiến trúc phần cứng trở nên khả thi và dễ dàng!
Ờm, nếu các bạn chưa biết thì, C và người hậu duệ C++ sở dĩ trở thành ngôn ngữ phổ biến trong lập trình hệ thống ngày nay, là bởi vì hai anh bạn này đã đáp ứng được nhu cầu cấp thiết: trở thành một ngôn ngữ bậc cao trong lập trình UNIX kernel và software cho nó. Ngoài C bấy giờ còn có FORTRAN dùng trong tính toán khoa học (nó chỉ là Formula + Translation thôi :v), COBOL (mình không rõ em này), etc
Quay trở lại với UNIX, mình sẽ skip qua edition 7 (từ bản 4 đã viết hoàn toàn bằng C nhé). Okay, what new in edition 7? Edition 7 của UNIX release năm 1979, giới thiếu một số tools ngon ngon mà mình vẫn đang xài mỗi ngày: awk, make, sed, tar, và quan trọng nhất: Bourne shell (sau này có Bash như bản thay thế cho bạn ni trong Linux - GNU project :v). Và, kể từ edition 7 thì UNIX chia làm 2 biến thể: BSD và System V. BSD là Berkeley Software Distribution nhé, cũng là nơi có trường đại học Cali mà sếp Tom theo học. Mình không muốn đi sâu vào hai anh bạn này nên mình chỉ tóm tắt sơ: BSD là do sếp Tom và các bạn sinh viên cùng nhau làm, còn System V ra đời do cái US antitrust legislation (luật chống độc quyền) khiến AT&T tan rã và chỉ còn lại AT&T's UNIX Support Group (USG) gồm hàng trăm lập trình viên tiếp tục công cuộc phát triển UNIX. Ban đầu bản thị trường của UNIX do USG phát triển năm 1981 là System III, sau đó là 1983 với System V (đọc là 'vi' hoặc 'five' cũng được :v).
Quay trở lại với UNIX, mình sẽ skip qua edition 7 (từ bản 4 đã viết hoàn toàn bằng C nhé). Okay, what new in edition 7? Edition 7 của UNIX release năm 1979, giới thiếu một số tools ngon ngon mà mình vẫn đang xài mỗi ngày: awk, make, sed, tar, và quan trọng nhất: Bourne shell (sau này có Bash như bản thay thế cho bạn ni trong Linux - GNU project :v). Và, kể từ edition 7 thì UNIX chia làm 2 biến thể: BSD và System V. BSD là Berkeley Software Distribution nhé, cũng là nơi có trường đại học Cali mà sếp Tom theo học. Mình không muốn đi sâu vào hai anh bạn này nên mình chỉ tóm tắt sơ: BSD là do sếp Tom và các bạn sinh viên cùng nhau làm, còn System V ra đời do cái US antitrust legislation (luật chống độc quyền) khiến AT&T tan rã và chỉ còn lại AT&T's UNIX Support Group (USG) gồm hàng trăm lập trình viên tiếp tục công cuộc phát triển UNIX. Ban đầu bản thị trường của UNIX do USG phát triển năm 1981 là System III, sau đó là 1983 với System V (đọc là 'vi' hoặc 'five' cũng được :v).
2. Lược sử về Linux:
Ủa, vậy Linux đóng vai trò gì ở đây, sao mình hông dùng BSD/System V/SunOS (UNIX variants) mà mình đi dùng Linux distro? Ủa rồi Linux là hệ điều hành đúng không? Sao nghe mấy ông bảo nhân Linux rồi hệ điều hành Linux, cái nào đúng? :)
Oke, đầu tiên là Linux, cái từ khóa này được dùng chung cho các UNIX-like OS mà ở đó nhân Linux được sử dụng. Để dễ hiểu hơn thì mình cần biết về GNU project (GNU's Not UNIX) :v. Xuất phát từ ý tưởng về một "free UNIX", bác Richard Stallman (MIT) khởi động GNU project để phát triển một bản UNIX-like system vừa miễn phí vừa có đầy đủ tool SW + Kernel để anh em vọc vạch. Thời điểm này BSD vẫn có phí hen, phải dùng license của AT&T, nên việc GNU ra đời dẫn đến license GPL ra đời (General Public License), giờ dạo quanh Github thấy license này nhiều hen. GNU có một số tools như emacs, GCC (GNU C compiler) hay bash shell, glibc (GNU C library), etc. GNU có mọi thứ nhưng thiếu một mảnh ghép quan trọng: Kernel. Ban đầu thì phần nhân có GNU/HURD dựa trên Mach microkernel, nhưng mà em này thì đi xa quá (đi không trở lại luôn :v) nên không dùng release được. May thay, sự ra đời của nhân Linux - mảnh ghép còn thiếu, đã làm hoàn thiện GNU project, và được bác Stallman đặt là GNU/Linux. Tuy nhiên thì mình hay quen gọi Linux, và vấn đề về tên gọi này cũng làm dấy lên drama một thời trong free SW community.
Còn tiếp ...
Bài viết lấy cả hứng và tham khảo nhiều nguồn sách tư liệu nước ngoài và một số trang web (Wiki, blogs, handbook, etc)
Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
- Hot nhất
- Mới nhất