반응형

이전 시간에는 컴퓨터의 구성요소에 대해 간단히 알아보았습니다.

이번에는 컴퓨터가 어떻게 프로그램을 실행하고 컴퓨터의 구성요소들을 관리하는지 알아보겠습니다.

 

프로그램 : 컴퓨터를 실행시키기 위한 일련의 순차적으로 작성된 명령어 모음

프로세스 : 컴퓨터에서 실행중인 프로그램(일, task)

 

  프로그램은 우리가 특정 작업을 수행하기 위하여 작성한 코드이며, 이것이 실행될 때 프로세스라고 부릅니다. OS는 다양한 프로세스들이 요청한 작업을 컴퓨터 자원을 활용하여 수행합니다. 그럼 이제 프로그램이 '실행'된다는 것의 의미를 알아보겠습니다.

 

프로세스는 일반적으로 아래와 같은 구조를 가지고 있습니다. 총 4Gb의 메모리로 구성되어 있으며, 0~3Gb까지의 주소를 User Space, 3Gb~4Gb까지의 주소를 Kernal Space라고 부릅니다. 우리가 작성한 프로그램에 관한 정보는 0~3Gb의 User Space의 메모리에 올라가며, 순차적으로 코드가 수행됩니다. 

 

  이렇게 만들어진 프로세스의 메모리 공간을 PCB(Process Control Block)이라고 합니다. PCB는 User Space(0~3Gb), Kernal Space(3Gb ~ 4Gb)로 구성되어 있으며, Kernal Space는 모든 프로세스에서 공유하게 됩니다.(이 부분은 나중에 더 자세히 설명) 

  User Space는 Stack, Heap, Data, Text로 구성되어 있으며 다음과 같은 데이터가 저장됩니다.

 

1. Stack : 프로그램 실행 과정에서 생성되는 지역변수, 주소값 등을 저장하는 공간(순차적으로 주소가 낮아지는 방향으로 쌓임)

2. Heap : 동적으로 할당되는 메모리 공간 (By malloc ...)

3. Data : 1) Data : 초기화된 전역변수가 저장된다. 

            2) BSS : 초기화되지 않은 전역변수가 저장된다.

4. Text(Code) : 프로그램 실행 코드

 

반응형

+ Recent posts