컴퓨터(HW, SW)의 동작원리와 구조

Challenge and Frustration·2021년 9월 28일
0

오늘의 물음은 '대체 복잡한 velog 같은 소프트웨어가 어떻게 하드웨어를 구동시키는거지?'이다.

하드웨어는 전압을 이용한 디지털 신호(0과 1)로 데이터를 처리한다. 그렇다면 의문이 안 생길 수가 없다.
복잡한 프로그램, 운영체제 등이 어떻게 0과 1로 동작할까?


컴퓨터의 architecture(동작 원리)

컴퓨터는 위에서 언급했듯이 0과 1로 이루어진 instruction을 이해할 뿐이다.
그러므로 우리는 복잡한 프로그램을 instruction으로 만들어줄 소프트웨어가 필요하게 된다.
이러한 필요에 의해 등장한 게 시스템 소프트웨어(운영체제, 컴파일러, 어셈블러, 링커...)이다.
우린 시스템 소프트웨어를 통해서 응용 소프트웨어를 실행시켜 컴퓨터에게 명령을 내릴 수 있는 것이다.
만일 시스템 소프트웨어가 없었다면 명령을 내리기 위해 직접 0과 1로 명령을 내렸을 것이다.

그렇다면 시스템 소프트웨어는 어떤 과정을 거쳐서 응용 프로그램을 명령어로 바꿀까?

어떤 복잡한 프로그램은 수 백만 줄의 코드로 구성되어 아주 복잡하게 이루어진다.
이렇게 짜여진 코드는 컴파일러에 의해 어셈블리어로 바뀐다. 이런 어셈블리어는 또다시 어셈블러에 의해 기계어로 바뀐다.
이런 기계어는 양이 많을뿐 사실 instruction의 수는 많지 않다. 단순한 옛 모델의 경우 100개 정도 되는 듯하다.
즉, 엄청난 프로그램도 기껏해야 몇백개의 명령어의 단순 반복으로 실행되는 것이다.


하드웨어의 구조

하드웨어는 크게 네 파트로 나뉜다.

  • 데이터 입출력 - 키보드, 마우스, 무선장비, 디스크 드라이브 등
  • 데이터 저장 - 메모리
  • 데이터 처리 - datapath(ALU), control unit
    (ALU는 산술 연산과 논리 연산을 하는 장치를 말함)

Memory

(보조기억 장치는 storage라고 함)
메모리는 말 그대로 정보를 저장하는 장치이다.
계층 구조로 구성되어 저렴한 가격에 고용량, 빠른 속도를 구현하고 있다.
우리가 흔히 말하는 메모리는 주기억장치로 휘발성을 띄고 빠른 속도를 가진다.
더 빠르고 작으며 비싼 상위 메모리로는 SRAM으로 구성된 캐시와 flipflop으로 구성되는 레지스터가 존재한다.

Storage(보조기억장치)

보조기억장치는 싸고 느리며 크다. 비휘발성이다.
예전에는 HDD(HardDiskDrive)를 많이 썼지만 요새는 집적도가 높고 빠른 플래시메모리(SSD)를 많이 쓴다.

Architecture(Instruction Set Architecture)

ISA라고 불리는 이것은 하드웨어와 최하위 소프트웨어 간의 interface이다.
이 ISA가 존재하기 때문에 소프트웨어 설계자는 하드웨어에 신경을 쓰지 않아도 프로그램을 짤 수 있다.
즉, ISA만 같다면 서로 다른 하드웨어일 때도 동일한 소프트웨어로 구동시킬 수 있다는 것이다. 이게 바로 추상화의 위력이다.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN