커널 / 시스템 / 장치 드라이버 프로그래머가되는 방법? [닫은]


40

저는 현재 Android OS를 사용하는 소프트웨어 엔지니어로서 전문적인 역량으로 일하고 있습니다. 우리는 플랫폼을 프로젝트의 다른 측면들 사이에서 네이티브 데몬으로 통합하는 일을합니다. 저는 주로 SDK 및 Android 응용 프로그램을 개발하는 Java에서 일하지만 C / C ++의 플랫폼을 도와줍니다.

누구든지, 저는 저수준의 리눅스를 전문적으로 개발하는 데 큰 관심을 가지고 있습니다. 나는 현재의 입장에서 불행하지 않으며 회사가 (내가 실제로 일하는 것을 아주 좋아합니다!) 허락하는 한, 걸어 다닐 것입니다. 그러나 나는 그런 방향으로 일하고 싶습니다. 나는 Linux Kernel Development (로버트 러브)와 Linux Programming Interface (Michael Kerrisk) (매번 기회가있을 때마다 C 기술을 강화하는 것)를 통해 일하면서 몬스터와 비슷한 사이트를 우연히 탐색했다.

내가 보는 문제 는 엔트리 레벨 위치가 없다는 것입니다. 이 분야에 어떻게 침입합니까? "Linux Systems Programmer"또는 "Linux Device Driver Programmer"를 볼 때마다 최소 5-7 년의 관련 경험이 필요합니다. 그들은 주니어 레벨 프로그래머가 아닌 로프를 아는 사람을 원합니다 (나는 지금 7 개월 동안 일해 왔습니다 ...).

따라서 스택 오버 플로우에 대한 여러분 중 일부는 내가하고 싶은 일을하는 전문적인 역량으로 일한다고 가정합니다. 거기 어떻게 갔어요? 그곳에서 어떤 플랫폼을 사용하셨습니까? 컴퓨터 엔지니어와는 달리 CSC에 학사를두고 있기 때문에 좀 더 어려운 시간이 있습니까?

설명을 편집하십시오! 나는 리눅스 커널 / 드라이버 등의 오픈 소스 특성을 알고있다. 나는 나의 하루 직업이 어디에 있든 관계없이 기여할 계획이다. 어떤 종류의 엔트리 레벨 직책이 관련 업무를 수행하고 비용을 지불 할 수 있는지 궁금합니다. 지금까지 모든 답장을 보내 주셔서 감사합니다!


6
매우 간단합니다. 리눅스는 오픈 소스입니다. 개발 목록을 따르고 버그를 고치십시오. 물건을 알고 나면 새로운 기능, 최적화, 아마도 드라이버 같은 큰 물건을 쓰기 시작할 수 있습니다.
Let_Me_Be

2
그러나 Linux에서 영역을 선택하기 전에 Linux 작업에 대한 이해와 실습을 거쳐야합니다. Linux 파일 시스템 등에 대한 지식이 있어야합니다.
user29973

답변:


36

회사의 Linux 장치 드라이버를 작성하고 있으며 부서의 Linux 개발에 대해 가장 많이 알고이 역할을 맡아 새로운 역할을 추진했습니다. 주니어 급 스타일의 항목이 많았 기 때문에 존재하고 희망을 잃지 않습니다!

당신을위한 나의 즉각적인 조언은 당신이 당신의 초점을 좁힐 수 있는지 보는 것입니다. 커널 프로그래밍은 시스템 프로그래밍과 매우 다르며 장치 드라이버 프로그래밍과는 매우 다릅니다.

  1. 커널 개발자는 운영 체제 핵심을위한 인터페이스, 데이터 구조, 알고리즘 및 최적화에 중점을 둡니다.
  2. 시스템 프로그래머는 일반적이거나 어려운 작업을 자동화하기위한 데몬, 유틸리티 및 기타 도구를 작성합니다.
  3. 장치 드라이버는 커널 개발자가 작성한 인터페이스 및 데이터 구조를 사용하여 장치 제어 및 IO를 구현합니다.

아주 좋은 커널 프로그래머는 인터럽트 대기 시간과 하드웨어 결정에 대해서는 많이 알지 못하지만 잠금, 큐 및 Kobject가 작동하는 방식에 대해서는 많이 알 것입니다. 장치 드라이버 프로그래머는 잠금, 대기열 및 기타 커널 인터페이스를 사용하여 하드웨어가 올바르게 응답하도록 작동하는 방법을 알고 있지만 페이지 할당 버그를 수정하거나 새 스케줄러를 작성할 가능성은 없습니다.

따라서 개발 목록 또는 버그 추적기를 조사하여 가장 관심있는 분야를 선택하고 어떤 영향을 미치고 있는지 확인하십시오. 그런 다음 해당 프로젝트와 노력을 통해 경험을 제공하고 구축하십시오. 이름 / 이메일이 커널 메인 라인의 코드에 첨부되면 이력서 / 표지에서 다른 직위를 가리킬 수 있습니다 :-)


3
흥미롭지 만 마법의 총알이 아닐 수도 있습니다.
Matt Joiner

7
마법의 총알은 거의 존재하지 않습니다.
Ed S.

입력 해 주셔서 감사합니다! 나는 지금 내 초점을 좁히기 위해 노력할 것이다 (결국 모든 측면을 이해하고 싶다). 운전 기사의 "남자에게 가기"가되기 전에 어떤 능력 (공개 중이라면)으로 일했습니까?
아코디언

4
믿거 나 말거나, 하드웨어와 영업 담당자가이를 이해하려고하는 고객을위한 기술 지원이었습니다. 이메일과 전화에 응답했습니다. 그러나 Linux 용 커널 및 사용자 랜드 개발 경험이 저에게 더 도움이되었습니다.
Joe Friedrichsen

3

저는 Motorola 및 기타 하이테크 회사에서 근무한 경험이 15 년 이상인 소프트웨어 개발자입니다. 나는 BSCE 학위를 가지고 있습니다. 그래서 나는 아마추어가 아닙니다.

이 질문 ... 침입 방법 ...은 Linux뿐만 아니라 사실상 모든 분야의 전문 분야에 공통적 인 질문입니다. 실무자들이 전문화해야한다는 점에서 소프트웨어 엔지니어링은 의학처럼되었습니다. 그러나 10 년 동안 전문가로 근무한 후 회사의 규모가 줄어들고 해고되면 구직 시장이 바뀌었고 현재가 아닙니다. 이전에는 위시리스트에 모든 기술을 보유한 유일한 후보자가 해당 회사 또는 직접 경쟁 업체에서 이미 일하고있는 후보자 인 경우가 많았습니다. 꽤 힘들어졌습니다.

나는 지금이 상황에 처해 있으며 힘들지만 고용하기 위해 사용할 수있는 몇 가지 전략이 있습니다. 그러나 먼저 기술을 숙달해야합니다. 고용 된 경우 생산해야합니다. 준비가되면 다음을 고려하십시오.

  1. 작은 회사부터 시작하십시오. 그들은 큰 사람들처럼 그들이 누구를 고용하는지 까다로울 수 없습니다. 1 년에서 2 년을 보낸 후 그 후에 이력서에 대한 전문적인 경험을 얻을 수 있습니다.

  2. 특히 풀 타임으로 일하지 않는 경우 계약을 고려하십시오. 회사는 풀 타임보다 계약자에게 기회를 기꺼이 제공합니다. 다시 한번, 이력서를 입어 볼 수있는 검증 된 경험이 있으면, 문을 엽니 다.

  3. 소규모 프로젝트를 혼자서 수행하고 예비 고용주에게 제시 할 포트폴리오를 만드십시오. 이것은 중소 기업뿐만 아니라 중소 기업에도 진출 할 수있는 문을 열 수 있습니다.

이외에도 Kforce, Aerotek 등과 같은 회사의 전문 채용 담당자를 사용하는 것이 좋습니다. 고용주는 채용 비용을 지불하며 귀하가 직접 할 수없는 방식으로 귀하를 판매하는 데 도움을 줄 것입니다.

실제로, 7 개월의 경험을 가진 "주니어 프로그래머"는 새로운 것을하기 위해 고용 될 때 나와 같은 사람보다 큰 이점을 가지고 있습니다. 기업들은 "신선한 생활"/ "새로운 졸업생"을 좋아합니다. 왜냐하면 그들은 많은 돈을 요구하지 않을 것이며 필요한 경우 해외에서 긴 악취를 포함하여 무엇이든 할 것을 기꺼이 알고 있기 때문입니다. 내가 더 나은 직책을 위해 떠날 것을 알기 때문에 회사는 내가 한 직책을 신청하더라도 저를 채용하지 않습니다. 당신의 상황은 그렇게 나쁘지 않습니다.

행운을 빕니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.