Embedded : : Linux/: : Linux Kernel 15

커널과 모듈의 개념

커널(kernel)과 모듈(Module)을 간단히 파악해보면 커널이란? 커널이란 운영체제(Operating System)에서 가장 핵심적인 역할인 자원 (메모리, 프로세서등)을 관리하며 시스템이 원활히 돌아갈 수 있도록 제어해 준다. 현재 우리가 리눅스(OS)라고 하는것도 실제적으론 리눅스란 운영체제의 커널 이름을 말하는것인데 이것이 확장된 의미로 사용되어 현재의 '리눅스'란 OS를 지칭하게도 된것이다. 그러므로 Linux = kernel이란 등식이 성립한다. 초창기의 커널은 지원할 하드웨어가 그리 많지 않아서 커널에 하드웨어를 지원하는 코드를 모두 넣어 뒀다. 이후 운영체제가 무거워 지자 하드웨어를 제어하는 코드 중에서 필요할 때만 가끔식 사용하는 코드를 커널에 넣지 않고 별도로 보관했다가 필요할때 호..

프로세스, 유저 프로세스, 커널 프로세스

1.  프로세스 (Process)   1.1  프로세스란? 리눅스 시스템 메모리에서 실행 중인 프로그램을 말함스케줄링 대상인 태스크와 유사한 의미로 사용됨다수의 프로세스를 실시간으로 사용하는 기법을 멀티프로세싱같은 시간에 여러 프로그램을 실행시키는 기법을 멀티태스킹이라고 함  ex) 핸드론으로 전화하면서 메모하기 또는 음악을 들으며 웹 서치하기 즉, 여러 애플리케이션이 동시에 실행됨 이것은 멀티태스킹을 통해 시분할 방식으로 처리하기 때문에 가능 ​​  1.2  Task Discriptor 1.2.1 task_struct​  프로세스를 관리하는 자료구조, [태스크 디스크립터]  이 구조체는 프로세스가 쓰는 메모리 리소스, 프로세스 이름, 실행 시각, 프로세스 아이디(PID), 프로세스 스택의 최상단 주소..

Kernel이 하는 일

Kernel : 다양한 CPU, 메모리, 장치들을 관리한다. 1) Task(Process) Management : CPU를 추상적 자원인 Task로 제공 - 아래는 커널 소스로 실제 구현되어있음 2) Memory Management : 메모리를 추상적 자원인 Page, Segement로 제공 3) File System : 디스크를 추상적 자원인 File로 제공 4) Network Management : 네트워크 장치를 추상적 자원인 Socket으로 제공 5) Device Driver Management : 각종 외부 장치에 대한 접근 6) Interrupt Handling : 인터럽트 핸들러 7) I/O Communication : 입출력 통신 관리 (입출력 장치의 중개자)

Linux : Build System (Makefile, CMake)

Intro : C 프로그래밍 작업 순서Ⅰ. 프로그램을 작성Ⅱ. 컴파일러를 통해 컴파일 진행Ⅲ. 링크 진행Ⅳ. 실행파일 생성      Ⅰ. 프로그램 작성  자신이 구현하고자 하는 것을 C언어를 사용하여 논리적으로 작성한다.(이렇게 작성된 것을 Source-Code라 한다.)  이렇게 프로그램을 작성하는 과정을 흔히 코딩(coding)이라 한다. C/C++에서 우리가 작성한 소스 코드를 실제 실행할 수 있는 실행 파일로 변환하기 위해서는 빌드라는 과정이 필요하다.이 과정은 전처리(Preprocessing), 컴파일(Compile), 어셈블링(Assemble), 링킹(Linking) 순서로 이루어진다.     Ⅱ. 컴파일러를 통해 컴파일 진행  C언어를 이용해 작성한 코드를 컴퓨터가 이해할 수 있도록 기계어로..