딩굴댕굴

운영체제의 기초 - 2. Introduction to OS 2

by jennysgap

BOX

공부방법

수업 시작하기 전! 공부방법에 대한 조언

어떻게 공부하는지 2가지 예시를 들어 보겠음.


Phase1 시기에 OS이 어떻게 발전하는 가?


지식의 소비자

- 1955년도에 첫번째 OS이 등장했는데, 그것은 simple batch monitor 였다.

- I/O Channel과 interrupt 기능을 도입해서 좀 더 복잡한 batch monitor가 등장했다.

- 1950년대말 60년대 초반에는 multiprogrammed batch monitor가 나왔다.

- 근데 거기에는 Relocation, memory protection, concurrent programming 문제가 있다.

- 이렇게 팩트들을 그냥 받아들이고 학습하는 것은 생산자가 될 수 없다.


지식의 생산자

- 왜 이런 팩트들이 발생하였는가 원인과 결과를 가지고 다 연결을 시켜야 한다.

- 초기 OS이 나타난 이유는 무엇이냐? 하드웨어의 Utilization을 높이기 위한 것이다.

- 그래서 human operation을 대체하기 위해서 batch monitor가 나왔고

- Utilization을 더 높이기 위해서 I/O와 CPU를 over lap 시켜 그 다음 OS가 나왔고

- 그러다 보니 Synchronous 한 I/O문제가 해결이 안돼. multiprogrammed batch monitor가 나왔고

- 이런식으로 원인과 결과를 다 이해해야 함.

- 그리고 story line을 만들어야 함



Phase3

1990년대후반부터 오늘날까지 시기

인터넷이 선택이 아닌 필수가 됨 (모든 컴퓨터 기기들은 네트워크에 의해서 연결됨)


3C convergence: 1990년대 후반 나타난 특성으로 Communication, Computer, Consumter Electronics의 경계가 무너지는 현상

phase3의 키포인트는 connected

OS가 인터넷 가능하게 되는 것은 필수가 되었음

인터넷을 활용한 여러가지 프로그래밍들이 굉장히 중요한 요소가 되기 시작했음

과거에 PC OS시기는 Time-sharing OS 시기에 태어났지만 batch monitor형태를 띄는 과거로 돌아가는 형태를 가졌었는데

지금은 PC OS와 큰 서버용 OS의 경계가 없어졌음

왜? 하드웨어의 가격이 싸졌고 PC에 사용되는 마이크로프로세서도 고성능, 고사양이 되었기 때문

 

컴퓨터 기기를 비싼 가격에 하드웨어 기기를 사는이유

1. 모바일 communication을 하기 위해서 2. multimedia를 하기 위해서 

과거의 OS와 다르게 모든 OS에서 Multimedia Support가 굉장히 중요한 요소가 되었음

OS 관점에서는 multimedia는 거의 예외없이 continuous media라는 것이 중요합니다.

Continuous Media: 특정한 시간적 제약에 맞춰 연속적으로 처리를 해야 하는 데이터

(예: 30 frames/sec로 재생되는 동영상)


Q. Downloading과 Streaming의 차이점은?

A. Downloading은 전체 데이터를 확보한 다음에 작업을 시작할 수 있고

    Streaming은 일부의 데이터만 확보한 상태에서 작업을 시작할 수 있음


OS Supporting 해야하는 대상이 바뀌기 시작했음

Operating의 스케줄링 방법도 바뀜


운영체제의 Multimedia Support가 부각되며 발생한 스케줄링 방식의 변화

중요한 일을 먼저 처리하는 우선순위 기반 스케줄링에서 Continous Media를

원활하게 처리하기 위한 Bandwidth 스케줄링으로 변화


요즘은 PC의 속도가 엄청 빨라서 느끼지 못하지만

10년 전만 해도 mp3음악을 들으면서 PC에 있는 윈도우를 드래그해서 옮기면 mp3음악이 지글지글거리며 끊겼음

윈도우에서 드래그해서 끄는 동작은 굉장히 컴퓨팅 파워가 많이 들어가는 동작임 

비디오 램을 계속 refresh하기 위해서 block data transfer OS 해줘야함. 그것을 처리하다 보니 

mp3 프로그램이 수행될 수 있는 CPU를 제대로 제공해 주지 못했음. 품질이 떨어지게 됨

그래서 multimedia는 스케줄링을 잘 못하게 되면 human perception이 나빠지게 됨

