2010-01-20 18 views
7

Tôi tự hỏi, liệu chúng ta có thể thực thi một chương trình trên máy không có hệ điều hành?Phần mềm có thể được thực hiện trong máy kim loại trần không?

Bên cạnh đó, tôi nghe nói rằng hạt nhân Linux được viết bằng ngôn ngữ C và hạt nhân được chạy trong khi khởi động, vì vậy tôi tự hỏi làm thế nào một máy tính hiểu ngôn ngữ mà không cần biên dịch đầu tiên?

+0

Không có gì trống về máy có thể khởi động Linux hoặc Windows. Nó cần một BIOS. –

+1

@nobugz: Điều gì khiến bạn nghĩ rằng BIOS * không phải là phần mềm *? Ý tôi là, hầu hết các chip BIOS đều có thể flash được, vì vậy tôi có thể viết lại nếu tôi thực sự muốn ... – dmckee

+0

Điều đó rất quan trọng. Ngược lại với "trần". –

Trả lời

8

Từ Wikipedia:

Khi máy tính được bật nguồn đầu tiên, nó không có hệ điều hành trong ROM hoặc RAM. Máy tính ban đầu phải thực hiện một chương trình nhỏ được lưu trữ trong ROM cùng với số lượng dữ liệu tối thiểu cần thiết để truy cập vào các thiết bị không bay hơi mà từ đó các chương trình và dữ liệu của hệ điều hành được nạp vào RAM. Chương trình nhỏ bắt đầu chuỗi tải này vào RAM, được gọi là bộ tải khởi động, trình khởi động hoặc bộ nạp khởi động. Công việc duy nhất của chương trình bộ tải khởi động nhỏ này là tải các dữ liệu và chương trình khác sau đó được thực thi từ RAM.

Máy tính có thể hiểu hạt nhân Linux vì nó đã được biên dịch và lưu trữ (thường) trên đĩa. Trình tải khởi động cung cấp cho máy tính đủ chức năng để tải hạt nhân biên dịch trước vào bộ nhớ.

Bạn sẽ không cần tải toàn bộ hệ điều hành để chạy chương trình trên máy tính, bạn có thể viết bộ nạp khởi động để khởi động chương trình bạn đã biên soạn. Bạn sẽ không có quyền truy cập vào bất kỳ cuộc gọi hệ điều hành nào giúp cuộc sống của người lập trình trở nên dễ dàng hơn.

+3

Trình tải khởi động * là * "phần mềm". – dmckee

7

hạt nhân Linux có thể được viết bằng C. Nó vẫn được biên dịch thành mã machinecode. Và mã máy này được thực thi trong khi khởi động

Bạn cũng có thể viết phần mềm chạy trong khi khởi động. Bằng cách này, bạn có thể tạo hệ điều hành tùy chỉnh của riêng mình hoặc tạo phần mềm tùy chỉnh của riêng mình mà có thể chạy mà không cần hệ điều hành trực tiếp. Hãy cẩn thận, mặc dù một hệ điều hành cung cấp cho bạn rất nhiều chức năng mà bạn sẽ phải làm cho mình. Những thứ như hỗ trợ trình điều khiển, thói quen đĩa IO, mạng, đa nhiệm và quản lý bộ nhớ bạn sẽ phải tự làm.

Cuối cùng: Tôi không nghĩ mọi người không thích điều đó nhiều lắm nếu họ phải khởi động lại máy của họ để có thể chạy phần mềm của bạn. Vì vậy, tôi muốn đi với văn bản cho một hệ điều hành ... nó làm cho sống dễ dàng hơn về bạn và người dùng.

+0

Người dùng có thể sử dụng ảo hóa (và thực sự nhiều người đề xuất DRM bị quyến rũ bởi ý tưởng không dựa vào hệ điều hành máy chủ - sáng kiến ​​"máy tính đáng tin cậy"). –

+0

Nhưng tất nhiên, bạn hoàn toàn không thể tin tưởng phần cứng ... DRM không thể thực hiện được. –

+1

