출처: 컴공생의 다이어리

 

 

목차

  1. 컴퓨터 구조를 알아야 하는 이유
  2. 컴퓨터 구조의 큰 그림
  3. 운영체제란?
  4. 운영체제의 큰 그림
  5. 운영체제를 알아야 하는 이유

컴퓨터 구조를 알아야 하는 이유

왜?

  1. 문제 해결 능력
    1. 컴퓨터를 미지의 대상이 아니라, 분석의 대상으로 바라볼 수 있다.
  2. 성능, 용량, 비용 개선
    1. 실제로 부품 가격이 다르다.
    2. 프로그래밍 언어의 기초 문법으로는 해결할 수 없다.

 

컴퓨터 구조의 큰 그림

컴퓨터 구조 (출처: 유튜브 캡쳐)

 

컴퓨터가 이해하는 두 가지 정보

출처: 유튜브 캡쳐

데이터

  • 숫자, 문자, 이미지, 동영상과 같은 정적인 정보
  • 컴퓨터와 주고 받는 / 컴퓨터 내부에 저장된 정보를 데이터라고 통칭
  • 명령어를 구성하는 재료

명령어

  • `컴퓨터는 결국 명령어를 처리하는 기계`
  • 컴퓨터를 실질적으로 동작시키는 정보

컴퓨터가 이해하는 것

  • 컴퓨터는 이진수로 된 `명령어`만을 이해할 수 있다.
    • 이것을 `머신 코드`라고 부른다.
  • (고수준) 자연어 -> 소스 코드 -> 어셈블리어 -> 머신 코드 (저수준)
    • 소스 코드를 머신 코드로 번역하는 도구는 `컴파일러`이다.
    • 어셈블리어를 머신 코드로 번역하는 도구는 `어셈블러`이다.

 

컴퓨터의 네 가지 핵심 부품

출처: 유튜브 캡쳐

 

 

메모리

출처: 유튜브 캡쳐

 

  • 주기억장치
    • RAM과 ROM이 있다. 일반적으로 RAM을 말한다.
  • 메모리는 실행 중인 프로그램의 `명령어`와 `데이터`를 저장한다.
  • 실행 중인 모든 프로그램은 메모리에 저장되어 있어야 한다.
  • 메모리에 저장된 값의 위치는 주소로 알 수 있다.

 

 

CPU

CPU의 동작 과정 (출처: 유튜브 캡쳐)

 

 

  • 메모리에 저장된 값을 읽어 들이고, 해석하고, 실행하는 장치이다.
  •  
  • 다음의 3가지 부품으로 구성된다.
    • ALU: 계산하는 장치.
    • 레지스터: 임시 저장 장치. CPU 내부의 작은 저장 장치.
    • 제어 장치: 제어 신호를 내보내고, 명령어를 해석하는 장치.
      • 제어 신호: 컴퓨터 부품을 관리하고 작동시키는 전기 신호 (e.g. 메모리 읽기 신호, 메모리 쓰기 신호)

 

 

보조 기억 장치

출처: 유튜브 캡쳐

 

  • 전원이 꺼져도 보관될 프로그램을 저장하는 장치.
  • 주 기억 장치(메모리, RAM)의 문제를 보완한다.
    • 단점 1. 비싸다
    • 단점 2. 전원이 꺼지면 저장된 내용을 잃는다. (휘발성)
  • 보조 기억 장치는 상대적으로 저렴하고, 전원이 꺼져도 내용을 잃지 않는다.
  • 종류로는 HDD, SSD, CD-ROM, SD 카드 등이 있다.

 

 

입출력 장치

출처: 유튜브 캡쳐

 

 

  • 컴퓨터 외부에 연결되어 컴퓨터 내부와 정보를 교환할 수 있는 부품.
  • 종류로는 모니터, 키보드, 마우스, 스피커 등이 있다.

 

 

4가지 부품을 연결하는 장치

출처: 유튜브 캡쳐

 

메인보드 & (시스템) 버스

  • 메인보드에 연결된 부품은 버스를 통해 정보를 주고 받음.
  • 버스는 컴퓨터의 부품끼리 정보를 주고 받는 일종의 통로.
  • 다양한 종류의 버스가 있음.
  • 컴퓨터의 핵심 부품을 연결하는 버스는 시스템 버스.

 

운영체제란?

운영체제 == 정부 of 컴퓨터 (출처: 유튜브 캡쳐)

(시스템) 자원 Resource

  • 프로그램이 실행되기 위해 마땅히 필요한 요소.
  • 컴퓨터의 네 가지 핵심 부품을 포함.

 

운영체제 Operating System

출처: 유튜브 캡쳐

  • 자원을 관리하는 특별한 프로그램.
  • 실행 중인 프로그램(==프로세스)을 관리하는 특별한 프로그램.
  • 운영체제도 '프로그램'이기 때문에 `메모리에 적재`된다.
  • 그러나 특별하기 때문에 사용자 영역이 아닌 `커널 영역에 적재`된다.

 

운영체제의 큰 그림

1. 자원(메모리) 관리

출처: 유튜브 캡쳐

 

  • 새로운 프로세스를 메모리의 적절한 위치에 할당한다.
  • 종료된 프로세스를 메모리에서 제거한다.

 

출처: 유튜브 캡쳐

 

  • 메모리의 물리적인 크기보다 큰 프로세스를 메모리에 적재하여 실행시킨다.
  • 페이징, 스와핑 등의 방법을 사용한다.

 

2. CPU 스케줄링

출처: 유튜브 캡쳐
Window의 작업관리자. 수많은 프로세스가 동시에 실행 중인 것처럼 보인다. (출처: 유튜브 캡쳐)

  • CPU는 프로세스를 실행시키는 유일한 주체이다.
  • CPU는 한 번에 하나의 프로세스만을 실행시킬 수 있다.
  • 따라서 개념적으로 동시에 실행한다는 것은, 실질적으로 매우 빠른 속도로 여러 개의 프로세스를 번갈아서 실행하는 것과 같다.
  • 운영체제는 프로세스가 CPU를 엄격한 규칙에 따라 배정 받을 수 있도록 관리한다.

 

3. 시스템 호출 System call을 통한 자원 보호

 

출처: 유튜브 캡쳐
프로그램은 자원에 직접적으로 접근할 수 없다. 운영체제를 거쳐야 한다. (출처: 유튜브 캡쳐)

  • 운영체제는 경쟁적으로 자원을 점유하고자 하는 프로세스들을 잘 타일러서 규칙대로 관리한다.
    • 이것을 멋진 말로 프로세스 동기화 Process Synchronization 라고 한다.

 

운영체제를 알아야 하는 이유

  • 개발자는 프로그램을 만드는 일을 한다.
    • 프로그램을 이해하기 위해서는 운영체제에 대한 이해가 필수적이다.
  • 오류 메시지에 대해서 깊은 이해를 할 수 있다.
    • 컴퓨터를 미지의 대상이 아닌, 분석의 대상으로 바라 볼 수 있다.

 

 


출처

https://youtu.be/LBqJwmFMQHI?si=NIomPDohCvOSL6dc

 

 

 

 

 

 

+ Recent posts