운영체제(Operating System) - 2

Mins·2023년 4월 17일
0
post-thumbnail

차례

  1. 컴퓨터의 기본 구성
  2. CPU와 메모리
  3. 컴퓨터 성능 향상 기술
  4. 멀티 프로세싱

컴퓨터의 기본 구성

하드웨어의 구성

컴퓨터의 구성

  • 필수 장치 : 중앙처리장치, 메인메모리 (대부분의 작업이 이루어 짐)
  • 주변 장치 : 입력장치, 출력장치, 저장장치

용어 통일

  • 메인메모리 -> 메모리
  • 보조저장장치 -> 저장장치
  • 중앙처리장치 -> CPU

CPU와 메모리

  • CPU : 명령어를 해석하여 실행하는 장치로 인간으로 치면 두뇌에 해당
  • 메모리
    • 작업에 필요한 프로그램과 데이터를 저장하는 장소
    • 바이트 단위로 분할되어 있으며 분할 공간마다 주소로 구분

입출력장치

  • 입력장치 : 외부의 데이터를 컴퓨터에 입력하는 장치
  • 출력장치 : 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치

저장장치

  • 메모리보다 느리지만 저렴하고 용량이 큼
  • 전원의 온/오프와 상관 없이 데이터를 영구적으로 저장
  • 느린 저장장치를 사용하는 이유는 저장 용량에 비해 가격이 싸기 때문
  • 종류
    • 자성 이용 장치 : 카세트테이프, 플로피디스크, 하드디스크 등
    • 레이저 이용 장치 : CD, DVD, 블루레이디스크 등
    • 메모리 이용 장치 : USB 드라이버, SD 카드, CF 카드 , SSD 등

메인보드

  • CPU와 메모리 등 다양한 부품을 연결하는 커다란 판
  • 다양한 장치들을 버스(bus)로 연결 함. 버스는 데이터가 지나다니는 통로
  • 그래픽카드, 사운드카드, 랜카드 등이 기본으로 장착되어 있기도 하고, 성능을 향상하기 위해 따로 장착하기도 함

폰노이만 구조

폰노이만 구조

  • CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 구조

    프로그램은 하드디스크와 같은 저장 장치에 담겨 있으나, 폰노이만 구조의 가장 큰 특징은 저장장치에서 바로 실행 할 수 없고, 메모리로 가지고 올라와야지만 실행이 가능함.
    이러한 특징으로 인하여 메인 메모리가 유일한 작업 공간이며, 메모리 관리가 중요한 이슈임

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

요리사 모형

요리사 모형

  • 운영체제의 여러 가지 현상에 대한 이해를 돕기 위한 것
  • 요리사 -> CPU, 도마 -> 메모리, 보관 창고 -> 저장 장치에 비유

폰노이만 구조와 요리사 모형

  • 요리사 (CPU)가 요리를 하려면 보관 창고 (저장장치)에 있는 재료를 도마 (메모리)로 가져와야 함
  • 주방에서는 도마 (메모리)가 핵심적인 작업 공간이고 보관 창고 (저장장치)는 보조적인 공간임
요리사 모형운영체제 작업
요리 방법 결정프로세스 관리
도마 정리메모리 관리
보관 창고 정리저장장치 관리

메인 메모리가 작으면 컴퓨터가 느려지는 이유

  • 메인 메모리를 도마라 생각해보면, 도마가 크면 재료를 모두 가져다 놓고 요리 할 수 있지만 도마가 작으면 재료를 모두 가져올 수 없음
  • 도마가 작으면 재료 하나를 다듬어 보관 창고에 갖다놓고 다른 재료를 가져와야 하므로 재료 손질 시간보다 옮기는 시간이 많이 걸려 작업 속도가 떨어짐
  • 도마의 크기가 전체 재료를 놓을 수 있을 만큼 충분히 크다면 작업 속도에 영향을 미치지 않음

기초 용어 정리

크기 단위

  • 데이터의 기본 표시 단위는 비트 (bit). 8비트를 묶어서 바이트 (Byte)
단위표기2진 크기10진 크기바이크 대비 크기10진 단위
Byte (바이트)B111111B
Kilo Byte (킬로바이트)KB2102^{10}10310^31,0001,000B
Mega Byte (메가바이트)MB2202^{20}10610^61,000,0001,000,000B백만
Giga Byte (기가바이트)GB2302^{30}10910^91,000,000,0001,000,000,000B십억
Tera Byte (테라바이트)TB2402^{40}101210^{12}1,000,000,000,0001,000,000,000,000B
Peta Byte (페타바이트)PB2502^{50}101510^{15}1,000,000,000,000,0001,000,000,000,000,000B천조

