저장장치 계층 구조
메모리가 디스크보다 빠르기 때문에 무조건 다 올려놓으면 좋겠지만, 그렇지 못하기 때문에 필요한 부분만 메모리에 올려놓는다. 필요한 부분을 가져올 때, 빈번하게 사용될 부분을 가져오면 속도가 빠른 메모리에서 바로 불러올 수 있어서 전체적인 성능이 향상된다.
이것을 캐싱(Caching) 이라 한다.
프로그램의 실행
System Structure 위에서 Program을 실행
메모리 로드 (Memory Load)
프로그램은 ‘실행파일’ 형태로 하드 디스크의 파일 시스템에 저장되어 있다. 실행파일을 실행시키면 프로그램이 메모리상에 올라가서 ‘프로세스’가 되는데, 이때 메모리에 즉시 올라가는게 아니라 가상 메모리(Virtual Memory) 단계를 거친다.
가상 메모리 단계란, 프로그램을 실행하는 시점에 해당 프로그램만의 독자적인 Address space(프로그램만의 독자적인 메모리 주소 공간)이를 생성하는 것을 말한다. 이 Address space는 stack, data, code 영역으로 구분된다.
- Stack : 함수 호출 및 리턴 시 사용하는 영역
- Data : 변수, 전역변수, 자료구조 등 사용하는 데이터를 담고 있는 영역
- Code : 프로그램 기계어 코드를 담고 있는 영역
→ 사용자 프로그램은 실행시키면 만들어진 주소공간이 생기고 종료하면 공간이 사라진다.
Address space를 물리적 메모리에 올려서 실행하는데, 전체를 물리적 메모리에 올리면 낭비이므로 당장 필요한 부분만 올린다. 또한 커널(운영체제) 영역이 항상 메모리상에 상주하는 것과는 달리, Address space는 프로그램 실행이 끝나면 메모리상에서 지워진다. 당장 필요하지 않은 부분은 디스크의 Swap area에 보관해 둔다.
- Swap Area는 메모리의 연장선상에 위치하는 디스크 공간으로 메모리 용량을 보조하는 역할을 한다.
Address transition은 가상 메모리상의 주소를 주 메모리상의 주소로 변환하는 것을 말하며,
하드디스크의 특정 장치가 이 역할을 담당하고 있다.
커널(OS) 주소 공간의 내용
커널 역시 하나의 프로그램이기 때문에 Address space를 가지고 있다.
코드 영역
자원을 효율적으로 관리하고 사용자에게 편리한 인터페이스를 제공하기 위한 코드가 존재한다. 인터럽트가 들어왔을 때 CPU 제어권이 운영체제에게 주어지기 때문에 각각의 인터럽트를 어떻게 처리해야 하는지를 명시해놓은 코드가 있다.
데이터 영역
운영체제는 CPU, memory, disk 등의 하드웨어들을 관리하고 통제하기 위한 자료구조들이 들어있다. 또한 각각의 프로그램을 관리하기 위한 자료구조(Process Control Block) 역시 포함한다.
스택 영역
운영체제도 함수 구조로 코드가 작성되어 있기 때문에 stack이 존재한다. 운영체제의 커널코드는 여러 사용자 프로그램의 요청에 따라 실행되기 때문에 사용자 프로그램마다 별도의 커널 스택을 가지고 있다.
사용자 프로그램이 사용하는 함수
함수(function)
- 사용자 정의 함수 : 자신의 프로그램에서 정의한 함수 (내가 직접 작성한 함수)
- 라이브러리 함수 : 누군가가 만들어 놓은 함수이지만 자신의 프로그램의 실행 파일에 포함되어 있음
- 커널 함수 : OS 프로그램의 함수로 시스템 콜을 통해서 호출
사용자 정의 함수든 라이브러리 함수든 컴파일해서 실행파일을 만들게 되면 내 프로그램 안에 들어있는 함수이기 때문에 언제든 자유롭게 실행할 수 있다. 반면 커널 함수의 경우 내 프로그램의 함수가 아니라 커널 코드에 포함된 함수이기 때문에 시스템 콜을 통해서 CPU 제어권을 넘겨야만 실행이 가능하다.
프로그램의 실행
하나의 프로그램이 실행되는 동안 운영체제는 user mode ↔ kernel mode 전환을 반복한다.
프로그램이 CPU 제어권을 가지고 있으면 user mode라고 한다. 이때 syetem call을 하게 되면 CPU 제어권이 커널로 넘어가면서 kernel mode로 전환하게 되고 커널의 주소 공간에 있는 커널 함수를 실행한다.
KOCW 반효경 교수님의 운영체제 강의 내용 정리 (kocw.net)
'CS > OS' 카테고리의 다른 글
[OS] 운영체제 02 : System Structure (0) | 2022.05.22 |
---|---|
[OS] 운영체제 01 : Introduction to Operating Systems (0) | 2022.05.22 |
댓글