Khi chương trình C được biên dịch và tệp đối tượng (ELF) được tạo. tệp đối tượng chứa các phần khác nhau như bss, dữ liệu, văn bản và các phân đoạn khác. Tôi hiểu rằng những phần này của ELF là một phần của không gian địa chỉ bộ nhớ ảo. Tôi có đúng không? Hãy sửa tôi nếu tôi sai.Các phân đoạn khác nhau như heap, stack, text liên quan đến bộ nhớ vật lý như thế nào?
Ngoài ra, sẽ có bộ nhớ ảo và bảng trang được liên kết với chương trình được biên dịch. Bảng trang liên kết địa chỉ bộ nhớ ảo có trong ELF với địa chỉ bộ nhớ vật lý thực khi tải chương trình. Tôi hiểu có đúng không?
Tôi đọc điều đó trong tệp ELF đã tạo, phần bss chỉ giữ tham chiếu của các biến toàn cục chưa được khởi tạo. Ở đây biến toàn cục chưa được khởi tạo có nghĩa là, các biến không được intialised trong quá trình khai báo?
Ngoài ra, tôi đọc rằng các biến cục bộ sẽ được phân bổ không gian tại thời gian chạy (tức là trong ngăn xếp). Sau đó, chúng sẽ được tham chiếu như thế nào trong tệp đối tượng?
Nếu trong chương trình, có một phần mã cụ thể có sẵn để cấp phát bộ nhớ động. Các biến này sẽ được tham chiếu như thế nào trong tệp đối tượng?
Tôi nhầm lẫn rằng các phân đoạn khác nhau của tệp đối tượng (như văn bản, rodata, dữ liệu, bss, ngăn xếp và đống) là một phần của bộ nhớ vật lý (RAM), nơi tất cả các chương trình được thực thi. Nhưng tôi cảm thấy rằng sự hiểu biết của tôi là sai. Các phân đoạn khác nhau này liên quan đến bộ nhớ vật lý như thế nào khi một quá trình hoặc một chương trình đang được thực hiện?