Basic Security/_System2007.01.04 13:09
1. 일괄처리 시스템(1950년대)
초기 운영체제의 형태로 일괄 처리 시스템(batch processing system)이 있다. 여러개의 작업을 단일 작업으로 묶어서 일괄 처리하는 시스템으로 전송 속도가 빠른 자기 테이프나 자기 디스크와 같은 보조기억장치를 이용해서 프로세서를 구동시켰으나 보조 기억장치의 속도가 느려 자료를 처리하는 시간이 많이 걸렸다. 이를 보완하기 위해 모니터링 (monitoring), 버퍼링(buffering), 스풀링(spooling) 등 여러 가지 방법을 생각하게 되었는데, 이것들은 아직도 운영체제에서 중요한 개념들이다.

'모니터링'은 CPUT의 유휴시간(idle time)을 효율적으로 사용하기 위해 CPU의 프로세스를 지속적으로 관찰하여 작업 순서를 자동으로 바꾼다. '버퍼링'은 CPU가 어떤 작업을 처리하는 동안, 버퍼에 다음에 처리할 작업을 미리 읽어 자장해 두는 것이다. '스풀링'은 속도가 빠른 디스크를 버퍼처럼 사용해서 미리 입출력 장치에서 익는 것이다.

이러한 일괄처리 방식은 현대의 일반 시스템에서는 거의 사용하지 않는다. 아직까지 일괄 처리 방식을 사용하는 시스템이라면 펜 등으로 마킹한 카드를 읽어 점수를 처리하는 성적 처리 시스템 정도일 것이다.


2. 다중 프로그래밍 시스템(1960년대)
 
일괄 처리 방식이 CPU를 비효율적으로 사용하는 것을 착안해 이를 개선하여 발전시킨 것이 다중 프로그래밍 시스템(multi-programming system)이다. 이 방식은 CPU유휴시간에 다른 프로세스를 처리하여, 입출력 장치와의 속도차이를 해소한다.

따라서 실제 CPU 에서는 한 개의 프로그램만 실행되며, 나머지 프로그램은 입출력을 수행하거나 대기 상태가 된다. 단점은 메모리에 여러 프로세스를 수용해야 하므로 메모리 관리가 복잡해지며, 실행 대기중인 프로세스간에 처리 순서를 스케줄링 해야 한다는 것이다.


3. 실시간 처리 시스템(1960년대)
일괄처리 시스템과 다중 프로그래밍 시스템 모두 사용자가 지금의 시스템처럼 명령을 내리고 이를 바로 실행할 수 있는 형태가 아니었다. 운영체제에 특정한 작업을 동작시키면 끝날때 까지 아무것도 못하는 시스템이었다.

실시간 처리 시스템(real-time processing system)은 일정시간 동안 정해진 프로세스를 실행한 후 다음 프로세스에 대한 대기와 실행 등을 제어할 수 있다. 이 시스템은 공정 제어 기계나 의료기 시스템 등에 사용되고 있다.


4. 시분할 처리 시스템(1960년대)
우리가 현재 가장 일반적으로 사용하고 있는 운영체제와 비슷해진 것은 시분할 처리 시스템(time-sharing system)부터다. 시분할 처리 시스템은 프로세스의 사용시간을 작게 나누어 다중 사용자(multi-user)나 여러 작업을 한대의 컴퓨터에서 할 수 있게 되었다.


5. 분산 처리 시스템(1980년대)
분산 처리 시스템(distributed data processing system)은 하나의 대형 컴퓨터에서 수행하던 기능을 분산된 여러 컴퓨터에 분담시킨 후, 네트워크를 통하여 처리하는 방식이다. 이에 대한 표준으로는 코바(CORBA, Common Object Request Broker Architecture)가 있다. 코바는 네트워크에서 분산 프로그램 객체를 생성, 배포, 관리하기 위한 구조와 규격이며, 네트워크에서 이기종간의 시스템이 서로 통신할 수 있도록 하였다.


6. 다중 처리 시스템(1990년대)
다중 처리 시스템(multi-processing system)은 여러 개의 작업을 하나의 시스템에서 동시에 처리할 수 있는 시스템을 말한다. 그 대표적인 경우로는 리눅스 시스템이 있는데, 각각의 CPU가 언제나 실행중인 프로세스를 갖도록 하여 CPU의 활용을 극대화하는 것이다. 프로세스의 수가 CPU보다 많은 경우(대부분의 경우가 이렇다), 나머지 프로세스들은 실행되기 위해서 CPU를 사용할 수 있을때까지 기다려야 한다.

다중 처리는 간단히 설명하면, 프로세스가 무언가를 기다려야 하기 전까지는(보통은 시스템 자원을 기다린다) 계속 실행되며, 기다리고 있다가 자원을 얻으면 프로세스는 다시 실행되는 것이다. DOS와 같은 단일 처리(uni-processing)시스템에서 cpu는 아무 것도 하지 않고 대기시간을 낭비한다.

반면에 다중 처리 시스템에는 동시에 많은 프로세스가 메모리내에 존재하며, 프로세스가 무언가를 기다려야 할 때마다 운영체제는 다른 대기중인 프로세스가 CPU를 사용하도록 한다. 어떤 프로세스가 다움에 실행되는 것이 가장 적당한 것인지를 선택하는 일은 스케줄러의 역할이다. 리눅스는 공정한 여러가지의 스케줄링 정책을 사용한다.


운영체제에 대한 다른 관점으로는 윈도우, 리눅스, 유닉스, 넷웨어(Netware), 매킨토시(Macintosh)와 같이 그 종류를 생각할 수 있다. 좀 더 세분화하면 매우 다양하지만 윈도우가 운영체제의 80% 이상을 차지하고 잇는 것이 현실이며, 서버 역시 윈도우 제품군의 사용률이 많이 증가하고 있다.
 
하지만 대형 서버의 경우에는 IBM의 AIX, HP의 HP-UX, SUN의 Solaris가 아직도 강세다. 아직까지 윈도우가 대형 서버로 동작하고 있는 경우를 본 적이 없지만 앞으로는 어떻게 될지 예측할 수 없다. 하지만 역시나 서버 시장에서 윈도우 시스템은 그다지 환영받고 있지 못하다. 서버 관리자 중 윈도우 서버를 좋아하는 관리자 역시 아직 본 적이 없다.

신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Proneer

댓글을 달아 주세요


티스토리 툴바