클록과 헤르쯔

  • 클록 (clock)은 컴퓨터에서 일정한 박자를 만들어 내는 것. 클록에 의해 일정 간격으로 만들어지는 틱(tick)을 펄스(pulse) 혹은 클록 틱(clock tick)
  • 클록이 일정 간격으로 펄스를 만들면 거기에 맞추어 컴퓨터 안의 모든 구성 부품들이 작업 진행
    예) CPU는 클록 한 번에 한 번의 덧셈, 메모리도 클록이 발생할 때마다 데이터 저장
  • 제품에 따라 제각각인 CPU 성능을 나타내는 단위가 헤르츠 (Hertz), 표시 단위는 Hz
  • 컴퓨터에서 헤르츠 단위를 사용한다는 것은 1초 동안 몇 번의 작업이 이루어져서 몇 번의 펄스 (클록 틱)가 발생하였는가를 의미

시스템 버스와 CPU 버스

  • 시스템 버스 (system bus)는 메모리와 주변장치를 연결하는 버스로, 메인보드의 동작 속도를 의미하며 FSB (Front-Side Bus) 혹은 전면 버스라고 부름
  • CPU 버스는 CPU 내부의 다양한 장치를 연결하는 것으로 BSB (Back Side Bus) 혹은 후면 버스라 부름
  • BSB 속도는 CPU 클록과 같고 FSB보다 훨씬 빠름
부품사양
CPU인텔 코어 i7 (6코어, 12스레드, 기본 3.7GHz, 최대 5.0GHz, 캐시 20MB)
메인보드FSB 3,200MHz
메모리DDR4 SDRAM 4GB (3,200MHz)
그래픽카드RTX 3060 12GB, 베이스클록 1,530MHz
하드디스크 (HDD)1TB, 7200rpm, 256MB

프로그래밍과 언어

  • 컴퓨터 프로그램을 만드는 것을 프로그래밍(programing), 이 때 사용하는 언어가 프로그래밍 언어(programing language)
  • 컴퓨터가 이해할 수 있는 언어는 기계어 (machine language)로 0과 1의 이진수로 이루어져 사람이 이해하기 어려움
  • 기계어를 사람들이 이해할 수 있는 문자 형태로 바꾼 것이 어셈블리어 (assembly language)
  • 어셈블리어처럼 기계어는 아니지만 일반인이 사용하기 어려운 저급언어 (low level language)
  • if 나 for 같이 일반인이 이해할 수 있는 단어로 만든 언어를 고급언어 (high level language)
  • 기계어와 어셈블리어를 제외한 대부분의 언어가 고급언어
  • 고급언어를 기계어로 번역하는 과정을 컴파일(compile), 컴파일을 담당하는 프로그램을 컴파일러(compiler)
  • 컴파일러가 소스코드를 번역하여 기계어로 이루어진 실행 파일을 만들면 컴퓨터가 실행하여 작업을 시작함
  • 소스코드를 기계어로 번역하는 다른 방법인 인터프리터 (interpreter)는 소스코드를 한 번에 한 문장씩 번역하여 실행.
  • 인터프리터는 실행 파일을 따로 만들지 않아 편하지만 코드에 잘못된 부분이 있는지파악하기 어렵고, 반복 작업을 하나로 합치기 어려움

필수 자료구조 : 큐와 스택

  • 큐 (queue)는 먼저 들어온 자료가 먼저 처리되는 First In, First Out. 한쪽으로 자료를 넣으면 반대쪽으로 나오는 구조
  • 스택 (stack)은 가장 나중에 들어온 자료가 가장 먼저 처리되는 Firts In, Last Out. 순서가 뒤집혀서 나오고 한쪽으로만 입출력이 이루어짐.

필수 자료구조 : 배열과 연결 리스트

  • 배열 (Array)은 형태가 같은 자료를 나열하여 메모리에 연속으로 저장하는 것으로 구현은 간단하지만 공간의 삽입과 삭제 같은 관리가 어려운 게 단점.
  • 연결 리스트는 데이터를 포인터 (Pointer)로 연결해 데이터를 중간에 삽입하는 것도 가능
  • 배열 형태의 테이블은 크기가 어느 정도 정해진 메모리나 파일 관리에 사용, 연결 리스트는 데이터의 삽입과 삭제가 빈번한 테이블에 주로 사용
  • 큐를 구현할 때도 연결 리스트를 사용하면 편리

