본문은 Operating System Concepts Edition 8th를 기반으로 작성했습니다. 시스템 구조에 대한 기본적인 지식의 공부를 목적으로 작성하였으니, 잘못된 부분이 있다면 코멘트로 말씀해주시면 감사하겠습니다.

운영체제의 구조

운영체제는 프로그램이 실행될 환경을 제공한다. 운영체제는 다양한 발전 방향에 따라 구성되었기 때문에 내부 구조가 매우 다양하다. 그러나 운영체제들 사이에서 많은 공통점들이 존재하고 그 공통점을 이 절에서 설명한다.

			클러스터 시스템의 일반적인 구조

운영체제의 가장 중요한 측면은 다중 프로그램을 할 수 있는 능력이다. 일반적으로 단일 프로그램은 CPU 또는 입출력장치를 항상 바쁘게 유지할 수 없다. 단일 사용자는 종종 여러 개의 프로그램을 실행시킨다. 다중 프로그래밍은 CPU가 항상 하나의 작업을 실행할 수 있게 구성함으로써 CPU 이용률을 증가시킨다.

기본 아이디어는 다음과 같다. 운영체제는 한 번에 여러 작업을 메모리에 적재한다. 주 메모리는 모든 작업을 저장하기에 너무 작기 때문에 작업들은 처음에는 디스크 상에 존재하는 작업 풀(pool) 내에 유지된다. 이 풀은 주 메모리 할당을 기다리며 디스크에 존재하는 모든 프로세스들로 구성된다.

			다중 프로그래밍 시스템을 위한 메모리 배치

메모리에 존재하는 작업 집합은 작업 풀 내의 유지되는 작업들의 일부이다. 운영체제는 메모리의 작업 중에 하나를 선택해 실행한다. 결국, 이 작업은 입출력의 종료를 기다리는 것과 같이 어떤 일을 기다려야 된다. 비 다중 프로그래밍 시스템에서는 CPU가 쉬어야 한다. 다중 프로그래밍 시스템에서는 운영 체제가 단순히 다른 작업으로 전환해 그 작업을 실행한다. 이 나중의 작업이 어떤 일을 기다려야 한다면, CPU는 또 다른 작업으로 전환한다.

결국, 실행될 작업이 하나라도 존재하는 한 CPU는 쉬지 않는다.

이 아이디어는 다른 일상생활에서도 흔히 볼 수 있다. 예를 들어 변호사는 한 번에 오직 한 의뢰인만 상대하는 것이 아니다. 한 사건이 재판을 기다리거나 문서 작성을 기다리는 동안, 변호사는 또 다른 사건을 처리할 수 있다. 만일 변호사가 충분히 많은 의뢰인을 확보하고 있다면 변호사가 일이 없어서 쉬는 일은 발생하지 않는다.

다중 프로그래밍 시스템은 여러 가지 시스템 자원(예를 들어, CPU, 메모리, 주변장치)을 효율적으로 이용할 수 있는 환경을 제공하지만, 사용자가 컴퓨터 시스템과 상호작용할 수는 없다.

시분할(멀티태스킹)은 다중 프로그래밍의 논리적 확장이다. 시분할 시스템에서는 CPU가 다수의 작업들로 서로 교대로 실행하지만, 매우 빈번하게 교대가 일어나기 때문에 프로그램이 실행되는 동안에 사용자들은 각자 자기 프로그램과 상호작용 할 수 있다.

시분할 시스템은 대화식(interactive) 혹은, 실제 조작 가능한(hands-on) 컴퓨터 시스템을 필요로 하는데 이 시스템은 사용자와 시스템 간에 직접적인 통신을 제공한다. 사용자는, 키보드나 마우스 같은 입력 장치를 사용하여 운영체제나 프로그램에 직접 명령하고 출력 장치의 즉각적인 응답을 기다린다. 따라서 응답 시간이 짧아야 하며, 통상 1초 정도 이내이다.

시분할 운영체제는 동시에 많은 사용자가 컴퓨터를 공유할 수 있게 한다. 시분할 시스템에서 각각의 동작이나 명령은 대체로 짧은 경향이 있기 때문에 각 사용자는 단지 짧은 시간 동안만 CPU 시간이 필요하다. 시스템이 한 사용자에서 다음 사용자로 빠르게 전환되기 때문에, 각 사용자는 자신이 전체 컴퓨터를 전용하는 것처럼 느끼지만, 실제로는 다수의 사용자가 하나의 컴퓨터를 공유한다.

시분할 운영체제는 각 사용자에게 시분할되는 컴퓨터의 작은 부분을 제공하기 위해 CPU 스케줄링다중 프로그래밍을 사용한다. 각 사용자는 메모리에 최소한 하나의 독립된 프로그램을 가지고 있다. 메모리에 적재되어 있고, 실행되고 있는 프로그램을 일반적으로 프로세스라고 한다. 프로세스가 실행될 때는 전형적으로 자신이 종료되거나 입출력을 실행할 필요가 있을 때까지 아주 짧은 시간 동안만 실행된다.

입출력은 대화식일 수 있다. 즉, 출력이 사용자를 위해 디스플레이 되고, 입력은 사용자 키보드, 마우스 또는 다른 장치로부터 들어온다. 이러한 대화식 입출력은 전형적으로 사람의 속도로 실행되므로, 완료될 때까지 상당히 긴 시간이 걸릴 수 있다. 예를 들면, 입력은 사용자의 타이핑 속도에 제한을 받으며, 사람에게는 1초에 7문자가 빠른 편이지만, 컴퓨터에게는 아주 느린 것이다. 이러한 대화식 입력이 진행되는 동안 CPU를 쉬게 하지 않고, 운영체제는 CPU를 다른 사용자의 프로그램으로 신속하게 전환한다.

profile
https://github.com/VVSOGI

0개의 댓글