Vì vậy, đó có nghĩa là mọi hệ điều hành như cửa sổ là một phần mềm ?? Sau đó, làm thế nào bout một ngày trước khi hệ điều hành được tạo ra ?? Và hiện một bộ nạp khởi động cần phải được viết bằng ngôn ngữ cấp thấp lắp ráp? – caramel1995

9

Tóm lại, có.

Linux vẫn là một chương trình phần mềm, trong mã máy, chạy trên máy kim loại trần. Mặc dù bạn có thể thực thi chương trình phần mềm mà không cần hệ điều hành, chương trình của bạn sẽ cần phải triển khai TẤT CẢ mã được sử dụng để nói chuyện với nhiều phần cứng khác nhau trong máy tính ở các mức độ khác nhau - ví dụ: xuất dữ liệu vào màn hình, giải thích đầu vào từ bàn phím/chuột/card mạng, vv .. (Một số công cụ cấp thấp được thực hiện bởi phần mềm trong các thành phần máy tính, nhưng phần còn lại chương trình của bạn sẽ phải thực hiện). Điều này khiến bạn mất nhiều thời gian và khó khăn để viết một cái gì đó chạy hoàn toàn mà không cần hệ điều hành.

7

Có, và nó được thực hiện ngay hôm nay cho các vi điều khiển nhỏ với một vài KB bộ nhớ.

Chương trình thường được viết bằng C và được biên dịch trên một số máy tính khác (được gọi là biên dịch chéo) và sau đó được tải dưới dạng dữ liệu nhị phân vào bộ nhớ flash của bộ điều khiển.

3

Hệ điều hành là gì nếu không phải phần mềm chạy trên máy "trống"? Thư?XD

+5

Không biết về voodoo, nhưng Windows * chắc chắn * làm một số necromancy một nơi nào đó dọc theo dòng. –

1

Chỉ cần nhìn vào bất kỳ bảng điều khiển trò chơi nào trước giao diện điều khiển 32 bit. Hầu như tất cả trong số họ thiếu bất kỳ mã khởi động nào cả, và chỉ đơn giản là khởi động trực tiếp từ hộp mực được chèn vào.

+0

Chỉnh sửa nhẹ: trong khi một số bàn giao tiếp thiếu bất kỳ loại ROM nội bộ nào, bao gồm bảng điều khiển trò chơi tuyệt vời nhất mọi thời đại (Atari 2600), thì không chính xác khi nói rằng "hầu như tất cả" đã làm. Intellivision, Odyssey2, Bally Astrocade, và Atari 7800 trước thời đại 32 bit, và có ROM khởi động nội bộ (tất cả bắt đầu thực thi mã từ ROM bên trong, mặc dù một số nhảy vào khoảng trống trước khi xác nhận rằng hộp mực tồn tại) – supercat

1

1st: Sure. Bạn không thực sự cần một hệ điều hành chỉ để ghi một số chu kỳ.

Bạn có thể cần một số loại hỗ trợ hệ điều hành nếu bạn muốn tải hoặc lưu trữ tệp hoặc dữ liệu, quản lý đầu vào hoặc đầu ra, nhưng điều này cũng có thể được thực hiện gọi các chức năng BIOS trực tiếp: đọc khóa từ bàn phím, ghi vào một số màn hình hoặc giao diện LED hoặc nối tiếp. Chỉ khi bạn muốn chạy nhiều chương trình, hoặc xử lý các ngắt từ bên ngoài, các tài nguyên xung đột xung đột hoặc như vậy, thì bạn sẽ rất cần một hệ điều hành.

Thứ hai: Hạt nhân được biên dịch thành mã máy, được thực thi trong khi khởi động. Không có C liên quan khi chạy hạt nhân. C chỉ giúp viết hạt nhân hoặc bất kỳ chương trình nào nên chạy, nếu trong hạt nhân hoặc "kim loại trần".

0

về mặt lý thuyết, bạn có thể tạo bộ nạp khởi động bằng cách sử dụng trình chỉnh sửa hex trên máy khác.

Các vấn đề liên quan