디자인 설계 방법 중에는 상향식 방법과 하향식 방법이 있고, 이 두 가지 방법을 통해 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의 추상화를 계층으로 이들의 관계를 통한 컴퓨터 시스템 작동으로 이해하 면 될 것 같다.
'CS' 카테고리의 다른 글
RB 트리가 뭐야? RB트리 삽입까지 알아보자 (0) | 2024.08.07 |
---|---|
정글 퀴즈 리뷰 week01~week03 (0) | 2024.07.29 |
컴퓨터 시스템이 뭐야? (1) | 2024.07.14 |
데이터 자료구조에 대해 알아보자 (3) | 2024.07.14 |
JWT(Jason Web Token), SSR(Server Side Rendering) (0) | 2024.07.07 |