Tại sao Linux có quy mô rất tốt cho các nền tảng phần cứng khác nhau?


22

Tại sao Linux chạy tốt trên nhiều loại máy khác nhau - máy tính để bàn, máy tính xách tay, máy chủ, thiết bị nhúng, điện thoại di động, v.v? Có phải chủ yếu là do hệ thống mở, vì vậy bất kỳ phần nào của nó có thể được sửa đổi để hoạt động trong các môi trường khác nhau? Hoặc có các thuộc tính khác của nhân Linux và / hoặc hệ thống giúp HĐH này hoạt động dễ dàng hơn trên nhiều nền tảng như vậy không?


7
Tôi nghĩ rằng bạn đã có một phần của câu trả lời - sự cởi mở giúp các nhóm người hoặc doanh nghiệp khác nhau dễ dàng điều chỉnh nó theo nhu cầu của họ. Vì hạt nhân bị chỉ trích đáng chú ý là nguyên khối nên tôi không chắc thiết kế ban đầu của nó được tối ưu hóa một cách có chủ ý cho khả năng mở rộng theo bất kỳ cách nào. Tôi đoán rằng một số lượng lớn người đã làm việc trên lõi của Linux hơn so với các hệ điều hành khác - và có lẽ điều này đã buộc các nhà bảo trì lõi phải cẩn thận trong việc chia mã thành các phần có giao diện rõ ràng? Mặt khác, một số biến thể của BSD có tính di động như một mục tiêu rõ ràng.
RedGrittyBrick

@Red: Nó đã bị chỉ trích là một hạt nhân nguyên khối thay vì một hạt nhân vi mô - điều đó không liên quan gì đến thiết kế của nó. Nó có liên quan đến bao nhiêu kernel chạy trong không gian người dùng và bao nhiêu chạy trong không gian hạt nhân. Nhân của Windows NT (ví dụ) rất mô-đun, nhưng nó vẫn nguyên khối về mặt kỹ thuật vì hầu hết các dịch vụ (tức là hệ thống tệp) chạy ở chế độ kernel thay vì chế độ người dùng.
Billy ONeal

@Billy: Windows NT về mặt kỹ thuật là một hạt nhân lai . Tôi tin rằng Microsoft vẫn duy trì các hệ thống con bằng cách sử dụng tin nhắn và giữ khả năng di chuyển các phần vào không gian người dùng như mong muốn. Họ đã làm điều này với hệ thống đồ họa trong Vista: giờ đây nó đã ở trong không gian người dùng sau khi có không gian kernel kể từ NT 4.0
Zan Lynx

2
@Zan: Tôi có ấn tượng rằng trạng thái như một "hạt nhân lai" đã bị tranh chấp . Vì vậy, tôi đã nói "nguyên khối". NT chắc chắn có rất nhiều tính năng nguyên khối ngay cả khi nó được chia thành các phần thư viện.
Billy ONeal

@Billy: Dường như với tôi rằng nếu hạt nhân của bạn có thể được biến thành một hạt nhân siêu nhỏ chỉ bằng cách thay đổi một vài tùy chọn và xây dựng lại, thì đó là thứ gì đó không phải là nguyên khối ngay cả khi các bản dựng nhị phân thường được sử dụng nhất đặt mọi thứ vào không gian địa chỉ kernel.
Zan Lynx

Câu trả lời:


31

Mặc dù sự cởi mở chắc chắn là một phần của nó, tôi nghĩ yếu tố chính là Linus Torvald tiếp tục khẳng định rằng tất cả các công việc, từ lớn đến nhỏ, đều có một vị trí trong nhân Linux chính, miễn là nó được thực hiện tốt. Nếu đôi khi anh quyết định vẽ một đường và nói "được thôi, với phần cứng siêu máy tính lạ mắt đó, chúng ta cần một cái nĩa", thì các biến thể hệ thống nhỏ và cao cấp hoàn toàn có thể đã phát triển. Như vậy, thay vào đó, mọi người đã làm công việc khó khăn hơn để làm cho tất cả chơi với nhau tương đối tốt.

Và, các loại bùn cho phép một mặt của sự vật gây hại cho mặt khác, nói chung, không được phép vào - một lần nữa, buộc mọi người phải giải quyết vấn đề theo cách khó hơn nhưng chính xác hơn, hóa ra thường dễ đi về phía trước hơn một khi bất cứ điều gì yêu cầu thì bùn sẽ trở thành một chú thích lịch sử.

Từ một cuộc phỏng vấn vài năm trước :

Q: Linux là một hệ thống đa năng. Nó cung cấp cho PC, máy chủ khổng lồ, điện thoại di động và mười thiết bị khác. Từ vị trí đặc quyền của bạn, lĩnh vực nào sẽ là nơi mà Linux sẽ thể hiện tiềm năng cao nhất?

Trả lời: Tôi nghĩ rằng sức mạnh thực sự của Linux chính xác là nó không phải là về một lĩnh vực. Mọi người đều chơi cùng, những người khác nhau và các công ty khác nhau có những động lực và niềm tin hoàn toàn khác nhau về những gì quan trọng đối với họ. Vì vậy, tôi thậm chí không quan tâm đến bất kỳ một lĩnh vực cụ thể.


18
Và hệ thống nhỏ và các định nghĩa hệ thống khổng lồ luôn thay đổi liên tục, do đó, những loại bùn tốt đã được tránh. Các điện thoại thông minh đa lõi giờ đây có thể được hưởng lợi từ tất cả các công việc siêu máy tính được thực hiện nhiều năm trước.
Zan Lynx

4

