1의 함수 수행 -> 2라는 다른 함수 호출 -> 호출된 함수의 수행 완료 -> 다시 원래 호출했던 함수의 위치로 돌아가 프로그램을 계속 실행
-
프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다.
- 이때 프로그램의 주소 영역은 크게
코드code ,데이터date ,스택stack 영역으로 구분된다.
- 이때 프로그램의 주소 영역은 크게
-
코드영역은 작성한 프로그램의 함수드의 코드가 CPU에서 수행할 수 있는기계어 명령machine instruction 형태로 변환되어 저장되는 부분. -
데이터영역은전역 변수global variable 등 프로그램이 사용하는 데이터를 저장하는 부분. -
스택영역은 함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데에 사용되는 공간.
프로그램 카운터 Program Counter:PC 이란 CPU가 수행해야할 메모리 주소를 담고있는 레지스터이다.
-
CPU는 매번 프로그럄 카운터가 가리키는 메모리 위치의 명령을 처리하게 된다.
-
일반적으로 조건문이나 반복문, 함수호출 등에 의한 주소 이동이 없는 이상 프로그램 카운터는 항상 바로 다음 명령을 가리키게 되어 코드의 순차적인 수행이 이루어진다.
-
CPU가 수행하는 명령에는 일반명령과 특권명령이 있다.
-
일반명령은 메모리에서 자료를 읽어와 CPU에서 계산하고 결과를 메모리에 쓰는 일련의 명령이다. -
특권명령은 보안이 필요한 명령으로 입출력 장치, 타이머 등 각종 장치에 접근하는 명령이다. -
CPU는
프로그램 카운터가 가리키는 메모리 위치의 명령만 계속 수행하기 때문에 주변장치의 상태를 지속적으로 파악할 수 없다. -
따라서 주변장치는 CPU의 도움이 필요한 경우 인터럽트를 사용해 CPU에게 서비스를 요청한다.
프로그램이 실행 _program execution_ 되고 있다 는 것은 컴퓨터 시스템 차원에서 볼 때 크게 두 가지 중요한 의미를 가진다.
- 그 첫번째는 디스크에 존재하던 실행파일이 메모리에 적재된다는 의미.
- 프로그럄이 CPU를 할당받고 명령을 수행하고 있는 상태라는 의미.
-
각각의 프로그램마다 이러한 주소 공간을 별도로 가지며, 프로그램마다 독자적으로 존재하는 이와 같은 주소 공간을 우리는
가상메모리vitual memory 또는논리적 메모리logical memory 라고 부른다.- 이는 실제
물리적메모리의 주소와 독립적으로 각 프로그램마다독자적인 주소 공간을 가지기 떄문에 지칭하는 용어이다.
- 이는 실제
-
커널의 데이터 역역에는 각종 자원을 관리하기 위한 자료구조가 저장된다.
-
CPU나 메모리와 같은 하드웨어 자원을 관리하기 위한 자료구조뿐 아니라 현재 수행 중인 프로그램을
프로세스process 라고 부른다 -
커널의 데이터 역역 내에는 각 프로세스의 상태, CPU 사용 정보, 메모리 사용 정보 등을 유지하기 위한 자료구조인 PCB를 두고 있다.
즉 커널의 데이터 영역에는 하드웨어와 소프트웨어를 포함하는 시스템 내의 모든 자원을 관리하기 위한 자료구조를 각각 유지하고 있다.



