소스를 배우는 데 도움이되는 흥미롭고 작은 Linux 커널 프로젝트는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/135637

문제

커널을 사용하여 초보자에게 어떤 소규모 프로젝트를 제안하겠습니까? 목표는 커널 소스 코드와 미친 아이디어 실험을위한 시설에 대한 친숙 함을 개발하는 것입니다.

관리 가능한 작은 작업 (예 : Syscall을 추가)을 생각하려고하지만 무엇을 제안 하시겠습니까? 대상 청중에게는 최소한 학부 OS 과정이있는 사람이 자신의 벨트 아래에 있다고 생각합니다.

도움이 되었습니까?

해결책

앞서 언급 한 학부 OS 과정을 수강했을 때, 우리의 임무 중 하나는 몇 가지 syscall을 추가하는 것이 었습니다. 그것들은 매우 간단했고, 다른 syscalls가 호출 된 횟수를 계산 한 카운터를 읽고 재설정하는 것 외에는 아무것도 없었습니다. 그러나 SyScall을 추가하려면 상당수의 파일을보고 수정해야합니다. 많은 파일을 수정해야합니다. 많은 파일을 수정해야합니다. 많은 파일은 커널 소스의 상대적으로 작은 하위 트리에 있지만 적어도 코딩 규칙에 익숙해지기에 충분합니다.

당신은 또한 다음을 고려할 수 있습니다 :

  • 스케줄러에 다른 (매우 간단한) 모드를 추가하여 흥미로운 정책을 구현합니다. "모두를 지배하기위한 하나의 구현"은 상당히 어렵고 (동의하기가 어렵다) 간단한 O (n) 스케줄러, 심지어 기초적인 O (1) 스케줄러를 수행하는 것은 비교적 간단하게 알고리즘 적으로 말할 수 있습니다. 그럼에도 불구하고 많은 코드를 뚫어야합니다.

  • 직렬을 통해 통신하는 8 비트 마이크로 컨트롤러 또는 자신을 구축하는 것과 같이 매우 간단한 외부 하드웨어 조각을 위해 장치 드라이버를 작성합니다. 하드웨어 경험이있는 경우 NES 컨트롤러를 모방 할 수있는 장치 드라이버를 작성하십시오 (직렬 포트를 사용하여 몇 개의 와이어를 비트 뱅하고 일련의 평행 대변인 시프트 레지스터)를 작성하십시오. 당신은 또한 정말 간단한 7 세그먼트 LED 디스플레이 (알람 시계에있는 것처럼) 또는 작은 컬렉션과 같은 일을 할 수 있습니다.

다른 팁

그만큼 커널 관리자 프로젝트 훌륭한 것들이 있습니다.

불꽃 전쟁을 시작할 위험이 있습니다. Linux 커널 코드에서 멀리 떨어져있는 것이 좋습니다. 커널 프로그래밍으로 손을 더럽 히고 싶다면 FreeBsd, NetBsd 또는 Opensolaris로 가십시오. 이 코드는 훨씬 더 깨끗하고 구조화 된 (물론 주관적인 의견) 실제로 설계되었으며 문서화되어 있습니다. 또한 커널 디버거가 있습니다 (Linus는 커널 디버거와 안정적인 커널 API에 대한 것이므로 모든 커널이 작업 대상이됩니다). 이 OS-ES는 각자의 웹 사이트에 프로젝트 목록이 있으며 Opensolaris 포럼 및 NetBSD 메일 링리스트에서 사람들과 개인적으로 경험이 매우 좋습니다.

C에 대한 경험이 있다고 말합니다. Linux 및 Opensolaris 또는 일부 BSD의 웹 소스 코드 리포지토리를보고 코드를 비교하고 자신의 의견을 제시합니다. 내가 말하는 것은 Linux보다 Open-Source Unix가 더 많으며 Linux를 가기 전에 적어도 그들을 봐야한다는 것입니다.

시작하기 좋은 곳은 a 프로젝트 유닉스 V6을 기반으로합니다. "XV6, 간단한 유닉스와 같은 교육 운영 체제"

도 있습니다 시닉스, 간단한 IA-32 모 놀리 식 유닉스-유사 커널 (인사되지 않음)

훌륭한 튜토리얼은 "자신의 장난감 Unix-Clone OS를 굴립니다".

미니 닉스 소스 코드를 다운로드하고 재생하려고 시도하고 논리를 이해해보십시오. 의심의 여지가 없지만 의심의 여지가 없지만 일정 시간에 전문가가 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top