IT/Linux Kernel
-
System Hang이란?IT/Linux Kernel 2012. 1. 16.
System Hang 이란 친구가 삶에 껴들어와서 사전적인 의미를 알아보고 정리해보는 시간을 가져보았다. hang or freeze라고 불리기도 하는 System Hang이란, 아무런 반응을 하지 않은 상태로써 시스템 운영이 불가능한 상태를 의미한다. 이 상태에서는 input에 대해서 아무런 응답을 하지도 않고 input이 없더라도 시스템 process들을 처리하지 >못하고 있을 것이다. 이러한 hang을 유발 시키는 요인은 하드웨어적과 소프트웨어적으로 볼 수 있다. 하드웨어 1) missmatched 하드웨어 2) 환경적인 요인으로 인한 하드웨어 열 데미지 3) 메모리(RAM) 부족 4) 하드웨어 fault 소프트웨어 1) infinite loop 또는 race condition 2) dead lock..
-
likely, unlikely 함수란?IT/Linux Kernel 2012. 1. 6.
리눅스 커널코드를 보면, likely와 unlikely란 함수를 종종 발견하곤 한다. 컴파일러는 작성된 함수와 코드들에 대해서 최적화 작업을 하여 성능을 향상시킨다. 여기서 갑자기 컴파일러 이야기를 하는 이유는 해당 함수들(정확히 말하자면 매크로이긴 합니다만)은 컴파일러와 관련이 있다. likely와 unlikely는 if 분기문에서 likely를 주면 컴파일러에게 해당 분기문에서 참인 경우가 더 많을 것이라는 정보를 주어 성능을 추가적으로 성능시키는 함수이다. 반대로 if 분기문 안에 unlikely를 주면 거짓인 경우가 더 많을 것이라는 정보를 준다. 실제로 정의된 매크로를 따라가면 __builtin_expect라는 함수가 사용됨을 볼 수 있다. __builtin_expect라는 이름이 좀 더 실제 ..
-
안드로이드 4.0, 기본 커널과 삼성 커널 코드 비교IT/Linux Kernel 2011. 12. 28.
안드로이드 커널 소스코드를 받는 과정에서, 하나가 아닌 여러개로 관리되는데 그중 삼성버전이 있었다. 삼성에서 관리하는 거의 초기모델에 가까운 안드로이드 모바일 갤럭시S가 처음 나왔을 때 엄청나게 느린 현상을 보여줌을 경험상으로 알고 있기 때문에(물론 지금은 엄청 빨라졌음) 출시된지 얼마 안된 안드로이드 4.0 플랫폼에서 사용되는 커널은 어떤 차이점이 있을까 궁금증으로 소스코드 diff를 좀 해보았다. 안드로이드 커널 소스코드 다운로드 방법은 이전에 포스팅 했었다. 2011/12/26 - [리눅스(Linux)/커널(Kernel)] - 안드로이드 커널 소스코드 그 과정에서 레파지토리 정보를 복사할 때, 삼성 커널로 복사해오면 된다. git clone https://android.googlesource.com..
-
안드로이드 커널 버전과 플랫폼 버전 확인하는 방법IT/Linux Kernel 2011. 12. 27.
안드로이드 코드는 크게 두가지로 나눠진다. 안드로이드 플랫폼 소스코드 안드로이드 커널 소스코드 각각의 소스코드에서 버전을 확인할 수 있다. 첫번째, 안드로이드 플랫폼 버전 확인하기. vi build/core/version_defaults.mk 플랫폼 소스코드를 다운로드 받았다면, 해당 버전파일을 통하여 이 코드의 플랫폼 버전을 확인할 수 있다. 플랫폼 버전이란 4.0(아이스크림) 이런걸 의미한다. 두번째, 안드로이드 커널 버전 확인하기 vi kernel/Makefile VERSION = 3 PATCHLEVEL = 0 SUBLEVEL = 8 EXTRAVERSION = NAME = Sneaky Weasel 커널 소스코드를 다운로드 받았다면, 해당 파일에서 정보를 확인할 수 있다. 내가 받은 안드로이드 커널 ..
-
안드로이드 커널 소스코드IT/Linux Kernel 2011. 12. 26.
안드로이드 커널 코드는 기본 리눅스코드를 커스터마이징을 통하여 필요한 기능을 추가하고 불필요한 부분을 제거하여 모바일이나 태블릿에 맞게 변경된 커널을 의미한다. 리눅스 코드 자체가 오픈소스이다 보니 안드로이드도 역시 코드가 오픈되어 있어 웹사이트에 방문하여 쉽게(?) 다운로드 받을 수 있다. http://source.android.com/source/downloading.html 안드로이드에서는 플랫폼 소스코드와 커널 코드가 구분되어 관리되고 있다. 플랫폼 소스코드는 download 사이트의 내용 자체를 따라하면 쉽게 받을 수 있지만, 커널 코드는 사이트에 적혀있지 않은 일부 정보가 필요하여 커널 코드 다운로드에 대해서 이야기 하려 한다. 일단 커널 코드를 받기 위해서 git이라는 새로운 소스코드 관리 ..
-
LKM(Loadable Kernel Module)IT/Linux Kernel 2011. 10. 13.
Loadable Kernel Module(이하 LKM이라 축약해서 부름)이란 말 그대로 시스템 운영 중에 커널에 load/unload 가능한 모듈을 의미한다. linux 커널의 장점 중에 하나로써, 시스템 운영 중에 모듈을 올릴 때 재부팅의 과정이 필요하다면 그 자체도 시스템 운영자에게 있어서 신경써야 할 부분이기 때문에 유연한 관리를 위한 기능이기도 하다. 간단한 LKM dummy 코드를 소개한다. 이 dummy 커널 모듈을 일단 만들고 커널 공부한 부분들을 이 모듈에 넣어 테스트 하면 유용하다. 일단 linux 시스템이 있어야 하고, 일단 커널 코드를 다운받아야 한다. 2011/08/18 - [리눅스(Linux)/커널(Kernel)] - linux kernel 소스코드는 어디서 받나요?? 자 그러면 ..
-
linux kernel 소스코드는 어디서 다운로드 받는가??IT/Linux Kernel 2011. 8. 18.
linux kernel은 linux OS의 CPU, Memory, File System, Network, Driver 등의 컴퓨터 시스템을 운영하는데에 있어서 핵심 처리 영역을 맡고 있다. 이러한 역할들을 처리하는 linux kernel은 www.kernel.org에서 다운로드 받아서 직접 설치할 수 있다. 출처 : http://www.kernel.org/ 버전이 최근까지 2.6.XX.X으로 유지되고 있었는데, 최근에 3.0.XX.X로 메이저 버전으로 올려서 stable 버전 3.0.2가 보여진다. stable이란 새로운 기능이 들어가지 않고 버그 수정 또는 안정성을 위한 기능 개선등의 변경만 있는 안정적인 버전을 의미한다. 그렇기 때문에 stable 버전들은 시간이 흐를수록 안정성이 더 높아진다. 커널..