사람들이 금방 알게됨. 이것을 막으려면 어떻게 해야 하는가?

이런 continuous media 처리하는 프로그램이 수행할 때는 필요한 CPU의 일정 Bandwidth를 고정적으로 할당해주는 그런 스케줄러가 필요합니다.

이런 스케줄러를 professional share, Fairshare 스케줄링이라고 하는데, 그런 기법들이 OS에 들어가기 시작했습니다.


과거에는 별로 중요하지 않았지만 요즘 Apple과 같은 굉장히 User perception 좋은 기기들이 등장하게 되면 

경쟁사들도 같이 multimedia perception을 향상시켜야 겠죠?

그런 의미에서 OS가 중요해진거죠.

그 다음에 이 시기의 특징은 OS이 과거에는 굉장히 전문적인 분야였었는데

이제는 보편적인 어떤 자원이된 거죠


OS이 기기에 or 기기자체 or 기기에코시스템을 결정하는 중요한 요소가 됐다는 거죠

이런 측면에서 과거 Batch monitor 시절과 비교하면 큰 변화가 있다는 사실을 알 수가 있겠죠

 


Fuctions of OS

다른 측면에서 OS을 보도록 하죠

지금까지는 OS이 과거의 기술적 필요성 아니면 사용자나 시장의 필요성과 instruction하면서 어떻게 발전해왔는지

그리고 어떻게 discipline들을 받아들이게 되었는지를 살펴봤음


지금부터는 OS이 어떤 기능들을 해야 하는지를 위주로 살펴보겠습니다. (크게 3가지)

1. Coordinator

   OS이 관할하는 system에는 multitasking system이라고 한다면 여러 task가 수행하고 있는 거죠? 

   그 task들이 자원을 필요로 할 것임. 서로 그런 자원을 차지하기 위해서 충돌하게 됨

   그렇기 때문에 OS이 중제자 역할을 해야함.

2. Illusion Generator 

   OS은 추상화를 제공해야 함

   OS은 자기를 사용하는 여러 User들이 쉽게 프로그래밍을 할 수 있도록 Abstraction를 제공해서 프로그래밍이 쉬운 run time system을 제공해줬기 때문임

3. Standard Library

   키보드에서 입력을 받아들이는 프로그램을 짜야겠다. 그러면 OS가 가지고 있는 키보드 드라이브 프로그램을 활용하면 됨. 

   다른사람도 활용할 수 있는 것임. 시스템을 관리하기 위해 필요한 코드들 모듈들을 제공해서 프로그래밍을 쉽게 만드는 역할을 하게 됨


OS Coordinator로써 권장해야 하는 하드웨어장치들은 어떤 것이 있을까?

CPU, I/O device, Memory 이 세가지가 있어야 함

당연히 multitasking system 지원하는 OS들은 Task간에 CPU를 얻고자 하는 경쟁 중지해야하고, memory를 얻고자 하는 경쟁을 중지해야 함

1. CPU를 관리해야 하는 OS의 부분이 바로 스케쥴러, 프로세스 매니저 이런 것들이 되겠죠

2. I/0 device들에 대한 요구도 조종해 주기 위해서 I/O device manager역할도 해야함

3. 그리고 memory도 관리해 주는 역할을 해야될 거예요


실제로 OS 내부를 들여다 보면 2개의 서브시스템이 더 있음

파일관리해주는 파일시스템과 네트워크를 관리해주는 네트워크시스템이 더 있음


OS의 내부구조 (5가지)


여기서 의문을 갖는 것이 있을 겁니다. 네트워크라는 것이 뭐죠?

네트워크라는 것은 I/O device의 일종인 거죠

외부와 통신을 담당하는 역할

컴퓨터 시스템의 입장에서 볼 때 네트워크라는 것은 Network interface controller를 의미합니다.


그럼 I/O system이 있는데 OS가 Network system을 별도로 갖고 있어야 될까?

또 다른 측면으로는 File은 뭔가요? 하드디스크 드라이브라고 하는 볼륨스토리지에 저장되어 있는 named collection of data 임.

다시 말해 File system은 하드디스크 드라이브라고 하는 I/O를 관리하는 장치임

그럼 하드디스크 드라이브도 I/O system인데 왜 따로 뽑아놔야 될 거 같은가요?


Modern OS = unix, linux와 대변되는 모든 OS는 I/O device를 3가지로 나뉨니다.

