커널 개발에 관심 있으신분?

태훈의 이미지

http://kldp.org/node/122058#comment-548325

고성능 ARM 아키텍처 타겟으로 운영체제 커널 개발을 하고 있습니다.

이제 커널의 기본 기능은 구현은 마무리 되어가는 단계라서 조만간 0.1 버전을 릴리즈하면서 코드를 오픈하려고 합니다.

밑바닥부터 새로 구현했기 때문에 GPL 라이센스를 채택하지 않아도 되지만, 제가 오픈소스를 좋아하기 때문에 그냥 오픈하고 싶습니다.

코드를 오픈하기 전에 우리나라에서 커널 개발에 관심있으신 분이 얼마나 되는지 사전 수요조사를 하고 싶습니다. 가능하면 프로젝트가 관심받고, 열의가 넘치고, 재밌게 진행 되었으면 하거든요.

현재 프로젝트 소스 트리는 다음과 같습니다.

.
`- src
   |-- Doxyfile
   |-- Makefile
   |-- Rules.mk
   |-- apps
   |   |-- Makefile
   |   |-- Rules.mk
   |   |-- app1
   |   |   |-- Makefile
   |   |   `-- main.c
   |   |-- app2
   |   |   |-- Makefile
   |   |   |-- main.c
   |   |   `-- sh.h
   |   |-- app3
   |   |   |-- Makefile
   |   |   `-- main.c
   |   |-- app4
   |   |   |-- Makefile
   |   |   `-- main.c
   |   |-- apps.lds
   |   |-- config.mk
   |   |-- include
   |   |   |-- list.h
   |   |   `-- stdio.h
   |   `-- lib
   |       |-- Makefile
   |       |-- console.c
   |       |-- end_mark.c
   |       |-- start.S
   |       |-- syscalls.c
   |       `-- vsprintf.c
   |-- arch
   |   `-- arm
   |       |-- Makefile
   |       |-- boot
   |       |   |-- Makefile
   |       |   |-- idt.c
   |       |   |-- init.c
   |       |   |-- mm_init.c
   |       |   `-- start.s
   |       |-- config.mk
   |       |-- excep.S
   |       |-- idt.c
   |       |-- init
   |       |   |-- Makefile
   |       |   `-- kernel_start.s
   |       |-- io.c
   |       |-- irq.c
   |       |-- kernel.lds
   |       |-- lib
   |       |   |-- Makefile
   |       |   |-- arm_lib.h
   |       |   |-- delay.c
   |       |   |-- err_msg.c
   |       |   |-- io-readsb.S
   |       |   |-- io-readsl.S
   |       |   |-- io-readsw.S
   |       |   |-- io-writesb.S
   |       |   |-- io-writesl.S
   |       |   `-- io-writesw.S
   |       |-- memory
   |       |   |-- Makefile
   |       |   `-- pagetable.c
   |       |-- merge.lds
   |       |-- syscall_tlb.S
   |       |-- task
   |       |   |-- Makefile
   |       |   |-- idle.c
   |       |   `-- task.c
   |       `-- timer.c
   |-- boot
   |   |-- Makefile
   |   |-- init.c
   |   |-- ksh.c
   |   `-- ksh.h
   |-- drivers
   |   |-- Makefile
   |   |-- core.c
   |   |-- eth_smc9118.c
   |   |-- eth_smc9118.h
   |   `-- serial_pl01.c
   |-- fs
   |   |-- Makefile
   |   |-- diskio.c
   |   |-- ff.c
   |   `-- file.c
   |-- include
   |   |-- apps.h
   |   |-- arch-arm
   |   |   |-- board.h
   |   |   |-- context.h
   |   |   |-- gic.h
   |   |   |-- io.h
   |   |   |-- platform.h
   |   |   |-- schedule.h
   |   |   |-- serial.h
   |   |   `-- system.h
   |   |-- config.h
   |   |-- delay.h
   |   |-- driver.h
   |   |-- file.h
   |   |-- fs
   |   |   |-- diskio.h
   |   |   |-- ff.h
   |   |   |-- ffconf.h
   |   |   `-- integer.h
   |   |-- idt.h
   |   |-- irq.h
   |   |-- list.h
   |   |-- memory.h
   |   |-- net
   |   |   |-- ether.h
   |   |   |-- icmp.h
   |   |   |-- inet.h
   |   |   |-- ip.h
   |   |   |-- ip_addr.h
   |   |   |-- mii.h
   |   |   |-- netif.h
   |   |   |-- opt.h
   |   |   |-- pbuf.h
   |   |   `-- udp.h
   |   |-- net.h
   |   |-- sema.h
   |   |-- stdio.h
   |   |-- task.h
   |   |-- timer.h
   |   `-- types.h
   |-- lib
   |   |-- Makefile
   |   |-- console.c
   |   `-- vsprintf.c
   |-- memory
   |   |-- Makefile
   |   |-- end_mark.c
   |   |-- exec.c
   |   |-- ioremap.c
   |   |-- memory.c
   |   `-- region.c
   |-- network
   |   |-- Makefile
   |   |-- arp.c
   |   |-- ether.c
   |   |-- icmp.c
   |   |-- inet.c
   |   |-- ip.c
   |   |-- net.c
   |   |-- netif.c
   |   |-- netrx.c
   |   |-- nettx.c
   |   |-- pbuf.c
   |   |-- tcp.c
   |   `-- udp.c
   `-- task
       |-- Makefile
       |-- scheduler.c
       |-- syscall.c
       `-- task_manager.c
 
26 directories, 132 files

프로젝트 목표는
- ELF, PE 실행파일 호환
- 리눅스 드라이버 호환 -> DAL(Driver Abstract Layer)
- 고성능/멀티코어 ARM 아키텍처 최적화
- 현존하는 최신 커널 기술 구현(ex> FlexSC)
* 분산 운영체제(DSM, DFS, Load balancing, Task migration) 기능 제공 -> 철학 "Everything is one!"
* 그냥 제가 쓰려고요. :) 게임도 하고, 코딩도 하고, 웹 서핑도 하고, 서버도 돌리고...

현재 구현된 기능은
- 멀티 태스킹(선점형)
- 유저모드 어플리케이션 실행
- TCP/IP 네트워킹
- 가상 메모리
- 메모리 파일시스템(FAT32)
- 페이지 단위 메모리 관리
- 요구 페이징
- 몇가지 시스템 콜(FlexSC로 전환 예정)
-> fork(), exec(), open(), read(), write(), close(), exit(), ioctl()
- 커널 태스크
- 세마포어
- 커널 라이브러리 약간
- etc...

이제 0.1 버전이라서 할일도 많고 갈길이 멉니다. 문제는 코드를 오픈했는데 관심도 없고 재미도 없어지면 차라리 혼자하는게 편합니다. 그래서, 사전에 관심도 조사를 해보고 싶네요.

normalized.signal의 이미지

대학 다닐때도 가능합니다

나빌레라의 이미지

진정한 고수분들은 대기업보다는 다른 곳에 많이 계십니다.

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

태훈의 이미지

대기업 엔지니어분들 중에서 혼자서 커널 개발이 가능한 분이 몇분이나 계실지...

반대로 학부생 중에서 혼자서 커널 개발이 가능한 학생도 많습니다. (완성도가 좀 떨어지긴 하지만...) 제가 아는 어떤 친구는 중학생때(초딩때였나?) x86 아키텍처용 OS 커널 개발을 했더군요.

뭔가 아이러니하죠? :)

Just do it!

익명 사용자의 이미지

안녕하세요. 태훈님.

ARM 기반에서 운영체제를 하고 있는 초보자입니다.

태훈님의 첫 포스팅부터, 매일 매일 오에스가 공개되었는지 확인하고 있습니다.

준비에 많은 시간이 걸리실 것으로 생각됩니다만.

소리없이 응원하고 있는 초보 개발자들을 위해서 빠른 오픈 부탁드립니다!!

기대하고 있겠습니다!

아. 참고로 전 대기업도, 학부생도 아닌 고졸출신의 개발자입니다.

태훈의 이미지

DINOS 한국 메일링 리스트> https://groups.google.com/forum/#!forum/dinos-kr

Just do it!

페이지