프로그램 실행 (memory load)
- 프로그램 실행시키면 각 파일 시스템으로부터 해당 파일마다 가상 메모리를 생성. 사용하면 그때서야 가상 메모리에서 물리 메모리로 올리고 그렇지 않은 부분은 디스크에 내려놔(swap area).
- 이때 스왑 영역은 전원 나가면 의미 없는 정보가 되어버림. 메모리 연장 공간이며 전원 꺼지면 지워짐.
- 주소 변환(가상 메모리 → 물리 메모리) ⇒ 가상 메모리에서 배움.
- 커널 역시 code/data/stack으로 구성되어 있음.
커널 주소 공간 내용
code
- 커널코드 - 시스템콜, 인터럽트 처리 코드 / 자원 관리 코드 / 편리 서비스 제공 코드 등
data
- CPU/메모리/디스크를 관리하기 위한 자료구조가 담겨 있음. + 각 프로세스마다 운영체제가 관리하는 자료구조(PCB - process controller block)가 필요. 얘네가 관리.
stack
- 운영체제 코드: 사용자 요청에 따라 불러서 쓴다. 사용자 프로그램들이 시스템 콜할 때 각 사용자 프로그램마다 불러오는 걸 구분하기 위해 각 프로세스마다 구별해서 스택을 만들어.
사용자 프로그램이 사용하는 함수
-
함수
- 사용자 정의 함수 - 자기 프로그램에서 정의한 함수
- 라이브러리 함수 - 자기 프로그램에서 정의하지 않고 갖다 쓴 함수. 자기 프로그램 실행 파일에 포함되어 있음.
- 커널 함수: 운영체제 프로그램에서 정의한 함수. 커널 코드에 들어있음. 이걸 호출하는 게 시스템 콜.
-
프로그램 실행
