티스토리 뷰

프로그램의 실행

프로그램의 실행은 컴퓨터 시스템 차원에서 두가지의 의미를 가진다.

  • 디스크에 존재하던 실행 파일이 메모리에 적재된다.

  • 프로그램이 CPU를 할당 받고 기계 명령을 수행하고 있는 상태이다.

실행 파일이 메모리에 적재될 때, 실행 파일 일부분만 메모리에 올라가고 나머지는 디스크의 특정 영역에 내려가 있는다.

이러한 특정 영역을 스왑 영역 이라고 한다.

각 프로그램마다 독자적으로 존재하는 코드, 데이터, 스택 주소공간을 가상 메모리(virtual memory) 혹은 논리적 메모리(logical memory)라고 부른다.

실제 물리적 메모리의 주소와 독립적으로 각 프로그램마다 독자적인 주소 공간을 가지기 때문이다.

운영체제도 하나의 프로그램으로서 운영체제 커널 또한 코드, 데이터, 스택의 주소 공간 구성을 갖고 있다.

코드 영역에는 CPU, 메모리 등의 자원을 관리하기 위한 부분과 사용자에게 편리한 인터페이스를 제공하기 위한 부분이 주를 이룬고, 그 외에 시스템 콜 및 인터럽트를 처리하기 위한 부분을 포함한다.

데이터 영역에는 각종 자원을 관리하기 위한 자료구조가 저장된다. CPU나 메모리와 같은 하드웨어 자원을 관리하기 위한 자료구조뿐 아니라 현재 수행중인 프로그램을 관리하기 위한 자료구조를 포함한다. 또한 프로세스의 상태, CPU 사용정보, 메모리 사용 정보등을 유지하기 위한 자료구조인 PCB를 두고있다.

스택 영역에는 프로그램의 스택 영역과 마찬가지로 함수 호출시의 복귀 주소를 저장하기 위한 용도로 사용된다. 커널의 스택은 일반 프로그램 스택과 달리 현재 수행중인 프로세스마다 별도의 스택을 두어 관리한다. 프로세스가 특권 명령을 수행하려고 커널에서 정의된 시스템 콜을 호출하고 시스템 콜 내부에서 다른 함수를 호출하는 경우 복귀 주소는 커널 내의 주소가 되어서 사용자 프로그램의 스택과는 별도의 저장공간이 필요하기 때문이다. 또한 커널은 일종의 공유 코드로서 모든 사용자 프로그램이 시스템 콜을 통해 함수를 접근할 수 있으므로 일관성 유지를 위해 각 프로세스마다 커널 내에 별도의 스택을 둔다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함