본문 바로가기

과제모음

[운영체제론]3월 4일 수업정리(프로세스, 인터럽트, BUS)

운영체제의 성질중에는 동시성(Concurrency)이 존재한다. 흔히들 동시성이라고 하면 프로세스의 동시동작을 한 예로 생각하는데 이것은 문맥교환(context switch)으로 인한 현상이다.

문맥교환은 실제로 동시동작하는것이 아닌 빠른시간내에 번갈아 가면서 프로세스를 실행시키는 방법으로 Multiple Process를 구현한다. 이 과정에서 그 교환시간이 long term일 경우에 Memory상에 이전에 실행중이었던 프로세스의 상태를 저장한다. term 이 short term일 경우에는 Memory상이 아닌 register 상에 그 데이터를 저장 하도록 한다.
? Register 도 Memory의 일종 아닌가? : 아마도 이 설명상에서의 Memory는 RAM을 말하는 것인듯하다.

위의 방법과 같은 방법으로 Multiple Process가 이루어지는 경우는 진정한 동시성이 성립한다고 생각할수없다. 실제로는 눈속임에 불과하기 때문이다. 운영체제에서의 동시성은 I/O 장치에 장착되어있는 CPU가 존재함으로써 가능해진다. 


디바이스에 장착된 좋은예가 위의 사진에 나와있는 그래픽 카드상의 GPU이다. 이러한 디바이스상의 CPU가 존재함으로써 메인 CPU는 디바이스의 CPU에 작업을 시키고 다른일을 다시 할 수 있게 되는 것이다. 이러한 명령이나 작업에 대한 데이터가 이동하는 통로를 BUS라고 부른다.


BUS는 단순한 구리선의 집합이지만 디바이스간의 Protocol 역할을 함으로써 각 번호마다 할당되어있는 역할에 따라서 동작을 하게된다. 기본적으로는 CPU 와 Memory를 거쳐서 작업을 수행하고 데이터를 교환하지만 DMA(Direct Memory Access) 방식을 사용함으로써 디바이스간 직접 통신이 가능하기도 하다.

마지막으로 이렇게 CPU에서 할당받은 작업이 끝났을 경우에 디바이스의 CPU는 작업이 종료되었음을 메인 CPU에 알리게 되는데 이러한 과정에서 발생하는 신호를 인터럽트라고 한다. 인터럽트는 하드웨어적인(현재까지는) 현상이며 소프트웨어상의 인터럽트는 트랩이라고 칭한다. 인터럽트가 발생할 경우 추가적인 인터럽트의 발생은 설정되어진 값에따라 허가를 할수도 있고 하지 않을수도 있다.