Tại saoWindows64-bit
lại cầnthưmụcriêngđể
chứa ứngdụng32-bit?
Nếu đang sử dụng hệ điều hành Windows 64-bit, có thể bạn sẽ để ý thấy 2 thư
mục “Programs file” xuất hiện trong phân vùng cài đặt HĐH: một thưmục
“Program Files” (chứa ứngdụng 64-bit), và 1 thưmục có tên “Program Files”
(x86) – chứaứngdụng 32-bit. Trong khi trên Windows32-bit thì chỉ có một
thư mục mà thôi. Vì saolại có sự phân biệt này? Có lẽ đó cũng là câu hỏi mà
khá nhiều người tò mò muốn hỏi: tạisao các chương trình 32-bit phải ở
trong
một thưmục khác với các chương trình 64-bit”. và “ Nếu tôi thay đổi đường
dẫn và trỏ mọi chương trình vào C:\Programs File\ thì điều gì sẽ xảy ra?”.
“Có phải vì một lý do kĩ thuật nào đó mà Microsoft phải tách ra làm 2 thư
mục?”
Rất may trong thời đại internet ngày nay, việc một thắc mắc khó hiểu của 1
(hay nhiều người) nào đó lại được giải đáp khá dễ dàng và đơn giản bởi người
khác có chuyên môn về
vấn đề. Và câu hỏi trên cũng không phải ngoại lệ. Sau
khi 1 thành viên đem “tâm sự” trên trình bày ở diễn đàn Howtogeek, một số
thành viên làm việc trong ngành lập trình đã có lời giải thích khá trực quan,
dễ hiểu.
Câu trả lời rất đơn giản: lý do Microsoft tạo ra 2 thưmụcriêng là để đảm bảo
các ứngdụng32-bit vẫn sẽ tiếp tục hoạt động bình thường trên Windows 64-
bit mà không bị xáo trộn với bản thân các ứngdụng dành riêng cho Windows
64-bit. Sự phân chia này không phải là một giải pháp bắt buộc. Nó chỉ là
phương pháp thuận tiện hơn so với các giải pháp khác, chẳng hạn như: nếu
không tạo ra 2 thưmụcriêng biệt, mỗ
i ứngdụng sẽ cần phải tự phân biệt các
DLL (thư viện liên kết động – Dynamic Link Library) hay các mã, tệp thực
thi riêng cho từng phiên bản Windows (32-bit và 64-bit).
Các chương trình 32-bit không chạy được trên hệ thống 64-bit. Một ứngdụng
32-bit không thể dùng được DLL của 64-bit, bởi vậy, sẽ cần một giải pháp để
cho ứngdụng32-bit không tìm thấy DLL của phiên bản kia.
Như đã nói, giải pháp đơn giản nhất là đặt chúng trong hai thư m
ục riêng biệt.
Lựa chọn tốt nhất là mọi ứngdụng64-bit “ẩn” các tập tin thực thi đi đểứng
dụng 32-bit không thấy, chẳng hạn như tạo thưmục bin64 trong ứngdụng đó.
Một câu trả lời khác từ lập trình viên Oliver Salzburg, liên quan đến lập trình
và lí do chính xác vì sao Microsft để cấu trúc của mình như thế: “tôi nghĩ lí
do để có các thưmục này là rất rõ ràng. Thưmục thực chất là một công c
ụ
giúp chúng ta quản lý các thứ một cách dễ dàng hơn mà thôi. Trên lý thuyết,
chúng ta có thể chứa tất cả các loại tập tin vào trong ổ đĩa gốc trên máy tính,
hiểu đơn giản là chúng ta chả cần đến các thưmục mới có thể lưu trữ được
các file tàiliệu trên máy. Tuy nhiên, nhờ có thưmục mà ta có thể sắp xếp mọi
thứ gọn gàng, ngăn nắp hơn rất nhiều.
Trong lập trình, việc sắp xếp và quả
n lí dữ liệu một cách khoa học là rất cần
thiết. Bạn sẽ muốn có 1 nơi đểchứa các thứ “biết nó phải làm 1 việc gì đó”,
và một nơi chứa các thứ “bạn có thể làm gì đó nhờ nó”. Trong hệ thống tập
tin cũng vậy. Chúng ta có thưmục cho các ứngdụng (logic) và thưmục cho
dữ liệu (data).
Logic
• %WINDIR%
• %PROGRAMFILES%
• %PROGRAMFILES(x86)%
Data
• %PROGRAMDATA%
• %HOMEDRIVE%%HOMEPATH%
Bảng trên cho ta thấy thưmục là thứ rất cầnđểchứa các ứng dụng. Thế
nhưng tạisaolạicần tới 2 thư mục? Vì sao không để bộ cài đặt (installer) xử
lý và chứa tất cả vào 1 thưmục mà lạicần tới 2. Điều này có nguyên nhân từ
bản thân Installer. Bộ cài đặt không phải là 1 khối thống nhất. Chúng ta
thường dùng các chương trình nhỏ để cài đặt các chương trình lớ
n hơn.
Chúng ta gọi các chương trình nhỏ này là các bộ cài đặt. Chúng được lập trình
viên viết ra và là bản thân chúng là các ứngdụng (với các nguy cơ chứa các
bug lỗi) như bất kì ứngdụng nào khác.
Bây giờ chúng ta hãy thử tưởng tượng lập trình viên sẽ phải làm gì trong
trường hợp hệ thống chỉ có 1 “progam file” và trường hợp có 2 “program file”
để tìm câu trả lời cho câu hỏi ban đầu.
Với 1 Thưmục Programs File: Nhà phát triển phải có 2 installer, một cho bản
32-bit và một cho bản 64-bit. Installer 32-bit được đưa vào trong C:\Program
Files\App\ và installer 64-bit được đưa vào trong C:\Program
Files\App\sixtyfour\.
Nếu có 2 thư m
ục Programs Files: Nhà phát triển chỉ cần 1 installer. Installer
sẽ luôn ghi vào đường dẫn %PROGRAMFILES% và tùy thuộc vào phiên bản
HĐH (32-bit hay 64-bit), trình cài đặt sẽ ghi tiếp vào thưmục phù hợp. Mọi
Installer đều theo 1 trình tự như thế và đó chính là tính nhất quán trong hệ
thống tập tin. Những thứ giống nhau sẽ được lưu vào 1 thư mục. Nhờ vậy mà
khi cần tìm cái gì, hệ thống sẽ biết đến nơi nó cần phải đến.
Bên cạnh đ
ó, việc phân chia ra 2 thưmụcriêng cho ứngdụng 32 và 64-bit
còn nhằm mục đích tránh sự xung đột về tên tập tin, bảo mật, và các thứ liên
quan đến nhị phân.
.
Tại sao Windows 64-bit
lại cần thư mục riêng để
chứa ứng dụng 32-bit ?
Nếu đang sử dụng hệ điều hành Windows 64-bit, có thể bạn sẽ để ý thấy 2 thư. ta thấy thư mục là thứ rất cần để chứa các ứng dụng. Thế
nhưng tại sao lại cần tới 2 thư mục? Vì sao không để bộ cài đặt (installer) xử
lý và chứa tất