본문 바로가기

운영체제

컴퓨터 기본 구조

728x90
반응형

Goal

  • 컴퓨터를 잘 모르는 사람도 이해할 수 있도록 컴퓨터 기본 구조에 대한 설명 할 수 있다.

 

프로그램은 운영체제에 의해, 프로세스 형태로 메모리에 올라가 실행되고 제어된다.

그렇기 떄문에, 더 좋음 품질의 프로그램을 개발하기 위해서는 컴퓨터 구조 및 운영체제의 동작 방식을 이해할 필요가 있다.

 

앞으로 다룰 내용은 (프로세스, 스레드, 메모리 구조, 캐시 지역성, 동기화, 데드락, 스케줄링, 가상 메모리, 컨텍스트 스위칭 등)과 같이 컴퓨터 구조 및 운영체제에서 다뤄지는 핵심 개념을 이해하는 것을 목표로 한다.

 

다음 그림은 대략적으로 컴퓨터 구성 요소를 도식화한 것이다.

컴퓨터 구성 요소

 

일부만 나타냈음에도 불구하고 굉장히 복잡하다.

 

이번 포스팅에서는 대략적인 컴퓨터 구조, 관련 용어 정리를 우선적으로 하고 디테일한 내용들은 관련 주제를 다루면서 따로 정리할 생각이다.


컴퓨터 구조

 

 

컴퓨터 구조 도식화

컴퓨터 : 하드웨어 + 소프트웨어 -  시작은 단순 계산을 의미하는 것이었지만 지금은 넓은 의미로 사용됨.

하드웨어(Hard Ware) : 컴퓨터 내부 동작을 담당하는 물리적 기계 장치
ex) CPU, 메모리, 입출력(I.O) 장치, 버스 etc

소프트웨어 : 컴퓨터에 작동 방법을 알려주는 데이터 또는 명령어 집합 
ex) 시스템 소프트웨어, 응용 소프트웨어(사용자 친화적) etc

 

하드웨어 구성 요소

하드웨어 기본 구성 요소

1. 중앙 처리장치(CPU, Central Processing Unit)

명령어를 해석하여 실행하는 장치로, 인간으로 치면 두뇌에 해당

 

구성 요소

  • ALU (Arithmetic Logic Unit)
  • Control Unit
  • Register, Cache

 

2. 메모리(Memory)

작업에 필요한 프로그램과 데이터를 저장하는 장소

바이트 단위로 공간을 분할하고, 분할 공간마다 주소로 구분

 

사용 용도에 따라, 주기억장치(메인 메모리)와 보조기억 장치로 나눈다.

메모리라고 하면 보통 메인 메모리를 의미한다. (Main Memory = RAM)

 

3. 입출력 장치(I/O Device)

입력 장치 : 외부의 데이터를 컴퓨터에 입력하는 장치. ex) 마우스, 키보드, 스캐너

출력 장치 : 컴퓨터 처리 결과를 출력하는 장치. ex) 모니터, 스피커

 

4. 버스(bus)

정보 교환을 위한 통로

 

종류

  • 제어버스(control bus)
  • 주소버스(adress bus)
  • 데이터버스(data bus)

 

제어 버스(control bus)

  • 제어장치와 연결된 버스로, CPU가 메모리와 주변장치에 제어 신호를 보냄
  • 메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어신호를 보내기 때문에 양방향이다.

 

주소버스(adress bus)

  • 메모리 주소 레지스터(MAR)와 연결된 버스로, 메모리나 주변장치에 데이터를 읽거나 쓸 때 주소 정보를 보냄
  • CPU => 메모리와 I/O 장치로 보내지는 주소정보로, 단방향이다.

 

데이터 버스(data bus)

  • 메모리 버퍼 레지스터(MBR)와 연결된 버스로, CPU가 메모리나 I/O 장치와 데이터를 주고 받는다.
  • CPU가 데이터를 읽고 쓸 수 있도록 데이터 이동이 양방향으로 이루어진다.

 


기타 용어 정리

*프로그램(program)

프로그래밍 언어로 작성된 명령어 리스트

 

*폰노이만 구조

현재와 같은 CPU, 메모리, 프로그램 구조를 갖는 범용 컴퓨터 구조로, 프로그램 내장 방식의 설계 구조이다.

 

폰노이만 구조의 중요 특징

'모든 프로그램은 메모리에 올라와야 실행할 수 있다.'

 

오늘날 대부분이 이 구조이기 때문에, CPU, 메모리, 프로그램간에 상관 관계를 잘 이해할 필요가 있으며 이를 제어하는 운영체제에 대한 이해가 반드시 필요하다.

개인적으로 프로그래머에게 있어서 이부분이 가장 중요한 부분이라고 생각한다. (공부해야 하는 이유)

 

*프로그램 내장(stored-program)

메모리에 프로그램과 데이터가 저장되는 형태

 

*펌웨어(firmware)

'하드웨어와 소프트웨어의 중간' 으로, 주로 ROM 등에 설치된 시스템 소프트웨어를 말한다.

 

특징

  • 소프트웨어 기능을 펌웨어로 구현하면 처리 속도가 빨라진다.
  • 하드웨어 기능을 펌웨어로 구현하면 속도는 느려지나, 유연하고 저렴하게 기능 구현할 수 있다.

 

*트랜지스터(transistor)

반도체를 이용하여 전자 신호 및 전력을 증폭하거나 스위칭하는 데 사용되는 반도체소자(부품)

 

주요 역할

  • 증폭 : 전자 신호 및 전류 증폭 (아날로그 신호)
    • ex) 미약한 신호의 강약을 증폭하여 스피커를 울리는 것
  • 스위칭 : 0과 1을 전환하는 스위치 역할(디지털 신호)

 

*집적 회로 (IC, Integrated Circuit)

특정 기능을 수행하는 전기 회로와 반도체 소자(주로 트랜지스터)를 하나의 칩에 모아 구현한 것

=> 트랜지스터가 포함된 회로를 축소함으로써 컴퓨터의 크기를 획기적으로 소형화

더보기

장점

비용과 성능 측면에서 이점이 있다.

  • 비용 : 트랜지스터를 조립하지 않고 한번에 찍어내기 때문에 비용이 적게든다.
  • 성능 : 크기가 작고 부품들이 조밀하게 설계되어, 동작 속도가 빨라지고 전력 소모는 줄어든다.

 

기능에 따라 구분

  • 메모리 반도체 : 정보를 저장하기 위한 반도체
    • 휘발성 메모리 - RAM
    • 비휘발성 메모리 - ROM, 플래시 메모리
  • 비메모리 반도체 : 계산, 변환, 신호 감지 등 특정 기능을 수행하기 위한 반도체
    • 아날로그 집적회로
    • 디지털 집적회로 - GPU, CPU
    • 혼합신호(Mixed Signal) 집적회로

 

집적회로는 오늘날 거의 모든 전자장비에 사용된다.

집적 회로 덕분에 컴퓨터, 휴대폰 그리고 다른 모든 가전기기들이 소형화 되고, 보급화 되었다고 할 수 있다.

 

관련 회사 : 삼성 전자

 

*칩셋(chip-set)

여러 개의 칩(chip 또는 IC)과 회로가 모여 특정 기능을 수행하도록 설계된 제어 칩들의 조합

CPU를 도와 컴퓨터 시스템 전체를 제어하는 역할을 한다.

 

ex) 메모리 컨트롤러와 IO컨트롤러는 칩셋으로 구성된다.

 


소프트웨어

시스템 소프트웨어(System Software)

컴퓨터 시스템 운영을 위한 소프트웨어

 

주요 역할

  • 응용 소프트웨어를 실행하기 위한 플랫폼을 제공
  • 하드웨어 장치 접근 및 장치 제어

 

ex) 운영체제, 펌웨어, 장치 드라이버, 컴파일러, 어셈블러, 디버거, 셸, etc...

 

응용 소프트웨어(Application Software)

넓은 의미에서는 운영체제에서 실행되는 모든 소프트웨어를 뜻함
좁은 의미에서는 OS 위에서 사용자가 직접 사용하게 되는 소프트웨어

ex) 오피스 프로그램, 게임, 웹 브라우저 etc..

 

시스템 소프트웨어 vs 응용 소프트웨어

시스템 소프트웨어

  • 컴퓨터 시스템 중요 자원 관리하기 때문에, 장치나 컴퓨터 자원에 대한 접근이 가능하다.
  • 다른 소프트웨어나 하드웨어 장치를 위한 플렛폼을 제공해준다.
  • 어셈블리어 언어와 같은 저수준 언어로 작성되거나 저수준 단계에서 제어된다.

응용 소프트웨어

  • 컴퓨터 자원에 대한 직접적인 접근이 제한된다.
  • 일반적으로 고수준 언어로 작성된다.
  • 시스템 소프트웨어에 비해 비교적 사용자 친화적인 프로그램이다.

 

더보기

프로그래밍 언어로 개발된 소프트웨어는 컴파일러, 어셈블러와 같은 프로그래밍 언어 번역기에 의해 번역 단계를 거쳐 기계어(0과 1로 이루어진 명령어 집합)로 번역되어 명령어 형태로 실행된다.

 

728x90
반응형