OS 개요
1. OS 개요
- OS는 컴퓨터 하드웨어에 직접 설치되어 (1)컴퓨터 시스템의 자원을 효율적으로 관리하고 (이는 운영체제의 가장 핵심적 기능으로, OS를 다른 말로 ‘자원 관리자’라 칭할 수도 있다) (2)사용자, 다른 소프트웨어, 하드웨어를 연결하여, 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있게 하는 소프트웨어 계층을 말한다.
- OS가 관리하는 자원은 메모리, CPU 등 하드웨어 자원과 프로세스, 파일 등 소프트웨어 자원을 모두 포함한다. 예를 들어 컴퓨터에 CPU가 하나만 있는데 여러 소프트웨어가 동시에 실행되었다고 할 때, OS는 사용자가 최대한 불편을 느끼지 않도록 이들 사이 연산처리의 우선순위 및 자원 배분을 적절히 조정하는 역할을 한다.
- OS의 구조와 기능은 컴퓨터 시스템 중 특히 CPU, 메모리, I/O 장치 사이의 속도차이, 한정된 자원의 배분 문제, 컴퓨터 시스템 내 프로세스, 스레드 등 여러 주체가 소수 자원을 두고 경쟁적으로 접근할 때의 동기화 등을 효과적으로 다루는 데 집중한다. 컴퓨터의 사양이 비약적으로 발전한 현재에도 각 장치의 처리 속도가 차이 난다는 사실은 여전해 이러한 상황에서의 자원의 효율적 배분은 여전히 중요한 문제다. (특히 읽고 써야 할 데이터의 양이 비약적으로 증가했는데 이를 저장장치에서 읽고 쓰는 시간은 과거보다 빨라졌다 해도 여전히 CPU에 비하면 매우 느리다. 빅데이터와 함께 주목받게 된 분산 컴퓨팅 같은 분야에서도 이러한 처리는 중요한 문제다.) OS의 구조와 기능에 대한 지식이 충분하다면 이러한 상황을 효과적으로 처리하는 데 있어 통찰을 얻을 수 있다. 또, 이러한 통찰은 컴퓨터 시스템뿐 아니라 한정된 자원의 배분에 관한 문제라면 어떤 분야에든 적용할 수 있다.
2. OS의 분류
1) 동시 작업 처리 가부에 따라(single-multi)
2) 동시 사용 사용자수에 따라(single-multi)
3) 요청된 작업들의 처리 방식에 따라
- batch processing: 일정량의 작업 요청이 모일 때까지 기다렸다가 한꺼번에 처리하는 방식. 요즘에는 볼 수 없는 방식.
- real-time: 요청된 작업 결과를 데드라인 내에 얻어냄이 보장돼야 하는 실시간 시스템을 위한 방식. 미사일 발사, 공장 제어 같은 특수 분야에서 사용된다.
- time-sharing: 수개의 작업 요청이 동시에 있을 때, 시간을 아주 짧은 시간 단위로 나누어 단위시간마다 각 요청을 돌아가면서 처리하는 방식. (CPU 스케줄링 방식 중 Round Robin 방식이 이와 같은 방식으로 프로세스의 작업 요청을 처리하는 방식이다.) 요청된 작업 순서에만 의존하여 작업을 처리하면 어떤 작업은 요청된 시간보다 훨씬 늦은 시간에 작업 처리가 끝나는 경우가 있을 수 있는데, time-sharing 방식은 그에 비할 때 요청에서 결과를 얻는 데까지 걸리는 시간이 평균적으로 더 짧아진다는 이점이 있다. 또, 작업을 요청한 사용자가 서로 다른 경우, 각 사용자는 다른 사용자들이 요청한 작업이 모두 끝날 때까지 기다리지 않더라도 자신의 요청에 대한 결과를 얻을 수 있으므로 ‘interactive하다’는 인상을 느낄 수 있다. 현재 대부분의 용도에서 사용되는 OS는 모두 time-sharing 방식으로 작업 요청을 처리한다.
3. OS의 사례 - UNIX
- 높은 이식성, 최소한의 커널 구조(메모리에 올라가는 커널의 크기를 최소화하여 커널은 핵심적인 기능만 수행)
4. OS의 구조
1) 커널(협의의 OS)
- OS의 핵심 기능인 프로세스, 메모리, 디스크 및 기타 I/O 장치 같은 자원의 관리 기능이 있는 소프트웨어로서, 부팅 후 메모리에 항상 상주한다. 보통 OS라 하면 커널뿐 아니라 인터페이스, 일반 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있게 하는 모든 부가적 시스템 유틸리티 등을 포함해 총괄하여 지칭하지만(광의의 OS) OS 과목에서 다루는 OS는 보통 커널만을 지칭한다.
- 메모리 연산속도는 CPU보다 수백 배 느리고, 디스크 같은 I/O 장치의 연산속도는 메모리보다 수십만 배 느리다. 이 연산속도 차이를 효율적으로 활용하는 방향으로 OS는 발전해왔다. 과거에는 커널이 여러 기능을 수행함에 있어 독립된 별도 모듈을 두지 않고 커널 스스로 모든 작업을 처리했지만(단일형 구조) 이 경우 모듈 하나의 결함이 전체 시스템의 문제를 일으키는 등의 단점이 있어 현재는 비슷한 기능을 하는 모듈을 하나로 묶어 계층화 하는 식으로 각 기능을 수행하도록 하고 있다(계층형 구조).
-
CPU는 PC 레지스터의 데이터를 읽어와 처리를 하고 그 결과를 AC 레지스터로 돌려보내며, 각 장치의 처리 속도는 매우 빠르지만 각 장치에 담길 수 있는 데이터의 크기는 매우 적다. 이러한 특성 때문에 보통 컴퓨터는 이보다 속도는 느리지만 담길 수 있는 데이터의 크기는 비교적 큰 메모리를 두어 메모리에서 데이터를 CPU로 보내고 그 처리 결과를 CPU에서 다시 메모리로 받아오는 구조를 갖고 있다. 이러한 관리는 커널의 프로세서 관리 모듈이 수행한다.
-
메모리는 CPU의 레지스터에 비하면 처리 속도는 느리지만 비교적 대량의 데이터를 담을 수 있는데, 그럼에도 실제 사용자가 컴퓨터를 사용하는 과정에서 필요한 모든 데이터를 담기에 메모리의 크기는 다소 한정적이다. 이 때문에 보통 컴퓨터는 이보다 속도는 느리지만 담길 수 있는 데이터의 크기가 훨씬 큰 디스크 등 보조기억장치를 두어 이로부터 데이터를 메모리로 보내고 메모리에서는 처리 결과를 다시 보조기억장치로 보내는 구조를 갖고 있다. 이러한 관리는 커널의 메모리 관리 모듈이 수행한다.
-
한편 보조기억장치 등 기타 여러 I/O 장치는 연산속도가 메모리에 비하면 매우 느리므로, 커널은 각 I/O 장치를 관리하는 관리 모듈을 두어 그 내부적으로 이를 효율적으로 관리하는 나름의 관리 시스템을 갖추고 있다. 각 I/O 장치에 담긴 내용 중 중에서 CPU로 처리할 우선순위가 높은 내용은 그 관리 모듈에 의해 메모리로 보내진다.
2) 인터페이스(interface)
- 사용자가 컴퓨터 시스템의 하드웨어를 통해 여러 정보를 입력하면, 커널은 하드웨어가 입력받은 정보를 내부적으로 처리한 후 다시 이를 현재 커널이 관리 중인 응용 프로그램으로 전달하고 또 그 결과를 받아와 컴퓨터 시스템 내 다른 여러 하드웨어 장치에 전달하는 일련의 과정을 수행한다. 이때 커널과 커널 외부의 응용 프로그램 또는 하드웨어 사이를 연결해 서로간 소통을 담당하는, ‘커널의 경계’라 할 수 있는 OS의 구성요소를 인터페이스라 한다. (얼핏 들으면 굉장히 모호한 개념 같지만, 사실 영어 단어 자체의 의미는 단순히 the point of interconnection, 즉 ‘접촉면’ 내지는 ‘경계면’이란 뜻이다. 다만 컴퓨터의 인터페이스는 단순한 대면 접촉이란 의미에 머무르지 않고 각자 내부에서 소통하는 방식이 다른 두 매체 간 소통을 위해 어느 정도 표준화를 거친 규격을 사용하는 방식, 수단이라는 점에서 물리학, 화학에서 쓰이는 인터페이스의 의미와는 차이가 있다.)
-
시스템 호출 인터페이스(system call interface): 응용 프로그램과 커널 사이 인터페이스. 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 막아 컴퓨터 자원을 보호한다.
-
장치 드라이버(device driver): 하드웨어와 커널 사이 인터페이스. 커널 자체적으로 컴퓨터 시스템의 여러 하드웨어를 직접 관리하는 모듈이 있는 경우도 있지만, 특정 하드웨어의 경우 그 제작자가 그 장치를 커널이 사용할 수 있게 하는 장치 드라이버를 제공하기도 한다.
-
이 자료는 http://www.kocw.net/home/cview.do?cid=3646706b4347ef09 이 링크의 강의를 정리한 자료입니다.