본문 바로가기
컴퓨터 COMPUTER/Linux 리눅스

8. [Execution of the Operating System] : OS 가 움직이는 방법

by 매실이 maesiri 2019. 1. 30.

OS 가 어떻게 생겨먹었는지, 어떻게 움직이는지를 알아보자. 좀 추상적이긴 하지만 OS 설계에 대한 3가지 대표적인 접근법이 있다.

① Execution within User Processes

: 유저프로세스의 일부로 kernel 이 위치하고 있다는 접근. OS가 Program Image와 직접적으로 연결되어 있다는 접근법이다. 이 설계방법에서는 각 프로세스에서 인터럽트, 시스템 콜 같은게 일어났을 때 process switching 을 완전히 안해도 mode switch만으로 기능을 수행할 수 있다는 장점이 있다.



위 그림처럼, 프로세스의 일부처럼 OS 가 붙어있고 오직 프로세스 스위칭을 할 때에만 큰 오버헤드를 가지게 된다. 하지만 가용한 유저메모리가 줄어든다는 단점이 있다. 지금 공부하고 있는 리눅스가 이러한 설계법을 가지고 있다. Linux Process Image 안은 User space와 Kernel space로 나뉘어 구성되어있다.

Kernel Space (3GB에서 4GB 되는 주소까지-1GB) 안에는 프로세스마다 독자적으로 가지는 자료구조와 물리메모리, Kernel 이 들어있고, User space (0GB에서 3GB되는 주소까지) 안에는 stack, library, heap 등 runtime stack 이 들어있다.

② Nonprocess Kernel

: Kernel을 프로세스와 완전히 분리되어있는 독자적인 존재로 보는 접근법이다. 유저 프로세스들이 OS 위에 붙어 있어, 위 그림에서 노란 부분이 모두 회색 부분과 통일되어있는 모습과 같다고 보면 된다. 따라서 유저프로세스를 OS의 subroutine 처럼 보는 경향이 있다.

③ Process-based OS

: 프로세스와 커널의 주요 기능을 분리된 객체로 보지만, 커널의 주요기능과 process switching function 또한 분리시켜서 보는 접근법이다. 아래 그림처럼 프로세스와 OS 기능이 경쟁해야하는 구조이다.






개인 공부 정리용으로 작성한 글입니다. 틀린 부분이 있을 수 있으니 참고용으로만 사용해주세요. 틀린 부분은 댓글로 알려주세요.♥


반응형

댓글