CPU와 메모리

CPU의 구성과 동작

산술논리 연산장치 (Arithmetic and Logic Unit; ALU)

  • 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산과 AND, OR 같은 논리 연산을 수행

제어장치 (control unit)

  • CPU에서 작업을 지시하는 부분

레지스터 (register)

  • 작업에 필요한 데이터를 CPU 내부에 보관하는 곳

CPU의 명령어 처리 과정

  • CPU에서는 산술논리 연산장치, 제어장치, 레지스터들이 협업하여 작업 처리

레지스터의 종류

  • 데이터 레지스터 (data register; DR) : 메모리에서 가져온 데이터를 임시 보관. 일반 레지스터 또는 범용 레지스터라고 부름
  • 주소 레지스터 (address register; AR) : 데이터 또는 명령어가 저장된 메모리의 주소를 저장하는 레지스터
  • 프로그램 카운터 (program counter; PC) : 다음에 실행할 명령어의 주소를 기억했다가 제어장치에 알려줌. 명령어 포인터 (instruction pointer) 라고도 함
  • 명령어 레지스터 (instruction register; IR) : 현재 실행 중인 명령어를 저장
  • 메모리 주소 레지스터 (memory buffer register; MBR) : 메모리에서 가져오거나 옮겨갈 데이터를 임시로 저장. 항상 메모리 주소 레지스터와 함께 동작함

주요 레지스터의 특징

레지스터특징
일반데이터레지스터(DR)CPU가 명령어를 처리하는 데 필요한 데이터를 임시로 저장하는 범용 레지스터다.
레지스터주소레지스터 (AR)데이터 또는 명령어가 저장된 메모리의 주소를 저장한다.
특수프로그램 카운터(PC)다음에 실행할 명령어의 위치(코드의 행 번호)를 저장한다.
명령어 레지스터(IR)현재 실행 중인 명령어를 저장한다.
메모리 주소 레지스터(MAR)메모리 관리자가 접근해야 할 메모리의 주소를 저장한다.
메모리 버퍼 레지스터 (MBR)메모리 관리자가 메모리에서 가져온 데이터를 임시로 저장한다.
프로그램 상태 레지스터 (PSR)연산 결과(양수, 음수 등)를 저장한다.

버스의 종류

버스의 특징

버스특징
제어 버스제어장치와 연결된 버스로, CPU가 메모리와 주변장치에 제어 신호를 보내기 위해 사용한다. 메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어 신호를 보내기 때문에 양방향이다.
주소 버스메모리 주소 레지스터와 연결된 버스로, 데이터를 읽거나 쓸 때 메모리나 주변장치에 위치 정보를 보내기 위해 사용하며 단방향이다.
데이터 버스메모리 버퍼 레지스터와 연결된 버스로, 데이터의 이동이 양방향으로 이루어진다.

CPU 비트의 의미

  • 32bit CPU, 64bit CPU에서 32bit, 64bit는 CPU가 한 번에 처리할 수 있는 데이터의 최대 크기
  • 32bit CPU는 메모리에서 데이터를 읽거나 쓸 때 한 번에 최대 32bit를 처리할 수 있으며 레지스터 크기도 32bit, 버스 대역폭도 32bit
  • 버스의 대역폭(bandwidth)은 한 번에 전달할 수 있는 데이터의 최대 크기로 CPU가 한 번에 처리할 수 있는 데이터의 크기와 같음
  • 버스의 대역폭, 레지스터의 크기, 메모리에 한 번에 저장할 수 있는 데이터의 크기는 항상 같음
  • CPU가 한 번에 처리할 수 있는 데이터의 최대 크기를 워드(word)라고 하며 32bit CPU에서 1워드는 32bit, 64bit CPU에서 1워드는 64bit
  • 32bit CPU가 장착된 컴퓨터에서 32비트 용 운영체제를, 64bit CPU는 64bit 용 운영체제를 설치한 후 사용

메모리의 종류와 부팅

메모리의 종류

휘발성 메모리(volatility memory)

  • DRAM (Dynamic RAM)
    • 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 함
  • SRAM (Static RAM)
    • 전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없음
  • SDRAM (Synchronous Dynamic Random Access Memory)
    • 클록식 (펄스)이 발생할 때마다 데이터를 저장하는 동기 DRAM

