1장. OS란?

OS/OS 파헤치기! 2010. 8. 12. 01:39
컴퓨터는 대충 4가지로 나누어 생각해 볼 수 있다. 

먼저 기계덩아리 1)하드웨어, 
하드웨어를 사용가능 하게 해주는 2)운영체제,
운영체제 안에서 돌아가는 3)어플리케이션 프로그램,
이러한 어플리 케이션을 이용하는 4)사용자(유저)

이미 여러분들은 OS에 관해 여러가지 문장으로 정의해 놓은 것을 알고 있을 것이다. 필자는 개인적으로 '하드웨어를 사용가능 하게 해주는 운영체제' 에 다가 조금 더 보태서 '하드웨어를 효율적으로 사용 가능하게 해주는 운영체제' 라고 정의하고 싶다. 

여기에서 '효율적으로' 란 말은 두가지로 살펴볼 수 있다. 하드웨어적인 효율성과  하드웨어와 사람간의 효율성.
간단히 살펴보고 넘어가자.
첫번째, 하드웨어적인 효율성이란 앞으로 계속 살펴보며 전개될 내용의 거의 전부가 하드웨어적인 효율을 높이는 방법들이다.
두번째 하드웨어와 사람간의 효율성이란 다른말로 유저 인터페이스룰 말한다. 재미난건 UI가 너무 잘 되있다고 해서 무조건 좋은것만은 아니라는 점! 그만큼 자원의 소모가 심해지고, 너무 간단하게 UI를 만들면 쓰기가 어려워진다는 양날의 검과같은 점이 있다. 

태초에 컴퓨터가 생기면서 OS의 필요성이 제기 되었는데, 이런저런 역사는 접어두고 OS다운 OS는 심플, 또는 멀티 프로그래밍이 가능한 배치(batch)시스템이 었다. 
배치 시스템의 가장 큰 특징은 순차적으로 A ->B ->C ->D  이런식으로 진행이 되어 지는 시스템인데, 여기에서 유저와의 상호작용이 개입될 여지가 전혀 없다는 점이 포인트이다. 
여기에서 심플배치시스템말고 멀티프로그래밍 배치 시스템은 그 유명한 스풀링(Simulaneous Peripheral Operation On-Line)의 개념을 빌린것인데, 스풀링이란 주변장치들의 속도가  CPU에 비해서 현저히 느리기 때문에 일종의 동기화를 위한 완중장치(buffer)이다.  먼저 처리된 아웃풋들이나 병목현상으로 대기하고있는 인풋을 거대한 디스크와 같은 공간에 깡그리 담아 버림으로써 데이터의 증발을 막는 역할을 한다.  일종의 buffer이기는 하지만 주변기기들과의 I/O 전용으로 사용된다는 접이 다른 buffer와의 차이점이다. 

이러한 배치시스템의 처리단위는 통상 잡(job)이었다. 잡이란 프로그램, 데이터, 몇가지 제어정보 를 지닌 일련의 카드라고 일단 생각하기!! 
이러한 잡들의 수행을 빠르게 하기위해 비슷한 잡들끼리 묶어서 그룹으로 컴퓨터에서 수행시켜주되 잡풀이라는 스풀에 담아서 한정된 메모리안에 올렸다가 내렸다가 하면서 수행하는 형태의 시스템이 바로 멀티 프로그래밍 배치 시스템이다.

여기서 우리는 몇 가지 OS 이론의 중요한 주제가 등장하게 된다. 
어떤 잡을? 언제? 올리고 내리고 할지를 결정하는 잡 스케줄링(롱텀스케줄링) 은 나중에 시피유 스케줄링(숏텀스케줄링)
으로 연구가 진행되고 수행을 위해 한정된 주메모리에 올렸다가 내렸다가 해야하기 때문에 그 유명한 메모리 스케줄링 등장하게 된다. 
또한 스풀은 통상 하드디스크로 발전하며, 그 속도와 효율성을 발전시키기위해 디스크 스케줄링 이라는 주제로 승화(?)되어 버리는 사태에 이른다. 
잡은 나중에 프로세스  라는 근사한 단위로 다시 나뉘게 되고 프로세스는 또 쓰레드  라는 현대적 단위로 다시 바라보게 된다. 
방금전 설명한내용은 이후 글이 진행됨과 동시에 하나씩 베일을 벗겨보기로 하자. 

마지막으로 앞으로의 앞으로의 OS의 경향을 살펴보도록하자
현재 컴퓨터는 인텔 코어2듀어니 듀얼코어니 뭐 이런 말을 들어 봤을것이다. 즉, 멀티프로세서! 씨피유가 1개가 아니란 말이다. 이러한 멀티 프로세서시스템은 크게 두가지로 분류된다. 
첫째, 패러랠 시스템
둘째, 분산형 시스템

첫번째, 패러렐 시스템은 tightly coupled system 이라고도 한다. 요거는 씨피유는 여러개이지만 램, 클럭 같은 시스템 자원은 여러개의 씨피유가 공유하게 된다. 포인트는 10개의 씨피유가 달렸다고해서 속도가 10배 빨라지는 것은 아니다. 10배에 가깝도록 만드는 것이 본 시스템을 연구하는 사람들의 목적이라고 할 수 있을 것이다. 본 시스템의 강점은 10개의 씨피유중 하나가 맛탱이 가면 전체 다운 대신에 10%의 성능 감소가 일어나는 안정성!에 있다고 할 수 있다.
 이러한 페러렐 시스템은 2종류로 나뉠 수 있는데, 한가지는 대칭형 멀티프로세싱 시스템(예.BeOS)이고 또다른 하나는 비대칭형 멀티프로세싱 시스템이다.  말그대로 씨피유에 부과되는 부하가 대칭적이냐, 아니냐 를 말하고 있는것까지만 알아두자.

두번째 , 분산형 시스템 은 Loosely couple system이라고도 불리며 이는 바로 최신 OS의 경향이라고 한다. 누가?다들...
이것은 패러렐 시스템과 비교되게 여러개의 씨피유가 각각의 메모리와 클럭등을 가지고 있다. 여기에 네트웍을 기반으로 거대한 한개의 시스템을 구성하는 형태를 가지고있다. 그래서인지 이 시스템의 단위는 씨피유라고 불리기 보다 싸이트(site) 라고 불리게 된다. 

그 밖에 실시간 시스템 등이 있지만 , 그런게 있구나 라고 여기시거나 책을 찾아 보시기 바란다. 

'OS > OS 파헤치기!' 카테고리의 다른 글

5. 프로세스의 생성 사용 및 소멸  (0) 2010.09.22
4. 프로세스(process)?  (0) 2010.08.25
3. 하드웨어 보호(Hardware Protection)  (0) 2010.08.17
2장 컴퓨터 구조  (0) 2010.08.16
[공지]시작하며...꼭 읽어주시길.  (0) 2010.08.11
AND