비유로 이해하는 컴퓨터 구조

이대현·2020년 5월 2일
3

Computer Science

목록 보기
1/2
post-thumbnail

이 내용은 최호성의 컴퓨터 구조 강의를 듣고 직접 정리한 글입니다.

1. 층(Layer)

컴퓨터 구조의 핵심은 각 Layer의 구주와 역할, 상호작용 과정을 이해하는 일이다.

  • 존립 의존

    각 레이어는 존립 의존적이다. 특히 하위 레이어에서 문제가 생기면 상위 레이어에도 문제가 생기기 때문에 다른 말로는 전제조건 이라고도 할 수 있겠다.

  • 상호 독립

    내용적 측면에서 상호 독립적이다. 예를 들어, 같은 하드웨어에 같은 커널을 사용하더라도 시스템 영역과 같이 포함된 어플리케이션이 뭐냐에 따라 누군 우분투가 되고 누군 레드햇, 페도라가 되는 것이다.

2. 컴퓨터 == 국가 ❗❓

컴퓨터의 구조를 국가의 구조로 비유했을 때 썩 잘 맞아떨어질 수 있다. 비유의 특성상 약간 과장된 설명이 있겠지만 컴퓨터 구조의 전체적인 흐름을 한 눈에 이해한다는 측면에서 좋은 비유인 것 같다.

2.1. 국가의 구조

국가는 크게 세 레이어로 나눌 수 있다.

우선 1.영토 가 있어야 하고, 그 위에 2.정부가 있어야 하며, 마지막으로 3.국민이 존재한다. 국민 영역에는 4.개인이 존재한다. 한 개인이 살아가기 위해서는 5.집 이라는 공간이 필요할 것 이다. 그 집에서 개인은 6.혼자 살기도하고, 가족을 이루어 7.여러 명이 함께 살기도 하며 한 국가에는 이런 집들이 무수히 많을 것이다. 그런데 국민들 중에서는 정부의 역할을 동시에 하는 국민들도 존재한다. 바로 8.공무원이다. 민간(국민)에 속하지만 하는 일은 정부의 일이기 때문이다. 대표적인 공무원이 바로 9.검/경 이다. 원래 우리 국민들은 서로 집의 일에 함부로 관여할 수 없지만, 검/경은 다르다. 정부로부터 권한을 받았기 때문에 필요한 경우 개인과 집의 문제에 개입할 수 있다.

2.2. 컴퓨터의 구조

컴퓨터의 구조를 국가의 각 요소들에 비유해서 설명할 수 있다.

국가컴퓨터
영토하드웨어 영역하드웨어는 물리적 개념이다. 하드웨어 위 레이어로는 모두 소프트웨어이다.
정부커널 영역소프트웨어는 논리적(virtual) 개념이다. 소프트웨어에서 논리라는 말은 가상(virtual)이라는 단어와 거의 똑같은 의미다.
국민유저 영역점선 위로가 진정한 유저 영역이다.
개인스레드스레드는 프로세스 안으로 행동반경이 제한된다. 자세한 개념은 여기 참고.
프로세스프로세스는 개별화된 공간인 메모리(virtual memory)를 가지고 있다. 다른 프로세스에 의해서 침범 받지 않도록 운영체제가 보장한다.
함께사는 개인멀티 스레드스레드가 여럿 일 때는 하나의 메모리 공간을 나누어 사용해야한다. 이 때 중요한 것이 바로 동기화(Synchronization)다. 어떤 선점된 공간(화장실? = 메모리)에 다른 스레드가 개입할 수 없도록 확인(노크)하고, 문을 잠그고(밖에서 대기시킴) 것이 동기화 과정이다.
혼자사는 개인싱글 스레드자취생은 노크도, 문을 잠글 필요도 없다. 즉, 싱글 프로세스에서 싱글 스레딩을 할 때 동기화를 고민할 필요는 없다.
공무원서비스 영역시스템 서비스 영역. 윈도우 서비스 프로세서, 리눅스의 데몬 프로세서가 이에 속한다.
검/경디버거디버거라는 것은 소프트웨어가 가지고 있는 결함을 해결하기 위해서 만들어진 또 다른 체계이다. 이것을 잘 쓰면 결함을 찾는게 되고 나쁘게 사용하면 데이터를 위변조하는 메모리 해킹도구가 된다.

하드웨어 수준에서 가장 중요한 디바이스는 CPU이다. CPU는 다른말로 machine이라는 표현을 쓸 수 있다. 머신 위에 커널(운영체제)이 설치되면 그 위에 유저 영역의 환경, 즉 우리가 사용하는 어플리케이션이 작동하는 환경이 조성되는 것이다.

3. 실제적인 이해

이제 개괄적인 느낌은 알겠다. 실제로 컴퓨터가 어떻게 돌아가는지, 각 레이어 끼리는 어떻게 데이터를 주고 받는지, 파일입출력과 네트워크 연결을 예로 들어서 공부해보자. 다음 게시글에 정리했다.

profile
삽질의 기록들 👨‍💻

0개의 댓글