Linux mở rộng ra nhiều loại phần cứng khác nhau vì:

  • nó rất cấu hình
  • nguồn có sẵn miễn phí và có thể được xây dựng cho bất kỳ CPU nào có sẵn trình biên dịch C
  • bộ xử lý trong các thiết bị nhúng và điện thoại di động có ít nhất mức năng lượng tương đương hoặc nhiều hơn so với các máy 386 ban đầu, quá trình phát triển Linux ban đầu được thực hiện và tiếp tục đạt được sức mạnh
  • nó hoạt động tốt mà không có gì ngoài một mạng, một số dạng đĩa hoặc thiết bị giống như đĩa và một cổng nối tiếp

Chà, ai đó sẽ cần phải viết một số lượng tối thiểu mã bootstrap và thời gian chạy C cho nền tảng đích. Oh, và nó phải hỗ trợ bộ nhớ ảo. Nhưng nếu không thì đúng :)
Billy ONeal

1
@Billy Có các cổng tới các hệ thống nommu: uClinux, uClinux / ARM và MontaVista Linux.
Tobu

@Tobu: Hmm .. Tôi không hiểu làm thế nào có thể. Toàn bộ "Triết lý Unix" cho nhiều quy trình có giả định rằng một cái gì đó giống như forkcó thể và forkkhông thể được thực hiện một cách hợp lý hiệu quả trên một hệ thống bộ nhớ không ảo. Mặc dù các cổng được chỉ định có thể sử dụng các phần của nhân Linux và có thể chạy một số phần mềm Linux, nhưng đối với hầu hết các phần, nó xuất hiện các API được hiển thị bởi các cổng này khác với các nhân Linux điển hình. (Ví dụ: ánh xạ bộ nhớ - rõ ràng cần bộ nhớ ảo)
Billy ONeal

linuxjournal.com/article/7814 : cho biết uCLinux không hỗ trợ fork (), nhưng một biến thể chặn gọi là vfork (), các ứng dụng trong uCLinux phải được viết lại để sử dụng vfork hoặc luồng.
LawrenceC

4

Hạt nhân Linux có quy mô tốt bởi vì đó là những gì nó là. Nhân lõi tương đối nhỏ và làm những gì nó cần làm. Trình điều khiển thiết bị là tùy chọn và có thể được bỏ ra khỏi kernel cho các hệ thống nhỏ hơn. Ngoài các yêu cầu hạt nhân tối thiểu, hầu hết các chức năng được triển khai như các tính năng tùy chọn.

Hãy xem tập tin cấu hình được cài đặt bên cạnh hầu hết các hạt nhân. Nó sẽ liệt kê tất cả các tính năng đã được bật cũng như trình điều khiển nào được hỗ trợ.

Trình điều khiển được hỗ trợ hoặc được nhúng trong kernel hoặc dưới dạng các mô-đun có thể tải. Điều này cho phép một hạt nhân được cấu hình động với phần cứng mà nó đang chạy. Đây là cách tiếp cận được sử dụng bởi nhiều bản phân phối.

Khác với việc có các công cụ biên dịch, sửa đổi kernel cho phần cứng mới tương đối đơn giản. Đối với bộ xử lý mới, chỉ cần thực hiện mã liên quan dưới dạng sửa đổi chức năng hiện có. Các thiết bị mới chỉ yêu cầu trình điều khiển mới với các móc liên quan. Hệ thống tập tin mới là sửa đổi tương đối tầm thường.

Cơ sở mã đã được duy trì tốt để giữ tính linh hoạt này mà không cần ngoại cảnh. Biên dịch có điều kiện điều khiển một hạt nhân rất linh hoạt được giữ ở mức tối thiểu nhất có thể.


1

Tôi thiếu chuyên môn kỹ thuật chi tiết để sao lưu câu trả lời này, nhưng kinh nghiệm của tôi cho thấy Linux có quy mô tốt so với các hệ điều hành khác mà tôi thường sử dụng (chủ yếu là Windows). Vì vậy, có lẽ câu hỏi là tại sao Windows không mở rộng quy mô như Linux.

Nếu đặt lại câu hỏi theo cách đó vẫn hữu ích với bạn, tôi sẽ đề nghị các lực lượng thị trường thúc đẩy Microsoft bổ sung các tính năng và chức năng hướng đến phần cứng mới nhất và có khả năng nhất, bởi vì họ bán nhiều bản sao của hệ điều hành hơn khi người dùng cuối mua hệ thống mới . Vì vậy, tại bất kỳ thời điểm nào, tôi thấy rằng bản phát hành mới nhất của Windows hoạt động kém trên phần cứng cũ, ít khả năng hơn.

Hãy tha thứ cho tôi nếu điều đó quá mức cho câu hỏi của bạn.


Có vẻ như bạn đang nói về HĐH, trong khi anh chàng đang nói về kernel. Chà, trừ khi bạn biết chắc rằng nhân Windows có bị cồng kềnh hay không.
tshepang

@Tshepang: Để công bằng, các câu hỏi hỏi về "nhân Linux và / hoặc hệ thống". Windows 7 và Windows Phone 7 có chia sẻ kernel không? Những gì tôi đã đọc cho thấy các hạt nhân của chúng có thể có ít mã chung hơn các hạt nhân của Ubuntu Server và Android.
RedGrittyBrick

Cảm ơn, nhưng câu hỏi thực sự là về Linux chứ không phải bất kỳ HĐH nào khác. Có nhiều người khác ở ngoài đó: en.wikipedia.org/wiki/List_of_operating_systems
Justin Ethier

Hạt nhân NT thực sự rất hiệu quả, nhưng đó là số lượng lớn các lớp xung quanh nó tạo ra
LawrenceC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.