Một hệ thống UNIX bao gồm một số phần hoặc các lớp mà tôi muốn gọi chúng.
Để khởi động một hệ thống, một chương trình có tên là bộ tải khởi động nằm ở khu vực đầu tiên của phân vùng đĩa cứng. Nó được hệ thống khởi động và đến lượt nó xác định vị trí nhân hệ điều hành và tải nó.
Phân lớp
Hạt nhân. Đây là chương trình trung tâm được khởi động bởi bộ tải khởi động. Nó thực hiện tương tác phần cứng cơ bản cho hệ thống (đĩa, bộ nhớ, video, âm thanh) và cung cấp một môi trường ảo trong đó nó có thể khởi động các chương trình. Nhân cũng vận chuyển tất cả các trình điều khiển xử lý tất cả các khác biệt nhỏ giữa các thiết bị phần cứng. Đối với thế giới bên ngoài (các lớp cao hơn), mỗi lớp thiết bị dường như hoạt động chính xác theo cùng một cách nhất quán - điều này đến lượt các chương trình có thể dựa vào.
Các hệ thống con nền. Chỉ có những chương trình thông thường, mà không theo cách của bạn. Họ xử lý những thứ như đăng nhập từ xa, cung cấp một bus tin nhắn cental và thực hiện các hành động dựa trên các sự kiện phần cứng / mạng. Ví dụ: khám phá bluetooth, quản lý wifi, v.v .. Bất kỳ dịch vụ mạng nào (máy chủ tệp, máy chủ in, máy chủ web) cũng sống ở cấp độ này. Trong các hệ thống UNIX, tất cả chỉ là các chương trình bình thường.
Các công cụ dòng lệnh. Đây là tất cả các chương trình nhỏ có thể được bắt đầu để thực hiện những việc như chỉnh sửa văn bản, tải xuống tệp hoặc quản trị hệ thống. Tại thời điểm này, một hệ thống UNIX hoàn toàn có thể sử dụng cho các quản trị viên hệ thống. Trong Windows, lớp này không thực sự tồn tại nữa.
Giao diện người dùng đồ họa. Đây cũng chỉ là các chương trình, sự khác biệt duy nhất là họ vẽ các cửa sổ trên màn hình thay vì viết văn bản. Điều này làm cho hệ thống dễ sử dụng hơn cho người dùng thường xuyên.
Bất kỳ dịch vụ hoặc sự kiện sẽ đi từ dưới lên đến đỉnh.
Thư viện - nền tảng chung
Các chương trình thực hiện rất nhiều việc phổ biến như hiển thị cửa sổ, vẽ nội dung trên màn hình hoặc tải xuống tệp. Những điều này giống nhau cho nhiều chương trình, do đó mã được đặt trong các tệp "thư viện" riêng biệt ( .so
tệp - có nghĩa là đối tượng chia sẻ). Thư viện có thể được chia sẻ trên tất cả các chương trình.
Đối với mỗi điều có thể tưởng tượng, có một thư viện. Có một cái để đọc / ghi tệp PNG. Có một cho các tệp JPEG, để đọc XML, để mã hóa, để phát lại video, v.v.
Trên Linux, các thư viện phổ biến cho các nhà phát triển ứng dụng là Qt và Gtk. Các thư viện này sử dụng các thư viện cấp thấp hơn trong nội bộ cho các nhu cầu cụ thể của họ, đồng thời thể hiện chức năng của họ một cách nhất quán và ngắn gọn để các nhà phát triển ứng dụng tạo ứng dụng nhanh hơn.
Các thư viện cung cấp nền tảng ứng dụng, trên đó các lập trình viên có thể xây dựng các ứng dụng người dùng cuối cho Hệ điều hành. Hệ thống cung cấp càng nhiều thư viện chất lượng cao, càng ít lập trình viên phải viết để tạo ra một chương trình đẹp.
Một số thư viện có thể được sử dụng trên các hệ điều hành khác nhau (ví dụ: Qt là), một số thư viện thực sự được gắn chặt vào một hệ điều hành. Điều này sẽ hạn chế chương trình của bạn chỉ có thể chạy ở nền tảng đó.
Liên thông quá trình
Một góc thứ ba của một hệ điều hành, là cách các chương trình có thể giao tiếp với nhau. Đây là các máy móc truyền thông liên tiến trình (IPC). Chúng tồn tại trong một số hương vị, ví dụ như một phần của bộ nhớ dùng chung hoặc một kênh nhỏ được thiết lập giữa hai chương trình để trao đổi dữ liệu. Ngoài ra còn có một xe buýt tin nhắn trung tâm mà mỗi chương trình có thể đăng một tin nhắn và nhận được phản hồi. Điều này được sử dụng cho truyền thông toàn cầu, nơi chưa biết chương trình nào có thể đáp ứng.
Từ thư viện đến Hệ điều hành
Với các thư viện, IPC và kernel, các lập trình viên có thể xây dựng tất cả các loại ứng dụng cho dịch vụ hệ thống, quản trị người dùng, cấu hình, quản trị, công việc văn phòng, giải trí, v.v. Đây là bộ hoàn chỉnh mà người dùng mới nhận ra là "hệ điều hành ".
Trong các hệ thống UNIX / Linux, tất cả các dịch vụ chỉ là chương trình. Tất cả các công cụ quản trị hệ thống chỉ là chương trình. Tất cả đều làm công việc của họ, và họ có thể bị xích lại với nhau. Tôi đã tóm tắt rất nhiều chương trình lớn tại http://codingdomain.com/linux/sysadmin/
Các bộ phận khác biệt với Windows
UNIX chủ yếu là một hệ thống các chương trình, tập tin và quyền hạn chế. Rất nhiều sự phức tạp được tránh, làm cho nó trở thành một hệ thống mạnh mẽ trong khi có vẻ như nó có một công việc dễ dàng thực hiện nó.
Cụ thể, đây là những nguyên tắc có thể tìm thấy trên các hệ thống UNIX / Linux:
Có những cách thống nhất để truy cập thông tin. ("Mọi thứ chỉ là một tập tin"). Bạn có thể mở tệp, ổ cắm mạng, kênh IPC, tham số kernel và chặn thiết bị dưới dạng tệp. Do đó, sự xuất hiện của các hệ thống tập tin ảo trong / dev, / sys và / Proc. API duy nhất bạn cần là open
, read
và close
.
Hệ thống cơ bản là minh bạch. Mọi chương trình hoạt động theo cùng một quy tắc. Không giống như Windows, không có sự khác biệt giả tạo giữa "chương trình giao diện điều khiển", "chương trình gui" hoặc "dịch vụ nền". Tất cả chúng chỉ là chương trình, điều đó xảy ra để làm những việc khác nhau. Tất cả chúng cũng có thể được quan sát, phân tích và gỡ lỗi theo cùng một cách.
Các cài đặt có thể đọc, có thể chỉnh sửa và có thể được chú thích bằng các bình luận. Chúng thường có định dạng kiểu INI, nhưng có thể sử dụng định dạng tùy chỉnh cho nhu cầu của ứng dụng đó. Bởi vì chúng chỉ là các tệp, chúng có thể được sao chép sang các hệ thống khác, được lưu trữ hoặc được sao lưu bằng các công cụ tiêu chuẩn.
Không có ứng dụng "làm tất cả trong một lần" lớn. Câu thần chú là "làm một việc, làm tốt". Các công cụ dòng lệnh có thể được kết nối và cùng nhau trở nên mạnh mẽ. Các dịch vụ riêng biệt (ví dụ: SMTP, IMAP và POP và đăng nhập) là các chương trình con riêng biệt, tránh các vấn đề bảo mật và mã đan xen phức tạp. Môi trường máy tính để bàn phức tạp ủy thác công việc khó khăn cho các chương trình cá nhân.
fork()
. Các chương trình mới được bắt đầu bởi một chương trình nhân bản chính nó. Bản sao thiết lập mọi thứ (ví dụ: xử lý tệp) và tùy ý thay thế chính nó bằng mã chương trình mới. Điều này giúp dễ dàng áp dụng các cài đặt bảo mật và hạn chế tương tự cho các chương trình mới, chia sẻ bộ nhớ hoặc thiết lập cơ chế IPC. Chi phí bắt đầu một quá trình cũng rất thấp.
Hệ thống tệp là một cây, trong đó các phân vùng đĩa và chia sẻ mạng khác có thể được gắn kết. Có một lần nữa, một cách phổ biến để truy cập dữ liệu. Các vị trí hệ thống phổ biến (ví dụ /usr
có thể dễ dàng được gắn dưới dạng chia sẻ mạng.
Hệ thống được xây dựng cho các đặc quyền người dùng thấp. Sau khi đăng nhập, mọi người dùng (trừ root) chỉ giới hạn tài nguyên của riêng họ, chỉ chạy các ứng dụng và tệp. Dịch vụ mạng giảm đặc quyền của họ càng sớm càng tốt. Có một cách rõ ràng duy nhất để có được nhiều đặc quyền hơn hoặc yêu cầu ai đó thực hiện một công việc đặc quyền thay cho họ. Mọi cuộc gọi khác bị giới hạn bởi các hạn chế và giới hạn của chương trình.
Mỗi chương trình lưu trữ các thiết lập trong một tập tin / thư mục ẩn của thư mục nhà người dùng. Không có chương trình nào cố gắng viết một tập tin cài đặt toàn cầu.
Ưu tiên cho các cơ chế giao tiếp được mô tả công khai về các cơ chế bí mật hoặc các cơ chế 1-1 cụ thể. Các nhà cung cấp và nhà phát triển phần mềm khác được khuyến khích tuân theo cùng một đặc điểm kỹ thuật, vì vậy mọi thứ có thể dễ dàng được kết nối, hoán đổi và vẫn được kết nối lỏng lẻo.