비휘발성 메모리 (non-volatility memory)

  • 플래시 메모리 (flash memory)
    • 디지털카메라, MP3 플레이어, USB 드라이버 같이 전력 없어도 데이터 보관
  • SSD
    • 가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 높은 내구성으로 많이 사용

롬의 종류

  • 마스크 롬 (mask ROM) : 데이터를 지우거나 쓸 수 없음
  • PROM (Programmable ROM) : 전용 기계를 이용하여 데이터를 한 번만 저장할 수 있음
  • EPROM (Erasable Programmable ROM) : 데이터를 여러 번 쓰고 지울 수 있음

메모리 보호

  • 시분할 기법을 사용하는 현대의 운영체제는 여러 프로그램을 동시에 실행하므로 메모리 보호가 매우 중요
  • 사용자 프로세스가 CPU를 차지해 작업을 진행하면 운영체제 작업이 중단되는데 사용자 작업으로부터 메모리를 보호하려면 하드웨어의 도움이 필요
  • 메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터 (bound register)에 저장하고 현재 진행 중인 작업이 차지하고 있는 메모리의 크기 (마지막 주소까지의 차이)를 한계 레지스터 (limit register)에 저장
  • 사용자 작업이 진행되는 동안 두 레지스터의 주소 범위를 벗어나는지 하드웨어 측면에서 점검함으로써 메모리 보호)

컴퓨터 성능 향상 기술 👍 (중요)

버퍼

버퍼

  • 속도에 차이가 있는 두 장치 사이에서 그 차이를 완하하는 역할을 하는 장치
  • 일정량의 데이터를 모아 옮김으로서 속도의 차이를 완화

스풀

  • CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼
  • [예] 스풀러
    • 인쇄할 내용을 순차적으로 출력하는 소프트웨어로 출력 명령을 내린 프로그램과 독립적으로 동작
    • 인쇄물이 완료될 때까지 다른 인쇄물이 끼어들 수 없으므로 프로그램 간에 배타적임

캐시

  • 메모리와 CPU 간의 속도 차이 (BSB와 FSB의 속도 차이)를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소
  • 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다놓음
  • CPU는 메모리에 접근해야 할 때 캐시를 먼저 방문하여 원하는 데이터가 있는지 찾아봄.

캐시의 구조

  • 캐시 히트 (cache hit) : 캐시에서 원하는 데이터를 찾는 것으로, 그 데이터를 바로 사용
  • 캐시 미스 (cache miss) : 캐시에 원하는 데이터 없으면 메모리로 가서 찾음
  • 캐시 적중률 (cache hit ratio) : 캐시 히트 되는 비율로 일반적인 컴퓨터의 캐시 적중률은 약 90%

즉시 쓰기 (write through)

  • 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식
  • 메모리와의 빈번한 데이터 전송으로 인해 성능이 느려짐
  • 메모리의 최신 값이 항상 유지되기 때문에 급작스러운 정전에도 데이터를 잃어버리지 않음

지연 쓰기 (write back)

  • 캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영하는 방식
  • 카피백 (copy back)이라고도 함
  • 메모리와의 데이터 전송 횟수가 줄어들어 시스템의 성능을 향상할 수 있음
  • 메모리와 캐시된 데이터 사이의 불일치가 발생할 수도 있음

L1 캐시와 L2 캐시

  • 캐시는 명령어와 데이터의 구분 없이 모든 자료를 가져오는 일반 캐시, 명령어와 데이터를 구분하여 가져오는 특수 캐시로 구분
  • 일반 캐시 : 메모리와 연결되기 때문에 L2(Level 2) 캐시라고 부름
  • 특수 캐시 :CPU 레지스터에 직접 연결되므로 L1(Level 1) 캐시라고 부름

저장장치의 계층 구조

저장장치의 계층 구조

  • 개념
    • 속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 저장장치를 반대쪽에 배치에 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법
  • 이점
    • CPU와 가까운 쪽에 레지스터나 캐시를 배치하여 CPU가 작업을 빨리 진행할 수 있음
    • 메모리에서 작업한 내용을 하드디스크와 같이 저렴하고 용량이 큰 저장장치에 영구적으로저장할 수 있음.

인터럽트

