운영체제의 수행
- 운영체제가 프로그램의 집합이라는 점과 처리기에 의존한다는 점 때문에 하나의 프로세스로 인식하고 이러한 문제에 대해 다양한 접근 방법이 제안되었다.
비프로세스 커널(Nonprocess Kernel)

- 전통적인 방법으로 모든 프로세스의 외부에서 운영체제 커널을 수행
- 운영체제는 자신이 사용할 메모리 영역도 갖고, 프로시저 호출과 복귀를 위한 자신의 시스템 스택도 가지며, 분리된 개체로서 수행되고 특권 모드에서 동작
사용자 프로세스 내에서 수행(Execution within User Processes)
-
작은 컴퓨터(PC, 워크스테이션) 상에서 구동되는 운영체제는 보통 사용자 프로세스 문맥에서 모든 운영체제 소프트웨어를 수행

-
이런 식으로 운영체제는 n개의 프로세스 이미지를 관리
-
이러한 프로세스 이미지의 구조를 자세히 살펴보면
-
이런 식으로 프로세스가 커널 모드에 있는 동안에 수행한 호출과 복귀를 관리하기 위해 다른 영역과 분리된 커널 스택이 사용됨
-
공유주소 공간에는 운영체제 코드와 데이터가 들어가 있어 모든 사용자 프로세스에 의해 공유된다.
-
인터럽트/트랩/수퍼바이저 호출 등이 발생되면 처리기는 커널 모드로 전이하여 운영체제가 제어를 가지게 되고, 사용자 프로그램으로부터 OS로 제어를 넘겨주기 위해 모드 문맥이 저장되고, 운영체제 루틴으로 모드 전환이 이루어짐
- 하지만 수행은 현재 사용자 프로세스 내에서 프로세스 교환 없이 같은 프로세스 내에서 모드 전환만이 발생
- 현재 프로세스 내에 있는 인터럽트된 프로그램의 수행을 재개할 수 있다는 점에서 이점을 가짐
-
하지만 이전에 수행되던 프로그램으로 제어가 복귀되지 않고 프로세스를 교환하기로 했다면 제어가 프로세스 교환 루틴으로 넘어감
-
이 과정에서 현재 프로세스는 비수행 상태로, 다른 프로세스는 수행 프로세스로 선택됨
-
이 때 수행되는 작업은 모든 프로세스의 외부에서 일어남
-
이러한 운영체제에 대한 관점이 주목받는 이유는 사용자 코드가 아닌 공유 가능한 운영체제 코드에서 프로세스가 자신의 상태 정보를 저장하고 제어를 넘겨주는 과정이 이루어지기 때문이다.
-
사용자 프로세스 환경에서 운영체제 루틴들이 수행되고 있어도 사용자/커널 모드로 나누어져 있기 때문에 사용자는 운영체제 루틴에 관여할 수 없다는 사실이 곧 프로세스와 프로그램이 일대일 관계가 아니라는 것을 상기시킴
프로세스 기반 운영체제(Process-Based Operating System)

- 운영체제를 시스템 프로세스들의 집합으로 구현한 형태이다.
- 커널의 소프트웨어 부분은 커널 모드에서 수행되지만 커널의 주요 기능들은 위에 보이는 것처럼 여러 개의 분리된 프로세스로 구성되며, 여기서도 각 프로세스 밖에서 수행되는 작은 크기의 프로세스 교환 코드가 있을 수 있음
- 이점
- 운영체제의 모듈화
- 각 모듈간에 최소의 명료한 인터페이스를 가져 프로그램 설계 원칙에 충실할 수 있음
- 운영체제의 기능 중 그리 중요치 않은 것들은 개별적인 프로세스로 쉽게 구현 가능
- 다중 처리기나 멀티 컴퓨터 환경에서 유용
- 운영체제에 의해 제공되는 서비스를 지정된 처리기에서 수햄함으로써 성능 향상
- 운영체제의 모듈화