Bạn có nghĩ rằng hệ điều hành được quản lý là một ý tưởng tốt? [đóng cửa]


15

Các hệ điều hành được quản lý như Microsoft SingularityJNode là một khái niệm khá thú vị. Về cơ bản, HĐH được bootstraged với mã được viết bằng ngôn ngữ cấp thấp (C / C ++ / hội), về cơ bản thực hiện một máy ảo. Phần còn lại của HĐH (và tất cả các ứng dụng người dùng) chạy trên máy ảo. Có một số điều tuyệt vời về điều này. Ví dụ, bạn đột nhiên làm cho con trỏ tùy ý lỗi thời. Và nếu được viết tốt, bạn sẽ thoát khỏi hàng tấn di sản mà hầu hết các hệ điều hành hiện đại hiện có.

Tuy nhiên, là một bất lợi, bạn ở cách xa phần cứng hơn rất nhiều, và là một nhà phát triển, bạn mất khả năng rơi xuống mức độ trừu tượng thấp hơn và bị bẩn tay.

Ý kiến ​​của bạn về điều này là gì?


Tôi ngại trả lời vì tôi thiên vị các ngôn ngữ cấp cao vì chúng là ngôn ngữ duy nhất tôi đã sử dụng
TheLQ

2
Với các máy tính nhanh hơn bao giờ hết, tôi nghĩ đây là một vấn đề lớn. Tuy nhiên, nếu MSFT thực hiện nó, nó sẽ rất tuyệt hoặc hút rất nhiều - không có giữa.
Công việc

Lưu ý rằng "lỗi kế thừa" là những gì làm cho các ứng dụng hiện có chạy. Đừng đánh giá thấp tầm quan trọng của việc thực sự có thứ gì đó để sử dụng.

Câu trả lời:


8

Tôi nghĩ rằng đây là một trường hợp khác trong đó "nó phụ thuộc".

Nếu bạn đang viết các ứng dụng như trình duyệt web, trình xử lý văn bản, v.v ... trong đó hiệu suất nhanh như chớp không nhất thiết là một vấn đề thì phương pháp này có giá trị. Bằng cách sử dụng phương pháp này, bạn có thể cung cấp cho khách hàng của bạn trải nghiệm an toàn hơn, được kiểm soát nhiều hơn. Bạn không chỉ hạn chế thiệt hại có thể được thực hiện bởi phần mềm độc hại, mà bạn còn đang chạy trong một môi trường phù hợp hơn.

Nó giống như sự khác biệt giữa game console và game PC. Người trước biết chính xác phần cứng họ cần để làm việc với cái gì để có thể sử dụng kiến ​​thức đó trong khi cái sau phải có khả năng đối phó với nhiều loại card đồ họa, card âm thanh, tốc độ ổ cứng hơn, v.v.

Tuy nhiên, sẽ có các ứng dụng (như trò chơi!) Yêu cầu quyền truy cập ở mức độ thấp và vẫn sẽ cần được chạy "nguyên bản".

Giống như các ngôn ngữ được quản lý, bạn sẽ phải sử dụng công cụ thích hợp cho công việc.


3
Tôi thực sự không đồng ý. Không có lý do gì để có một trò chơi chạy tự nhiên, và thực sự không cần phải trở thành người bản địa ở mức độ thấp nếu hệ điều hành cung cấp cho bạn tất cả các điểm vào được quản lý mà bạn cần. Tất nhiên có một số nhược điểm về hiệu năng (thực sự không đáng kể nếu toàn bộ hệ thống được quản lý) nhưng ngày nay chúng ta có nhiều sức mạnh xử lý và rất nhiều nhu cầu về phần mềm rất đáng tin cậy.
Wizard79

@Lorenzo Games đã làm căng thẳng máy tính đủ rồi, vì vậy hiệu suất rất quan trọng. Tuy nhiên, tôi không chắc mức độ ảnh hưởng của hiệu năng sẽ là bao nhiêu nếu tất cả VM thực hiện được bao bọc các cuộc gọi riêng
TheLQ

