[OS] OS의 역할

Operating Systems 2012. 12. 24. 01:51

※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)


OS의 역할을 논의하기에 앞서서 OS의 구조에 대해서 이야기 해보자

기존에는 Multi Programming OS를 사용하였다. 이의 단점이 점점 부각되면서 요즘에는 거의 모든 OS가 time-sharing OS이다. 두 구조의 가장 큰 차이점은 OS가 control을 넘겨주는 방식에 있다.


Multi Programming OS

이 구조의 목적은 CPU를 최대한 바쁘게 하자에 있다. 

여러 사람의 사용자가 이러한 OS를 사용하고 있을 경우, 한 사용자가 입출력을 할 경우 control이 다른 사람에게 넘어가게 된다. 이 구조의 단점은 명확하다.

한 사람이 사용하고 있을 경우 : 혼자 사용하고 있을 때, 입출력이 발생하면 CPU는 아무 것도 못 한다. 따라서 CPU가 놀고 있는 현상이 발생한다. 비효율적이다.

여러 사람이 사용하고 있을 경우 : 한 사람이 CPU를 길게 사용하고 있으면 아무도 못 쓴다. 다른 사용자들은 마냥 기다려야한다.

(여기에서 말하는 입출력은 넓은 의미를 갖는다. Hard Disk에 있는 데이터들이 메모리에 load되는 것 역시 입출력의 일종이며, 키보드를 통해 글자를 입력하는 것, 모니터로 화면을 출력하는 것 역시 입출력의 일종이다.)


Time-sharing OS

time-sharing OS의 가장 큰 특징은 말 그대로 시간을 분할하여 프로세스가 작동한다는 것이다. 여러 개의 프로세스가 각각 분할된 시간에 할당되어 동작한다.

밑의 그림이 충분히 설명을 하고 있다고 믿는다. 수행해야할 프로세스가 P1부터 P5까지 다섯 개가 있으면 단위 시간 별로 쪼개서 각각을 수행한다. 이때 T1과 같은 시간들은 1/60초처럼 고정적인 시간이 될 수도 있고, 0.01 ~ 0.1초 사이의 random한 숫자도 될 수 있다.

위와 같이 다섯 개의 프로세스가 실행 중일 때, 분할된 시간마다 하나씩 들어가서 작동을 한다. 이 때 중요한 것은 각각의 프로세스가 끝나지 않았음에도 불구하고 다른 프로세스로 바뀐다는 점이다.

여기에서 운영체제의 중요한 역할이 드러난다. 바로 프로세스 관리이다. 기본적으로 쪼개진 단위 시간동안 프로세스를 번갈아가면서 실행시키는 이런 환경 아래에서 여러 개의 프로세스가 메모리에 load되어있을 때, 어떤 프로세스를 선택해서 실행시킬 것인가? Chapter 3에서 scheduler라는 제목으로 공부하게 될 것이다 :-)

프로세스가 실행되려면 해당 프로세스는 반드시 메모리에 load되어야 한다. 이 말은 반드시 메모리 특정 공간에 자리를 차지하고 있어야 한다는 뜻인데, 어느 자리에 프로세스를 load할 것인가? 이것 역시 운영체제가 담당하는 일이다. 또한 할당된 공간이 겹쳐서도 안 된다. (전문 용어로 메모리 충돌이라고 한다.)


위와 같은 현상을 막기 위해 OS는 여러 가지 메모리 관리 기법을 통해 문제를 해결한다. 이 문제는 나중에 자세하게 다룰 예정이다.

 

이러한 메모리 관리 기법을 알기 위해서는 storage의 구조를 이해하는 것이 필수적이다. 메모리와 CPU 사이의 시간 gap을 채우기 위해 흔히 cache를 이용한 caching기법을 많이 사용한다


요즘 컴퓨터 시스템에서는 아래와 같은 구조의 storage structure를 사용한다.


위로 갈수록 속도는 빨라지되 용량은 줄어들고, 밑으로 갈수록 속도는 느려지되 용량은 많아진다. 여기서 OS가 담당하는 또 하나의 부분이 나온다. storage management이다. storage management는 사실 굉장히 광범위한 영역이다. 다음과 같이 두 부분으로 분류될 수 있다.


1. file management : storage에는 여러 파일들이 저장 및 삭제될 수 있다. 따라서 file managementstorage management의 일부분이 된다.

2. I/O management : storage 계층 간의 inputoutputI/O관리로 분류될 것이다. 흔히들 말하는 장치 관리자(device driver)에 관한 이야기가 여기에 속하게 된다.

 

또한 OS는 컴퓨터간의 네트워킹이 필요할 때 네트워크를 위한 기능을 담당하기도 한다. TCP/IP가 바로 그것이다. OSI 7 layers를 살펴볼 때, 3계층과 4계층을 이루는 IPTCPOS에 구현되어있다.


이 외에도 사용자가 해당 프로그램을 실행할 수 있는 환경을 제공하기 위해 shell이나 batch 또는 GUI 환경 역시 OS가 제공하는 기능 중에 하나이다.