폴링 (polling) 방식

  • CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식
  • CPU가 입출력장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 데이터를 처리
  • CPU가 명령어 해석과 실행이라는 본래 역할 외에 모든 입출력까지 관여하므로 작업 효율 떨어짐

인터럽트 (interrupt) 방식

  • 입출력 관리자가 대신 입출력을 해주는 방식
  • CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로서 시스템의 효율을 높임
  • 데이터의 입출력이 이루어지는 동안 CPU가 다른 작업을 할 수 있음

인터럽트

  • 입출력 관리자가 CPU에 보내는 완료 신호

인터럽트 번호

  • 많은 주변장치 중 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위해 사용
  • 윈도우 운영체제에서는 IRQ라 부름

인터럽트 벡터

  • 여러 개의 입출력 작업을 한꺼번에 처리하기 위해 여러 개의 인터럽트를 하나의 배열로 만든 것

인터럽트 방식의 동작 과정

직접 메모리 접근

직접 메모리 접근 (Direct Memory Access; DMA)

  • 입출력 관리자가 CPU의 허락 없이 메모리에 접근할 수 있는 권한
  • 메모리는 CPU 작업 공간이지만, 데이터 전송을 지시 받은 입출력 관리자는 직접 메모리 접근 권한이 있어야만 작업을 처리할 수 있음

메모리 맵 입출력

메모리 맵 입출력 (Memory Mapped I/O; MMIO)

  • 메모리의 일정 공간을 입출력에 할당하는 기법

사이클 훔치기

사이클 훔치기

  • CPU와 직접 메모리 접근이 동시에 메모리에 접근하면 보통 CPU가 메모리 사용 권한을 양보
  • CPU의 작업 속도보다 입출력장치의 속도가 느리기 때문에 직접 메모리 접근에 양보하는 것으로, 이러한 상황을 사이클 훔치기라고 함.

멀티 프로세싱

멀티코어 시스템

멀티 프로세서 시스템 (multi processor system)

  • 컴퓨터의 성능을 높이기 위해 프로세서를 여러 개 설치하여 사용하는 시스템
  • 프로세서마다 레지스터와 캐시를 가지며, 모든 프로세서가 시스템 버스를 통하여 메인 메모리를 공유
  • 장점 : 많은 작업을 동시에 실행시킬 수 있음

멀티코어(multi-core) 시스템

  • 기존 시스템을 유지한 채 멀티 프로세싱을 할 수 있게 하는 시스템
  • 하나의 칩 (chip)에 CPU의 핵심이 되는 코어 (core)를 여러 개 만들어 여러 작업을 동시에 처리
  • 듀얼코어 (dual core)는 CPU의 주요 기능을 담당하는 코어가 2개, 쿼드코어 (quad core)는 4개

CPU 멀티스레드

명령어 병렬 처리 (instruction parallel processing)

  • 하나의 코어에서 여러 개의 명령어를 동싱 ㅔ처리하는 것

CPU 멀티스레드 (multithread)

  • 여러 개의 스레드를 동시에 처리하는 방법
  • 스레드 (thread)란 CPU가 처리할 수 있는 작업의 단위

현대의 CPU

  • 하나의 칩에 멀티코어와 명령어 병렬 처리 기능을 한꺼번에 구현
  • 코어가 4개이지만 명령어 병렬 처리로 논리적인 코어의 수가 8개처럼 보임

CPU 관련 통용 법칙

  1. 무어의 법칙 (Moore's law)

    • CPU 속도가 24개월마다 2배 빨라진다는 법칙
    • 요즘에는 CPU 처리 속도를 올리는 대신 멀티코어를 장착해 CPU를 여러 개 사용하는 것과 같은 효과를 얻음
    • 하나의 코어에서 여러 개의 명령어를 동시에 실행하는 멀티스레드 기술도 많이 사용
  2. 암달의 법칙 (Amdahl's law)

    • 주변장치의 향상 없이 CPU 속도를 2GHz에서 4GHz로 늘리더라도 컴퓨터 성능이 2배 빨라지지는 않는다는 법칙
    • CPU 속도를 올려도 메모리를 비롯한 주변장치가 CPU 발전 속도를 따라가지 못해 컴퓨터의 전반적인 성능은 저하
    • 싱글코어 대신 듀얼코어를 사용하더라도 CPU 내 다른 부품의 병목 현상으로 CPU 성능이 2배가 되지 않음.

profile
민성 개발블로그

0개의 댓글