4
@TheLQ: vấn đề là các trò chơi đã không phải đối phó với "công cụ cấp thấp" vì luôn có một số phần mềm trung gian (DirectX, Open GL, v.v.). Tất nhiên chúng là chuyên sâu tính toán, nhưng sử dụng một phần mềm trung gian đã là một hiệu suất. Nó sẽ chỉ là một phần mềm trung gian được quản lý (và jited).
Wizard79

3
Nếu HĐH chăm sóc JITting, bạn sẽ có mã được quản lý chạy nhanh hơn hoặc ít hơn mã "gốc". Hãy nhớ rằng, nếu bạn phải có quyền điều khiển giống như chương trình, bạn luôn có thể sử dụng chương trình trực tiếp theo mã byte.
Chinmay Kanchi

3
Afaik, MS Singularity được tăng hiệu suất đáng kể từ thực tế là không cần phải chuyển đổi giữa chế độ kernel và chế độ người dùng. Ngã ba trở nên rẻ hơn nhiều, quá.
9000

3

Nói chung tôi nghĩ rằng chúng là một ý tưởng tốt, nhưng vì không có nhiều trong số chúng xung quanh hoặc gần hoàn toàn nướng nên rất khó để nói chúng hoạt động như thế nào trong thế giới thực. Tôi ước rằng MS đã cập nhật dự án Singularity để chúng ta có thể thấy nơi đó đang diễn ra, nhưng tôi đoán là một số trong đó đang được làm việc trong một số phiên bản Windows


3

Tôi nghĩ rằng lợi ích của một hệ điều hành được quản lý hoàn toàn là rất lớn và đó thực sự có thể là tương lai, nhưng nó sẽ cần nhiều năm để đi.

Một hệ điều hành được quản lý tốt sẽ cung cấp cho bạn tất cả các điểm vào được quản lý mà bạn cần để thực hiện mọi điều cấp thấp bạn cần, bất kể được quản lý: bắt các ngắt và thực hiện I / O với các thiết bị. C # cũng cho phép mã không an toàn (xử lý các con trỏ) nhưng nó sẽ chỉ được phép trong "trình điều khiển thiết bị" (đây sẽ chỉ là một loại quy trình phân lập phần mềm khác).

Những lợi ích về an toàn, tính đồng nhất, tính di động và đặc biệt là độ tin cậy chắc chắn sẽ vượt quá mọi nhược điểm về hiệu suất. Sau đó, một hệ thống được quản lý hoàn toàn nhanh đến mức đáng ngạc nhiên, vì không còn cần phải thực hiện chuyển đổi ngữ cảnh.


Bạn có chắc chắn về việc chuyển đổi bối cảnh không cần thiết? Bạn vẫn cần chạy nhiều chương trình cùng một lúc.
Công việc

Nếu cả chương trình và mã đều chạy trong VM thì không thể có chuyển đổi ngữ cảnh. Tuy nhiên, nó sẽ yêu cầu thực hiện lại MMU bằng ngôn ngữ HL nên tôi thực sự nghi ngờ sẽ có nhiều lợi ích về hiệu suất.
Maciej Piechotka

2

Các hệ điều hành được quản lý có thể bằng cách nào đó giống như microkernels - bạn hy sinh hiệu năng để đảm bảo an toàn.

Có thể có các vấn đề tương tự vì nó yêu cầu chia mã thành 2 phần:

  • Hạt nhân cấp thấp được viết bằng C / hợp ngữ
  • Hạt nhân cấp cao hơn được viết bằng ngôn ngữ được quản lý

Tùy thuộc vào chi phí khi nhập / rời ngôn ngữ HL một cách an toàn, nó có thể đặt ra các vấn đề tương tự như microkernels - có thể nhanh hơn một chút (để lại HL nhanh hơn sau đó chuyển đổi ngữ cảnh đầy đủ nhưng ví dụ IIRC là JNI khá tốn kém).

Ứng dụng người dùng cũng có thể cần các bối cảnh riêng biệt vì nhiều ứng dụng được viết trên các nền tảng khác (giả sử C, Java hoặc .Net). Trong các trường hợp tương tự, các ứng dụng có thể bị ràng buộc bởi CPU (trình biên dịch, bộ chuyển đổi nhạc, v.v.) và thậm chí cần tối ưu hóa trình biên dịch để thực hiện với tốc độ đủ. Bên cạnh đó - bảo vệ MMU được triển khai bằng ngôn ngữ HL có thể sẽ không nhanh bằng phần cứng ngay cả khi nó có thể được điều chỉnh tốt hơn nhiều.