Posted by 빛나유
,

※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)


OS를 공부해보자. OS, Operating System의 약자로 운영체제라고 번역된다. OS를 공부하기 전에 기본적으로 컴퓨터가 작동하는 원리를 알아보자.

 

여러분은 지금 도서관에 있다. 도서관에 자리를 잡았고 자료는 널려있다. 이제 여러분은 여러분이 할 일을 하면 된다. 여기서 수기로 보고서를 쓴다고 하자. 검은 색 볼펜은 책상의 오른쪽에 놨고, 가위는 왼쪽에 놨다. 도서관 자료를 쉽게 보기 위해서 도서 거치대를 책상 위에 놓았다. 이 상태에서 유용하다고 생각되는 책 한 권을 도서관 자료실에서 검색을 해서 찾아왔다. 시간이 조금 걸렸다. 해당 책을 내가 준비해둔 도서 거치대에 올려둔 후 이제 보고서를 쓰기 시작한다. 쓰기 위해 오른쪽에 준비해둔 볼펜을 들고 쓰다가 스크랩할 것이 있어서 왼쪽에 준비해둔 가위를 들고 쓰다가 다시 볼펜과 가위를 번갈아가면서 쓴다. 그리고 이 책에서는 더 이상 찾을 것이 없는지 다른 책을 이전과 같은 방식으로 검색하여 찾아와서 똑같이 볼펜과 가위를 번갈아가면서 보고서를 쓴다.

 

위의 과정이 컴퓨터가 일을 수행하는 과정과 같다. 도서관은 컴퓨터 본체이다. 방대한 자료가 있는 곳은 디스크이다. 작업을 하기 위해 자료를 올려놓는 곳이 메모리이다. 메모리에 올린 자료를 보고 작업을 수행하는 사람이 CPU이다. (가위, 볼펜, 도서 거치대 등에 대한 설명은 나중으로 미루자.) , 모든 자료는 디스크에 있다. 그 디스크에 있는 자료들로 작업을 수행하기 위해서는 이 자료들을 메모리에 load할 필요가 있다. 메모리에 load되어있는 상태에서 CPU가 해당 자료로 작업을 하는 과정이 흔히 말하는 컴퓨터에서의 연산과정이다.

 

Introduction

OS는 소프트웨어와 하드웨어 사이에서 작동하는 프로그램이다. 위에서 설명했듯이, 모든 프로그램은 메모리에 load되어야 동작할 수 있다. 다른 프로그램들은 우리가 간단히 더블클릭 혹은 엔터를 통해 메모리에 load할 수 있다고 치자. 그렇지만 OS는 우리가 한번도 load해 본 적이 없다? 아니다. 우리는 흔히 컴퓨터 킨다라고 말한다. 조금 어려운 말로 부팅이라고 한다. 부팅과정이 바로 OSload되는 과정이다. 부팅 과정은 다음과 같다.

 

 

부팅이란, 메모리에 OS를 올려둔 후, 각종의 resource 등을 초기화하는 작업이다. 부팅은 다음과 같은 순서로 작업이 진행된다.

 

1. 전원을 켠다.

2. bootstrap 프로그램이 동작하여 메모리에 OSLoad된다.

3. OS가 메모리에 Load된 후, 모든 resource를 초기화한다.

 

위의 과정을 조금 더 자세하게 설명하면 다음과 같다.

1번은 더 이상 설명할 것이 없으므로 패스한다.

2번 같은 경우 bootstrap 프로그램에 대한 설명이 필요하다, bootstrap 프로그램은 OS를 메모리에 load하기 위한 프로그램으로 이해하면 쉽다. bootstrap 프로그램은 비휘발성인 ROM에 저장되어있다. 전원을 켜면 영구적으로 ROM에 저장되어있는 프로그램인 bootstrap 프로그램이 특정 메모리 영역에 OSload하기 시작하는 것이다.

부팅 과정을 다음과 같이 나타낼 수 있다.

 

부팅 시작 전에는 ROMbootstrap만 저장되어 있는 상태이다.


2. OS가 메모리에 Load된다.


부팅 과정을 간략하게 살펴봤다부팅 과정을 더욱 자세하게 보려면 다음 링크를 클릭하세요.

[링크] http://blog.naver.com/jkfirst/120174736265


그렇다면 컴퓨터 작동 과정에서 OS가 하는 역할은 무엇인가?

다음 포스팅에서 설명할게요!!

'Operating Systems' 카테고리의 다른 글

[OS] 프로세스 상태(Process State)  (2) 2012.12.31
[OS] Interrupt Service Routine (ISR)  (2) 2012.12.24
[OS] OS의 역할 (more details)  (0) 2012.12.24
[OS] OS의 역할  (0) 2012.12.24
시작하며...  (0) 2012.12.15
Posted by 빛나유
,

시작하며...

Operating Systems 2012. 12. 15. 22:13

※ 질문/내용오류/공유할 내용이 있다면 jinkilee73@gmail.com으로 메일 주세요 :-)


Operating Systems를 공부해보자.

거북이처럼...

Posted by 빛나유
,