Như đã trình bày ở trên, các tiến trình thực thi trên User mode có thể sử dụng các thư viện để thực hiện các lời gọi hệ thống xuống kernel. Do đó, ngoài những mã thực thi được biên dịch trực tiếp từ mã nguồn của chương trình, chương trình còn có thể sử dụng các mã thực thi từ các thư viện mà chương trình sử dụng.
26
Thư viện tĩnh (static libraries): trong quá trình biên dịch chương trình (có sử dụng thư viện tĩnh), chương trình liên kết (linker) thực hiện liên kết cả các mã thực thi của thư viện vào chương trình, điều này giúp cho chương trình có tính chất đóng gói, chỉ cần một file chương trình duy nhất có thể thực thi được, tuy nhiên sử dụng thư viện tĩnh cũng có nhược điểm là tiêu tốn không gian lưu trữ của ổ cứng khi nhiều chương trình cùng sử dụng một thư viện tĩnh).
Thư viện động (shared libraries): trong quá trình biên dịch chương trình, chương trình linker không thực hiện liên kết các mã thực thi của thư viện vào chương trình mà chỉ đặt một tham chiếu tới tên thư viện, khi chương trình được thực thi, thư viện sẽ được nạp lên vùng nhớ của tiến trình. Ưu điểm của dạng kiểu thư viện này là cung cấp cơ chế ánh xạ bộ nhớ - file (file memory mapping). Khi chương trình liên kết động thực hiện liên kết thư viện động vào tiến trình, các mã thực thi của thư viện không bị copy vào chương trình mà chỉ thực hiện ánh xạ bộ nhớ phần thư viện tương ứng sang không gian bộ nhớ của tiến trình. Nhờ vậy, sử dụng kiểu thư viện này ít tốn không gian ổ cứng hơn so với thư viện tĩnh. Tuy nhiên, nhược điểm của kiểu thư viện này là thời gian nạp của chương trình thường chậm hơn so với các chương trình sử dụng thư viện tĩnh, do chương trình phải thực hiện thêm các thao tác nạp thư viện lên vùng nhớ.