Ngoài ra ngôn ngữ HL không thành thạo trong các hoạt động cấp thấp. Trong khi phần mềm thường được thiết kế với trình điều khiển thực hành mã hóa "tốt" thì không cần thiết như vậy. Tôi không nghĩ rằng họ sẽ bảo vệ chống lại ít nhất một số lỗi vì hạt nhân đôi khi đòi hỏi phải quản lý bộ nhớ.

Cuối cùng tôi không nghĩ rằng hệ điều hành như vậy sẽ yêu cầu VM đầy đủ. Vì hệ điều hành không thể được xây dựng với các ngôn ngữ HL được biên dịch theo nguyên tắc biên dịch một lần ở mọi nơi (ngay cả với GC & co.) Sẽ làm cho ứng cử viên tốt hơn.

Ví dụ, bạn đột nhiên làm cho con trỏ tùy ý lỗi thời.

Hệ điều hành vốn đã ở mức độ thấp. Bạn chuyển đến phần cứng không chỉ là 'con trỏ tùy ý' mà có lẽ là địa chỉ vật lý chứ không phải là địa chỉ ảo. Một số DMA chỉ có thể xử lý 16MiB bộ nhớ đầu tiên. Mặc dù hệ điều hành như vậy có thể đơn giản hóa rất nhiều nhưng nó sẽ không thoát khỏi địa chỉ.

Và nếu được viết tốt, bạn sẽ thoát khỏi hàng tấn di sản mà hầu hết các hệ điều hành hiện đại hiện có.

  1. Có rất nhiều phần cứng di sản. Nhiều hơn nữa trong phần mềm. Trước tiên, bạn bắt đầu ở chế độ thực, sau đó kích hoạt cổng A20 (không hỏi) nhảy vào chế độ được bảo vệ sau đó chuyển sang chế độ dài.
  2. Khả năng tương thích API / ABI là tốt. Nói rằng họ đã viết HĐH như vậy - bạn sẽ chạy cái gì trên đó? Firefox - không (C và C ++ sử dụng WinAPI). Java - có lẽ nó cần phải được chuyển hoặc có một số vấn đề nhỏ thông qua ikvm - trừ khi nó vui lòng sử dụng JNI. Tôi đoán MSSQL (và chắc chắn Oracle, MySQL, Postgresql ...) không được viết bằng ngôn ngữ được quản lý nên sẽ không phù hợp với máy chủ.
  3. Ngay cả khả năng tương thích lỗi là "tốt". AFAIK MS dành nhiều thời gian chỉ để kiểm tra và kiểm tra xem một số phần mềm không sử dụng API theo cách thông minh (đọc không chính xác). Giống như vấn đề sử dụng con trỏ sau freenó khi Windows thực sự bắt đầu giải phóng bộ nhớ.

Tôi đoán nó sẽ trở nên phổ biến cùng thời gian với microkernels.


2

Cá nhân, tôi nghĩ ý tưởng về một hệ điều hành được quản lý hơi giống với Chủ nghĩa Cộng sản: tốt về lý thuyết, nhưng không thực tế để thực hiện.

Vấn đề là tôi chỉ không thấy bất kỳ cách nào để đưa HĐH được quản lý về mà không viết lại hoàn toàn HĐH từ đầu (và tôi hy vọng ai đó có thể chứng minh tôi sai về phần này). Ngoài ra, làm thế nào để bạn làm cho hàng thập kỷ mã không được quản lý phù hợp với một hệ điều hành được quản lý?

Các hạt nhân của các hệ điều hành phổ biến nhất hiện đang được thử nghiệm chiến đấu và đã trưởng thành trong suốt một vài thập kỷ. Bạn không chỉ đơn giản là viết lại chúng trên một ý thích. Chưa kể rằng lịch sử có đầy đủ các ví dụ về thiết kế bộ xử lý và kiến ​​trúc hạt nhân tốt hơn không thể phủ nhận nhưng không bao giờ có thể thuyết phục bất cứ ai rằng chúng đáng giá để thay đổi chúng.

