- System Structure 위에서 Program 을 실행
저장장치 계층 구조
- 위로 갈 수록 비싸고 빠르기 때문에 용량이 적다.
- Secondary 에서 자주 쓰는 것을 매번 느린 장치에서 읽어오지 않고 빠르게 쓰기 위해 휘발성 메모리에 올려놓고 쓴다.
프로그램 실행 시 메모리 로드
- 큰 구조 : Disk 에 있는 실행 파일 (exe) 를 실행하면, 물리적인 메모리에 올라가서 프로세스가 된다.
- 물리적인 메모리에 올라가기 전에 가상 메모리라는 단계를 거침.
- 가상 메모리 (Virtual Memory) : 각 프로그램의 독자적인 메모리 공간 (실제 메모리에 올라간 공간이 아님)
- 실행하면 가상 메모리에 stack, data, code 영역을 가지게 되고,
- 이 가상 메모리 공간을 HW 를 이용해서 실제 메모리 공간으로 당장 필요한 부분만 올리고
- 불필요한 부분은 HDD 의 Swap Area 에 내린다.
커널 주소 공간의 내용
- 그럼 커널 주소의 가상 메모리 공간에는 무슨 내용이 들어 있을까??
- 코드 영역
- 시스템 콜, 인터럽트 처리 루틴
- 자원 관리
- 편리한 서비스 제공을 위한 코드
- 데이터 영역
- PCB : 프로그램을 관리하기 위한 자료구조들
- HW 를 관리하기 위한 자료구조들
- 스택 영역
- 함수 호출을 위한 영역
- 하지만, 여러 프로세스가 시스템 콜을 통해 OS 커널의 코드를 실행할 수 있으므로 프로세스 별로 스택 공간을 따로 둔다.
프로그램이 사용하는 함수 비교
- 프로세스의 코드 영역
- 커널의 코드 영역
- 커널 함수
- OS 프로그램의 함수로 시스템 콜을 통해서 호출한다.
출처 / 참고
반효경 교수님의 2014 운영체제 2. System Structure & Program Execution 강의를 듣고 포스팅하고,
공룡책을 읽고 추가 정리합니다.
사진 출처는 강의 자료.