강의/Linux Program의 삶

[program의 삶] 1. program이 process가 되는 과정

jinkwon.kim 2023. 7. 22. 18:08
728x90
반응형

개요

여러분은 program과 process의 차이를 아시나요?

program이란?

저장소(HDD, SSD)등에 존재하는 Code들의 덩어리를 말합니다.

Process란?

Code 덩이가 Memory에 올라가면 Process라고 합니다. 

어떻게 Memory 올라가는가?

program은 어떻게 memory에 올라가는가가 궁금해질 수 있습니다.

 

"program은 관리를 위해서 여러 section으로 나눠져 있고 운영체제에 의해서 memory에 복사되어 올라갑니다."

 

결론적으로 program이 process가 되는 과정을 알기 위해서는 program의 section 구조와 각 section이 memory에 어떻게 mapping 되어서 cpu의 관리는 받는지입니다.

 

그래서 우리는 제일 먼저 program의 section구조를 상세하게 알아야 합니다. 

지금부터 program의 section 구조를 하나하나 알아보겠습니다. 

Program의 어떠한 구조로 되어있는가?

앞서 설명한되로 program은 여러 section으로 나눠져 있다고 말했습니다.

Linux program

리눅스에서 program의 구조는 "실행 가능(Executable)하고 링크 가능(Linkable)한 File의 Format을 ELF(Executable and Linkable Format)" 구조 입니다. 

 

다음은 wiki에서 발췌한 ELF 파일의 layout 및 code layout입니다.

https://en.wikipedia.org/wiki/Executable_and_Linkable_Format

 

Executable and Linkable Format - Wikipedia

From Wikipedia, the free encyclopedia Standard file format for executables, object code, shared libraries, and core dumps. Executable and Linkable FormatFilename extension none, .axf, .bin, .elf, .o, .out, .prx, .puff, .ko, .mod, and .soMagic number0x7F 'E

en.wikipedia.org

Layout

code layout

 

다음 post에서 ELF 각 section별 역할 및 실제 program의 debugging을 해보겠습니다.

정리 

program이 memory에 올라가면 process가 된다.

728x90
반응형

'강의 > Linux Program의 삶' 카테고리의 다른 글

[Linux Program 삶] 1. 목차  (0) 2023.07.22