1. character I/O device: I/O의 단위가 Byte인 장치 (예: 키보드, 마우스)

2. Block I/O device: I/O의 단위가 Block인 장치 (예: 하드디스크)

3. Network I/O device: Network를 제어하는 장치 (예: 소켓)


세가지로 나뉘는 이유?

I/O 관리를 어떻게 하느냐에 따라 성능 영향이 굉장히 많이 받는다는 것을 의미함


컴퓨터 시스템에는 많은 메모리가 있음

하드디스크 드라이브, 메인 메모리, 캐쉬, 레지스터 이와같이 CPU로부터 가까우면 만들기는 가격이 비싸지만 성능이 굉장히 빠른 메모리고 멀어지면 멀어질수록 단가는 싸지만 굉장히 느린 메모리가 됨. 우린 이런 것을 memory hierachy(계급화) 라고 함

캐쉬: 하드웨어적으로 구현할수도 있지만 OS이 하드디스크 드라이브에 있는 파일의 일부를 메인 메모리에 넣어놓음으로써 구현할수도 있음

결국 디스크 캐쉬를 제공하는 OS과 제공하지 않는 OS이 사용자에게 보여주는 성능은 굉장히 많은 차이를 보여줌

이런식으로 성능에 민감한 OS의 여러가지 기능들이 필요로 하게 됩니다.

그런 것들이 Block I/O device에 존재하게 되고 그런 것들을 모아 둔것이 File system이 됩니다.


그렇기 때문에 I/O system은 주로 Character 단위의 I/O device를 권장하는 것이고

File system은 Block I/O device를 권장하며

Network system은 Network I/O 를 권장합니다.

memory management system이나 cpu 는 이미 느낌으로 알 수 있는 내용이겠죠

이것이 바로 조종자의 OS의 요소들입니다.


다음은 Illusion Generator 로써 OS 역할을 보도록 하겠습니다.

- 이것은 추상화(Abstraction)와 같은 얘기임

컴퓨터 bare machine이 주어졌을 때 프로그래밍하기는 매우 어려움

그래서 복잡한 것을 추상화 시켜서 사용자들이 아주 간단하게 사용할 수 있도록 Abstraction Layer를 제공해 주는 것이 OS임

그리고 OS는 여러 유저들에게 동일한 Abstraction Layer를 제공함


이런 Abstraction Layer는 일반적으로 굉장히 좋음

그러나 언제나 성공하는 것은 아님

OS의 Abstraction Layer가 잘못 구현되었을 때, 아니면 그것을 사용하는 정책이 잘못 됐을 때 시스템이 굉장히 나빠지게 되는 것

이런 것들도 우리가 공부하게 될 겁니다. 그런 현상을 우리가 Thrashing 현상이라고 말함


timesharing이라고 하는 것은 OS이 제공하는 추상화 기능의 하나입니다.

실제로 컴퓨터는 한대밖에 없지만 여러명이 전부 자기가 independent, individual한 컴퓨터를 한대씩 부여받은 듯한 느낌을 주잖아요

그것까지는 좋았는데 그런 timesharing 기능이 어느 threshold(한계점)을 넘으면 collapse함


Time-Sharing 시스템에서의 Thrashing

사용자의 수가 어떤 임계점을 넘어서는 순간 응답 시간이 급격히 증가하는 현상



Summary

초창기에는 주로 하드웨어의 진화를 Support하는 측면에서 발전해 왔고

요즘은 하드웨어 진화가 slow down이 됐고 그것 보다는 

사용자의 사용감 perception 또는 시장에서의 어떤 요구를 만족시키는 측면으로 OS이 진화해 가고 있다

OS이 과거에는 Batch monitor로 시작해서 interactive time sharing 시대를 거쳐서

conneted smart device를 지원하는 시스템으로 진화해 갔다


앞으로 남은 14주 동안 OS의 내부에 대해서 공부를 하게 됨

OS 내부에는 5개의 서브시스템이 있음

그 중에 CPU Scheduleing을 담당하는 Process scheduling system(process control system), memory management system, file system, I/O system을 공부할 예정

network system은 강의 내용에 포함 안됨











출처 - http://snui.snu.ac.kr/ocw/index.php?mode=view&id=627

출처 - http://snui.snu.ac.kr/ocw/index.php?mode=view&id=628

반응형

블로그의 정보

jennysgap

jennysgap

활동하기