Cuối cùng, một công ty như Microsoft hay Apple sẽ bán một hệ điều hành được quản lý cho khách hàng như thế nào? Người dùng máy tính trung bình thậm chí sẽ quan tâm nếu hệ điều hành của họ được quản lý hoặc không được quản lý?

Những lưu ý ở trên, tôi hy vọng rằng tôi đã sai và các hệ điều hành được quản lý sẽ trở thành hiện thực. Nhưng tôi hoài nghi. Nếu chúng ta từng thấy nó, có lẽ nó sẽ không còn trong một hoặc hai thập kỷ nữa.


2
Nhân hệ điều hành không quan trọng lắm để chấp nhận. MS đã phát minh ra một hạt nhân NT hoàn toàn mới, không tương thích với mọi thứ và đó là một thành công. Apple đã thay đổi kiến ​​trúc hạt nhân mạnh mẽ (và kiến ​​trúc CPU, ba lần) và vẫn phát triển mạnh. Điều quan trọng là khả năng tương thích với phần mềm hiện có và dễ dàng chuyển. Các lớp tương thích và / hoặc ảo hóa cho phép chuyển đổi suôn sẻ từ mã cũ sang mã mới trông không quá khó trong một hệ điều hành được quản lý.
9000

2

Mã được quản lý chỉ là phép ngoại suy của những gì bảo vệ bộ nhớ ảo mua cho bạn ngày hôm nay, cụ thể là khả năng máy tính từ chối truy cập vào các nguồn tài nguyên.

IBM đã thực hiện điều này trên các hệ thống máy tính lớn của họ (họ chỉ gọi nó là cái gì khác), vì vậy theo tôi chỉ là vấn đề thời gian trước khi điều này xảy ra trên các hệ thống có sẵn cho công chúng.

Bạn có quan tâm nếu một Máy tính xách tay của Google (chạy Chrome và về cơ bản không có gì khác) chạy trên mã được quản lý hay không?


1

Tuy nhiên, là một bất lợi, bạn ở cách xa phần cứng hơn rất nhiều, và là một nhà phát triển, bạn mất khả năng rơi xuống mức độ trừu tượng thấp hơn và bị bẩn tay.

Điều này không thực sự đúng. Trong JNode chẳng hạn, có một Unsafelớp (và các lớp khác) cho phép bạn truy cập các vị trí bộ nhớ, v.v. Ngoài ra còn có một số lớp / phương thức "ma thuật" được dịch sang các hướng dẫn được mã hóa bởi trình biên dịch JIT. Truy cập vào các lớp / phương thức này bị (hoặc sẽ) bị hạn chế bởi trình quản lý bảo mật, trình biên dịch JIT, v.v. Nhưng nếu bạn đang viết mã thực thi ở cấp hệ điều hành, các phương tiện này có sẵn cho bạn.

Thông báo trước là (tất nhiên) rằng việc sử dụng không chính xác Unsafevà các lớp liên quan có thể dẫn đến sự cố hệ điều hành ngay lập tức hoặc xuống đường đua.


0

Tôi nghi ngờ tính hữu dụng của chúng cho máy tính để bàn. Nhưng thời gian có thể chứng minh tôi sai về điểm này.

Nhưng một tiềm năng thú vị trong mắt tôi là hệ điều hành máy chủ, cụ thể hơn là hệ điều hành khách trong môi trường ảo hóa. Tôi không bao giờ ngồi đúng với tôi để cài đặt cài đặt máy chủ windows đầy đủ trong môi trường máy chủ ảo, biết có bao nhiêu dịch vụ không cần thiết chạy, bao gồm cả GUI đầy đủ.

Bây giờ cài đặt một cái gì đó như Singularity trên một máy chủ ảo để lưu trữ các ứng dụng ASP.NET, điều đó có ý nghĩa hơn. Giả sử rằng họ có thể giữ cho nó một hệ điều hành nhẹ.


1
Thật tuyệt khi bỏ Windows hoàn toàn, khi bạn có thể.
Công việc

1
Xu hướng sử dụng trình duyệt hộp cát và những thứ phải đối mặt với internet khác có thể cho thấy rằng một hệ điều hành được quản lý hoặc ít nhất là ngăn cách, cũng như máy tính để bàn cũng được mong muốn.
9000
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.