첫번째로는 Monolithic-Kernel(일체형)이 있고 Micro Kernel이 있습니다.
- Monolithic-Kernel
- 리눅스나 윈도우등에서 사용되는 Monolithic-Kernel은 일체형 커널로써 프로세스관리나 메모리관리 파일시스템등이 커널에 포함되어 있습니다. 그래서 운영체제의 기능을 불러오기 위해선 시스템 콜을 이용합니다.
- Micro-Kernel
- 커널을 필요한 만큼만 남겨서 소영화 한 것으로 주로 임베디드 시스템에 사용됩니다. 주로 처리제어나 장치 구동 등 하드웨어에 의존하는 기능, 실시간 처리에 필요한 기능만 갖춥니다.
그 단점을 해소하기 위해 커널에 동적으로 코드를 로드, 언로드하는 것이 모듈 프로그래밍 입니다.
1. 먼저 module-init-tools 패키지를 설치해줍니다.
2. hello.c 파일을 작성줍니다.
init_hello 함수는 모듈이 시스템에 로드될때 동작합니다.
exit_hello 함수는 모듈이 시스템에서 제거될때 동작합니다.
3. Makefile 파일을 작성해줍니다.
4. 작성이 끝났으면 make 명령어를 실행해줍니다.
5. 파일이 생성된 것을 확인 할 수 있습니다.
6. insmod를 이용하여 모듈을 커널에 올리고 lsmod를 이용하여 확인해줍니다.
7. rmmod를 이용하여 모듈을 커널에서 내려주고 lsmod를 이용하여 확인해줍니다.
8. dmesg를 이용하여 동작을 확인합니다.
2. hello.c 파일을 작성줍니다.
init_hello 함수는 모듈이 시스템에 로드될때 동작합니다.
exit_hello 함수는 모듈이 시스템에서 제거될때 동작합니다.
3. Makefile 파일을 작성해줍니다.
4. 작성이 끝났으면 make 명령어를 실행해줍니다.
5. 파일이 생성된 것을 확인 할 수 있습니다.
6. insmod를 이용하여 모듈을 커널에 올리고 lsmod를 이용하여 확인해줍니다.
7. rmmod를 이용하여 모듈을 커널에서 내려주고 lsmod를 이용하여 확인해줍니다.
8. dmesg를 이용하여 동작을 확인합니다.