프로그램 실행
- 프로그램은 File System에 실행 파일 형태로 저장되어있다가 실행시 Physical memory에 load되어 프로세스가 됨
- Physical memory에는 kernel이 상주하고 있음
- 하나의 프로세스 데이터는 분산되어 위치한다. 당장 필요한 데이터들은 physical memory에, 필요하지 않은 데이터는 swap area에, code는 File system에 분산 되어있다.
virtual memory
- 실행 파일은 Physical memory에 로드된 실제 주소와 달리 각각 가상의 Virtual memory address를 갖는다.
- 프로세스가 실행 중 데이터 주소에 접근할 때 프로세스가 알고 있는 virtual memory 주소와 실제 위치한 physical memory 주소가 다르기 때문에 Address transiation 이라는 주소 변환이 필요하다.
virtual memory 메모리 구성
- code: 실행 파일의 기계어가 저장된 곳
- data: 전역 변수, 정적 변수, 프로세스가 종료될 때까지 사라지지 않는 데이터가 저장된 곳
- stack: 함수 호출 정보, 실행 맥락을 저장하는 곳
커널의 주소 공간
- 커널도 code, data, stack으로 구성되어 있다.
- code: 커널 코드
- 시스템 콜, 인터럽트 처리 코드
- 자원 관리를 위한 코드
- 편리한 서비스 제공을 위한 코드
- data
- 모든 하드웨어를 관리하는 자료 구조 (CPU, mem, disk)
- 모든 프로세스를 관리하는 자료 구조 (각 프로세스의 PCB)
- stack
- 각 프로세스의 커널 스택 (각 프로세스가 커널을 호출했을 때의 맥락을 저장)
댓글