CS

운영체제, 추상화, 컴퓨터 시스템

wook's note 2024. 8. 28. 21:10

 

 

디자인 설계 방법 중에는 상향식 방법과 하향식 방법이 있고, 이 두 가지 방법을 통해 OS design을 조금 이해해보고자 한다.

 

 

 

컴퓨터 시스템의 fundamental은 무엇이냐 ? 라고 질문에 두 가지에 대답이 있다.

 

1. Abstraction (추상화)

2. problem decomposition (작은 단위로 문제를 나누기)

 

 

 

 

문제의 크기(개수) 와 복잡성의 상관관계는 지수적인 관계로 나타난다. 왜 비례 혹은 반비례 관계는 될 수가 없을까 ?

 

 

 

 

 

애초에 우리는 문제가 주어지면 우리가 문제를 하나 하나 씩 해결해야 한다고 생각하고 있다. 그러나 이는 단편적인 것으로 보았을 때 그러하고 사실 생각해야 할 것이 있다.

 

 

 

 

이렇게 문제 사이에도 관계가 발생할 수 있기 때문에 문제의 크기(개수)가 증가한다면 그에 대한 해결해야 할 것도 많아져서 문제의 양과 복잡도는 지수적인 관계를 가진다고 한다.

 

 

 

 

따라서 복잡한 문제들의 관계들을 어떻게 해결해야 할까?

이는 divide and conquer을 사용한다.

 

 

근데 이때 divide의 기준은 무엇일까?

 

컴퓨터 시스템에서는 CPU, 메모리, I/O device 등 resource 기준으로 나누고 그것에 대한 각각의 추상화를 통해 layers of abstraction 을 생각해냈다.

 

 

 

따라서 처음에 언급했듯이 OS design 방법은 상향식과 하향식이 있는데, 이러한 layers of abstraction은 샹향식 방법과 하향식 방법을 모두 사용했다고 할 수 있다.

 

 

하향식 방법은 각 resource에 대한 abstraction으로 구현하고,

상향식 방법은 abstractions 을 layer로 쌓았다.

 

DRAM(+HDD&SSD) 에 대한 resource를 가상 메모리로 추상화하였고,  여러가지 resource의 추상화를 계층으로 이들의 관계를 통한 컴퓨터 시스템 작동으로 이해하 면 될 것 같다.