박지민-4장-프로그램의 구조와 실행-10월2일
프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다.
프로그램의 주소 영역은 크게 세가지 영역으로 구분된다.
- 코드(code)
- 데이터(data)
- 스택(stack)
우리가 작성한 프로그램 함수들의 코드가 CPU에서 수행할 수 있는 기계어 명령(machine instruction) 형태로 변환되어 저장되는 부분
전역 벼수(global variable) 등 프로그램이 사용하는 데이터를 저장하는 부분
함수가 호출될 때 호출된 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장하는 데에 사용되는 공간
인터럽트 때문에 CPU를 빼앗긴 위치는 운영체제가 관리하는 프로세스 제어블록에 저장된다. 프로세스 제어블록에는 인터럽트가 발생한 시점에서 그 프로그램의 어느 부분까지 수행했는지를 저장한다.
- 빠른 속도로 처리하는 계산 능력 O
- 스스로 결정하는 능력 X
- 매 시점 메모리의 특정 주소에 존재하는 명령을 하나씩 읽어와 그대로 실행
CPU가 수행해야할 메모리 주소를 담고 있는 레지스터
CPU는 매번 프로그램 카운터가 가리키는 메모리 위치의 명령을 처리하게 된다.
컴퓨터 시스템을 구성하는 하드웨어로는 두 가지가 있다.
- CPU
- 메모리
각 입출력 장치와 이들 장치를 전담하는 작은 CPU(출력 컨트롤러)와 메모리(로컬버퍼)
프로그램이 실행(program execution)되고 있다 의 두가지 중요한 의미
- 디스크에 존재하던 실행 파일이 메모리에 적재된다는 의미
- 프로그램이 CPU를 할당 받고 명령(instruction)을 수행하고 있는 상태라는 의미
프로세스의 주소 공간은 앞서 설명한대로 코드, 데이터, 스택 등으로 구성되는데 각각의 프로그램마다 이러한 주소 공간을 별도로 가지는데, 프로그램마다 독자적으로 존재하는 이와 같은 주소 공간
운영체제도 하나의 프로그램이므로 운영체제 커널 역시 코드, 데이터, 스택의 주소 공간 구성을 가지고 있다.
- 아랫단의 하드웨어 자원을 효율적으로 관리하는 것
- 윗단의 응용프로그램 및 사용자에게 편리한 서비스를 제공하는 것