2008-09-25 24 views
13

Bạn dự định những dự án nhỏ nào cho người mới làm quen với hạt nhân, nhưng ai có nhiều hệ thống và trải nghiệm C? Mục đích là để phát triển một sự quen thuộc với mã nguồn hạt nhân, và một cơ sở để thử nghiệm với những ý tưởng điên rồ.Một số dự án hạt nhân Linux nhỏ, thú vị nào giúp tìm hiểu nguồn?

Tôi đang cố gắng nghĩ về một số tác vụ nhỏ có thể quản lý (ví dụ: thêm một syscall), nhưng bạn sẽ đề xuất điều gì? Đối với một đối tượng mục tiêu nghĩ rằng một người có ít nhất một khóa học hệ điều hành đại học theo vành đai của họ.

Trả lời

5

Khi tôi tham gia khóa học về hệ điều hành đại học nói trên, một trong các nhiệm vụ của chúng tôi là thêm một vài syscalls. Chúng cực kỳ đơn giản, không có gì ngoài việc đọc và đặt lại các quầy đếm số lần các syscalls khác được gọi. Tuy nhiên, việc thêm một syscall đòi hỏi phải xem xét và sửa đổi một vài tệp .. rất nhiều trong số chúng nằm trong cùng một nhánh nhỏ tương đối của nguồn hạt nhân, nhưng nó đủ để làm quen với các quy ước mã hóa, ít nhất.

Bạn cũng có thể xem xét:

  • Thêm một chế độ (rất đơn giản) để trình lên lịch để thực hiện một chính sách mà bạn thấy thú vị. Việc "thực hiện một quy tắc tất cả" là khá khó khăn (và thậm chí khó hơn để đồng ý), nhưng làm một bộ lập lịch O (N) đơn giản, thậm chí một bộ lịch trình O (1) thô sơ, có thể được thực hiện tương đối đơn giản, nói theo thuật toán. Mặc dù vậy, nó đòi hỏi phải chọc qua rất nhiều mã.

  • Viết trình điều khiển thiết bị cho một phần cứng bên ngoài rất đơn giản, như vi điều khiển 8 bit giao tiếp thông qua nối tiếp hoặc thậm chí là một thứ bạn tự xây dựng. Nếu bạn có bất kỳ trải nghiệm phần cứng nào, có thể thử viết trình điều khiển thiết bị có thể mô phỏng một bộ điều khiển NES (bit-bang một vài dây bằng cách sử dụng cổng nối tiếp và có thể là thanh ghi thay đổi nối tiếp song song). Bạn cũng có thể làm một cái gì đó giống như lái xe một màn hình LED 7 phân đoạn thực sự đơn giản (như bạn có trong một đồng hồ báo thức), hoặc một bộ sưu tập nhỏ của chúng.

5

Có nguy cơ bắt đầu một cuộc chiến tranh lửa: Tôi khuyên bạn nên tránh xa mã hạt nhân Linux. Nếu bạn muốn làm cho bàn tay của bạn bị bẩn với lập trình hạt nhân, hãy đi với FreeBSD, NetBSD hoặc OpenSolaris, chẳng hạn. Mã này sạch hơn và có cấu trúc tốt hơn (đây là ý kiến ​​chủ quan của khóa học), được thiết kế thực sự và thậm chí là tài liệu. Thêm vào đó, họ có trình gỡ lỗi hạt nhân (lưu ý rằng Linus chống lại cả trình gỡ rối hạt nhân và API hạt nhân ổn định, khiến cho bất kỳ hạt nhân nào trở thành mục tiêu di động cho công việc của bạn). Những OS-es này thậm chí có một danh sách các dự án trên các trang web tương ứng của họ, và cá nhân tôi có kinh nghiệm cực kỳ tốt với những người trên diễn đàn OpenSolaris và danh sách gửi thư của NetBSD.

Bạn nói rằng bạn có kinh nghiệm với C - xem các kho lưu trữ mã nguồn web của Linux và OpenSolaris hoặc một số BSD, so sánh mã và đưa ra ý kiến ​​của riêng bạn. Những gì tôi đang nói là, tôi đoán, rằng có nhiều hơn với mã nguồn mở UNIX hơn Linux, và rằng bạn nên ít nhất là nhìn vào chúng trước khi đi cho Linux.

+0

[cần dẫn nguồn] trên Linus chống lại trình gỡ rối hạt nhân? Tôi nhận thức được lý do của anh ấy khi cam kết với một API. – pjc50

+2

Đây có phải là trích dẫn đủ hay không: http://www.linuxtoday.com/news_story.php3?ltsn=2000-09-07-002-21-OS-CY-KN – zvrba

1

Một nơi tuyệt vời để bắt đầu là project dựa trên Unix v6. "Xv6, một hệ thống đơn giản giống như Unix điều hành giảng dạy"

Ngoài ra còn có cynix, một đơn giản IA-32 khối unix-like hạt nhân (bỏ dở)

Một hướng dẫn tuyệt vời là "Roll your own toy UNIX-clone OS".

0

Thử tải mã nguồn MINIX và chơi với nó, hãy thử tìm hiểu logic và nó sẽ mất nhiều thời gian không có nghi ngờ nhưng nếu bạn dính vào nó, bạn có thể là một chuyên gia trong một thời gian

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