운영체제_프로세스 기술과 제어_운영체제의 수행

미뇽·2024년 4월 10일
0

운영체제(강의)

목록 보기
10/43
post-thumbnail

운영체제의 수행

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

비프로세스 커널(Nonprocess Kernel)

전통적인 방법으로 모든 프로세스의 외부에서 운영체제 커널을 수행시키는 것이다.
운영체제는 자신이 사용할 메모리 영역도 갖고, 프로시저 호출과 복귀를 위한 자신의 시스템 스택도 가지며, 분리된 개체로서 수행되고 특권 모드에서 동작한다.

사용자 프로세스 내에서 수행(Execution within User Processes)

작은 컴퓨터(PC, 워크스테이션) 상에서 구동되는 운영체제는 보통 사용자 프로세스 문맥에서 모든 운영체제 소프트웨어를 수행시킨다.

이런 식으로 운영체제는 n개의 프로세스 이미지를 관리한다. 이러한 프로세스 이미지의 구조를 자세히 살펴보면

이런 식으로 프로세스가 커널 모드에 있는 동안에 수행한 호출과 복귀를 관리하기 위해 다른 영역과 분리된 커널 스택이 사용된다.

공유주소 공간에는 운영체제 코드와 데이터가 들어가 있어 모든 사용자 프로세스에 의해 공유된다.

인터럽트/트랩/수퍼바이저 호출 등이 발생되면 처리기는 커널 모드로 전이하여 운영체제가 제어를 가지게 되고, 사용자 프로그램으로부터 OS로 제어를 넘겨주기 위해 모드 문맥이 저장되고, 운영체제 루틴으로 모드 전환이 이루어진다. 하지만 수행은 현재 사용자 프로세스 내에서 프로세스 교환 없이 같은 프로세스 내에서 모드 전환만이 발생한다.
현재 프로세스 내에 있는 인터럽트된 프로그램의 수행을 재개할 수 있다는 점에서 이점을 가진다.

하지만 이전에 수행되던 프로그램으로 제어가 복귀되지 않고 프로세스를 교환하기로 했다면 제어가 프로세스 교환 루틴으로 넘어간다. 이 과정에서 현재 프로세스는 비수행 상태로, 다른 프로세스는 수행 프로세스로 선택된다. 이 때 수행되는 작업은 모든 프로세스의 외부에서 일어나고 있다고 생각하면 된다.

이러한 운영체제에 대한 관점이 주목받는 이유는 사용자 코드가 아닌 공유 가능한 운영체제 코드에서 프로세스가 자신의 상태 정보를 저장하고 제어를 넘겨주는 과정이 이루어지기 때문이다.
사용자 프로세스 환경에서 운영체제 루틴들이 수행되고 있어도 사용자/커널 모드로 나누어져 있기 때문에 사용자는 운영체제 루틴에 관여할 수 없다는 사실이 곧 프로세스와 프로그램이 일대일 관계가 아니라는 것을 상기시켜 준다.

프로세스 기반 운영체제(Process-Based Operating System)

운영체제를 시스템 프로세스들의 집합으로 구현한 형태이다. 커널의 소프트웨어 부분은 커널 모드에서 수행되지만 커널의 주요 기능들은 위에 보이는 것처럼 여러 개의 분리된 프로세스로 구성되며, 여기서도 각 프로세스 밖에서 수행되는 작은 크기의 프로세스 교환 코드가 있을 수 있다.

이점

  • 운영체제의 모듈화
    - 각 모듈간에 최소의 명료한 인터페이스를 가져 프로그램 설계 원칙에 충실할 수 있음
  • 운영체제의 기능 중 그리 중요치 않은 것들은 개별적인 프로세스로 쉽게 구현 가능
  • 다중 처리기나 멀티 컴퓨터 환경에서 유용
    - 운영체제에 의해 제공되는 서비스를 지정된 처리기에서 수햄함으로써 성능 향상
profile
문이과 통합형 인재(人災)

0개의 댓글