1. 비유로 이해하는 컴퓨터 구조
컴퓨터의 구조를 국가의 구조로 비유했을 때 썩 잘 맞아떨어질 수 있다. 비유의 특성상 약간 과장된 설명이 있겠지만 컴퓨터 구조의 전체적인 흐름을 한 눈에 이해한다는 측면에서 좋은 비유인 것 같다.
이 내용은 최호성의 컴퓨터 구조 강의를 듣고 직접 정리한 글입니다.
1. 층(Layer)
컴퓨터 구조의 핵심은 각 Layer
의 구주와 역할, 상호작용 과정을 이해하는 일이다.
존립 의존
각 레이어는 존립 의존적이다. 특히 하위 레이어에서 문제가 생기면 상위 레이어에도 문제가 생기기 때문에 다른 말로는
전제조건
이라고도 할 수 있겠다.상호 독립
내용적 측면에서 상호 독립적이다. 예를 들어, 같은 하드웨어에 같은 커널을 사용하더라도 시스템 영역과 같이 포함된 어플리케이션이 뭐냐에 따라 누군 우분투가 되고 누군 레드햇, 페도라가 되는 것이다.
2. 컴퓨터 == 국가 ❗❓
컴퓨터의 구조를 국가의 구조로 비유했을 때 썩 잘 맞아떨어질 수 있다. 비유의 특성상 약간 과장된 설명이 있겠지만 컴퓨터 구조의 전체적인 흐름을 한 눈에 이해한다는 측면에서 좋은 비유인 것 같다.
2.1. 국가의 구조
국가는 크게 세 레이어로 나눌 수 있다.
우선 1.영토
가 있어야 하고, 그 위에 2.정부
가 있어야 하며, 마지막으로 3.국민
이 존재한다. 국민 영역에는 4.개인
이 존재한다. 한 개인이 살아가기 위해서는 5.집
이라는 공간이 필요할 것 이다. 그 집에서 개인은 6.혼자 살기도하고
, 가족을 이루어 7.여러 명이 함께 살기도 하며
한 국가에는 이런 집들이 무수히 많을 것이다. 그런데 국민들 중에서는 정부의 역할을 동시에 하는 국민들도 존재한다. 바로 8.공무원
이다. 민간(국민)에 속하지만 하는 일은 정부의 일이기 때문이다. 대표적인 공무원이 바로 9.검/경
이다. 원래 우리 국민들은 서로 집의 일에 함부로 관여할 수 없지만, 검/경은 다르다. 정부로부터 권한을 받았기 때문에 필요한 경우 개인과 집의 문제에 개입할 수 있다.
2.2. 컴퓨터의 구조
컴퓨터의 구조를 국가의 각 요소들에 비유해서 설명할 수 있다.
국가 | 컴퓨터 | |
영토 | 하드웨어 영역 | 하드웨어는 물리적 개념이다. 하드웨어 위 레이어로는 모두 소프트웨어이다. |
정부 | 커널 영역 | 소프트웨어는 논리적(virtual) 개념이다. 소프트웨어에서 논리라는 말은 |
국민 | 유저 영역 | 점선 위로가 진정한 유저 영역이다. |
개인 | 스레드 | 스레드는 프로세스 안으로 행동반경이 제한된다. 자세한 개념은 여기 참고. |
집 | 프로세스 | 프로세스는 개별화된 공간인 메모리(virtual memory)를 가지고 있다. 다른 프로세스에 의해서 침범 받지 않도록 운영체제가 보장한다. |
함께사는 개인 | 멀티 스레드 | 스레드가 여럿 일 때는 하나의 메모리 공간을 나누어 사용해야한다. 이 때 중요한 것이 바로 |
혼자사는 개인 | 싱글 스레드 | 자취생은 노크도, 문을 잠글 필요도 없다. 즉, 싱글 프로세스에서 싱글 스레딩을 할 때 동기화를 고민할 필요는 없다. |
공무원 | 서비스 영역 | 시스템 서비스 영역. 윈도우 서비스 프로세서, 리눅스의 데몬 프로세서가 이에 속한다. |
검/경 | 디버거 | 디버거라는 것은 소프트웨어가 가지고 있는 결함을 해결하기 위해서 만들어진 또 다른 체계이다. 이것을 잘 쓰면 결함을 찾는게 되고 나쁘게 사용하면 데이터를 위변조하는 메모리 해킹도구가 된다. |
하드웨어 수준에서 가장 중요한 디바이스는 CPU이다. CPU는 다른말로 machine이라는 표현을 쓸 수 있다. 머신 위에 커널(운영체제)이 설치되면 그 위에 유저 영역의 환경, 즉 우리가 사용하는 어플리케이션이 작동하는 환경이 조성되는 것이다.
3. 실제적인 이해
이제 개괄적인 느낌은 알겠다. 실제로 컴퓨터가 어떻게 돌아가는지, 각 레이어 끼리는 어떻게 데이터를 주고 받는지, 파일입출력과 네트워크 연결을 예로 들어서 공부해보자. 다음 게시글에 정리했다.
Last updated