13 minute read

개인적인 의견이 포함되어 있고, 잘못된 정보가 있을 수 있습니다.

컴퓨터

  • 구체적인 시점에서 컴퓨터는 이진수(비트) 계산기이고 추상적인 시점에서는 명령어를 처리하여 인간을 돕는 도우미

컴퓨터 구조

  • 컴퓨터가 이해하는 정보와 컴퓨터의 핵심 부품의 총칭

데이터

  • 0과 1로 이루어진, 컴퓨터가 이해하는 숫자, 문자, 이미지, 동영상 등 정적인 정보

명령어(Instruction)

  • 데이터를 움직이고 컴퓨터를 작동시키는 정보

CPU

  • 메모리상의 명령어를 해석하고 실행하기 위한 부품들의 집합
    • ALU(산술연산장치) : 이진수 연산을 수행하는 장치
    • 제어장치 : 메모리의 명령어와 데이터를 레지스터로 가져오고 해석하는 장치
    • 레지스터 : 연산에 사용될 명령어 및 데이터가 저장되는 공간

주기억장치(Memory)

  • 현재 실행중인 프로그램의 명령어와 데이터가 저장되는 공간

보조기억장치

  • 실행중이지 않은 프로그램이 저장되는 공간

입출력장치

  • 컴퓨터와 인간 간의 의사소통을 위한 장치

메인보드

  • 컴퓨터 부품들이 정보를 주고받을 수 있도록 통로를 제공하는 장치

시스템 버스

  • 컴퓨터의 네 가지 핵심 부품을 연결하는 버스
    • 주소 버스 : 주소를 주고 받는 통로
    • 데이터 버스 : 명령어와 데이터를 주고 받는 통로
    • 제어 버스 : 제어 신호를 주고 받는 통로

비트(Bit)

  • 0과 1로 이루어진, 컴퓨터가 이해할 수 있는 최소 정보 단위

워드(Word)

  • CPU가 한 번에 처리할 수 있는 정보량(‘이해할 수 있는’이 아닌 ‘처리할 수 있는’)
  • 보통 32비트나 64비트

문자 집합

  • 컴퓨터가 인식하고 표현할 수 있는 문자의 모음

인코딩(Incoding)

  • 인간이 가진 정보를 컴퓨터가 이해할 수 있도록 비트로 변환하는 과정

디코딩(Decoding)

  • 컴퓨터가 가진, 비트로 이루어진 정보를 인간이 이해할 수 있도록 변환하는 과정

아스키(ASCII)

  • 영어 알파벳, 숫자, 일부 특수 문자를 포하하는 초창기 문자 집합

저급 언어

  • 컴퓨터가 이해하고 실행할 수 있는 언어(명령어)
  • 기계어 : 비트로 이루어진, 컴퓨터만을 위한 언어
  • 어셈블리어 : 기계어를 인간이 읽기 편한 형태로 번역한 언어

고급 언어

  • 저급 언어를 인간이 이해하기 쉽게 만든 언어(소스 코드)
    • 컴파일 언어 : 소스 코드 전체가 저급 언어로 변환되는 실행되는 언어
    • 인터프리터 언어 : 소스 코드 한 줄씩 저급 언어로 변환되고 실행되는 언어

목적 코드(Object code)

  • 소스 코드를 컴파일하여 만들어진 저급 언어를 일컫는 말

링킹(Linking)

  • 목적 코드 외부의 기능을 목적 코드와 연결하여 실행 코드를 만드는 작업

연산 코드(Operation code)

  • 명령어의 구성에서 연산 코드 필드에 담기는, 명령어가 수행해야 할 연산

오퍼랜드(Operand)

  • 명령어의 구성에서 오퍼랜드 필드에 담기는, 연산에 사용할 데이터, 또는 데이터가 저장된 위치

유효 주소(Effective address)

  • 연산의 대상이 되는 데이터가 저장된 위치

주소 지정 방식(Addressing mode)

  • 오퍼랜드 필드에 명시될 데이터의 유효 주소를 찾는 방식
    • 즉시 주소 지정 방식(Immediate addressing mode) : 연산에 사용될 데이터를 직접 명시하는 방식
    • 직접 주소 지정 방식(Direct addressing mode) : 유효 주소를 직접 명시하는 방식
    • 간접 주소 지정 방식(Indirect addressing mode) : 유효 주소가 저장된 주소를 명시하는 방식
    • 레지스터 주소 지정 방식(Register addressing mode) : 데이터가 저장된 레지스터의 주소를 명시하는 방식
    • 레지스터 간접 주소 지정 방식(Register indirect addressing mode) : 유효 주소가 저장된 레지스터의 주소를 명시하는 방식
    • 스택 주소 지정 방식(Stack addressing mode) : 스택에 저장된 데이터의 주소를 명시하는 방식
    • 변위 주소 지정 방식(Displacement addressing mode) : 오퍼랜드 필드의 값과 특정 레지스터의 값을 더하여 유효 주소를 얻어내는 방식

클럭(Clock)

  • 컴퓨터의 부품들이 동일한 박자로 일할 수 있도록 하는 시간 단위

레지스터(Register)

  • 연산에 사용될 명령어와 데이터(데이터의 주소)가 CPU 내에서 저장되는 공간
    • 프로그램 카운터(PC : Program Counter) : 메모리에서 가져올 명령어의 주소를 저장하는 레지스터
    • 명령어 레지스터(IR : Instruction Register) : 해석할 명령어를 저장하는 레지스터
    • 메모리 주소 레지스터(MAR : Memory Address Register) : 메모리의 주소를 저장하는 레지스터
    • 메모리 버퍼 레지스터(MBR : Memory Buffer Register) : 메모리와 주고 받을 값(명령어, 데이터)이 저장되는 레지스터
    • 범용 레지스터(General purpose register) : 데이터와 주소를 모두 저장할 수 있는 레지스터
    • 플래그 레지스터(Flag register) : 연산 결과 또는 CPU의 상태에 대한 부가적인 정보를 저장하는 레지스터
    • 스택 포인터(Stack pointer) : 스택에 마지막으로 저장한 값의 위치를 저장하는 레지스터
    • 베이스 레지스터(Base register) : 특정 연산의 기준이 되는 메모리 상의 주소를 저장하는 레지스터

명령어 사이클

  • 명령어 인출과 실행이라는, 명령어를 처리하는 정형화된 흐름

인터럽트(Inturpt)

  • 명령어 사이클을 방해하는 제어 신호
    • 동기(내부) 인터럽트(Synchronous interrupts) : 예외(Exception)라고도 하며, 컴퓨터 내부에서 발생시키는 인터럽트, CPU가 발생시키기 때문에 자동 동기화된다고 볼 수 있음.
    • 비동기(외부) 인터럽트(Asynchronous interrupts) : 컴퓨터 외부(입출력장치)에서 발생하는 인터럽트, 외부에서 발생하기 때문에 CPU와 동기화 작업이 필요함.

인터럽트 서비스 루틴(ISR)

  • 비동기 인터럽트를 처리하기 위한 메모리 상의 프로그램

인터럽트 벡터

  • CPU가 ISR을 실행하기 위한 인터럽트 식별 정보

코어(Core)

  • 명령어를 실행하기 위한 ALU + 제어장치 + 레지스터 세트

스레드(Thread)

  • 하드웨어적 스레드 : 코어가 한 번에 처리할 수 있는 명령어의 수, 레지스터 세트의 수와 같음
  • 소프트웨어적 스레드 : 하나의 프로그램 내에서 독립적으로 실행될 수 있는 작업 흐름

명령어 병렬 처리(ILP : Instruction-Level Parallelism)

  • 명령어를 동시에 처리하여 CPU의 효율을 높이는 방법
    • 파이프 라이닝(Pipelining) : 명령어 처리 과정을 인출, 해석, 실행의 단계로 나눴을 떄 동일한 단계가 겹치지 않게끔 명령어를 겹쳐서 실행하는 방법
    • 슈퍼 스칼라(Superscalar) : 여러 파이프 라인을 두고 명령어를 처리하는 방법
    • 비 순차적 명령어 처리(OoOE : Out-of-order execution) : 명령어를 순차적으로 처리하지 않고 명령어의 실행 순서를 바꾸어서 파이프 라이닝을 유지하는 방법

파이프 라인 위험(Pipeline hazard)

  • 파이프 라이닝을 수행할 때 특정 상황에서 CPU의 성능 향상에 실패하는 경우
    • 데이터 위험(Data hazard) : 명령어 간 데이터 의존성에 의해 파이프라이닝을 실행할 수 없음에 따라 발생하는 위험
    • 제어 위험(Control hazard) : 프로그램 카운터의 갑작스러운 변화에 의해 실행 예정이었던 명령어의 의미가 사라짐에 따라 발생하는 위험
    • 구조적 위험(Strucural hazard) : 명령어들을 겹쳐서 실행할 때 서로 다른 명령어가 동시에 자원을 사용하려할 때 발생하는 위험

명령어 집합(Instruction Set Architecture)

  • 특정 CPU가 이해할 수 있는 명령어 모음으로 하드웨어가 소프트웨어를 어떻게 이해할지에 대한 약속

CISC(Complex Instruction Set Computer)

  • 복잡하고 다양한 수의 가변 길이 명령어를 사용해 적은 수의 명령어로 프로그램을 실행하는 CPU

RISC(Reduced Instruction Set Computer)

  • 짧고 규격화된 고정 길이 명령어를 사용해 파이프라이닝에 최적화된 CPU

RAM(Random access memory)

  • 실행할 프로그램이 저장되는 휘발성 저장 장치
    • DRAM(Dynamic RAM) : 시간이 지나면 저장된 데이터가 점차 사라지는 RAM
    • SRAM(Static RAM) : 시간이 지나도 저장된 데이터가 변하지 않는 RAM
    • SDRAN(Synchronous Dynamic RAM) : 클럭 신호에 맞춰 CPU와 정보를 주고받을 수 있는 RAM
    • DDR SDRAM(Double Data Rate SDRAM) : 대역폭을 넓혀 속도를 빠르게 만든 SDRAM

메모리 주소

  • 물리 주소(Physical address) : 메모리(하드웨어) 자신이 사용하는 변하지 않는 절대 주소
  • 논리 주소(Logical address) : 프로그램(소프트웨어) 자신이 사용하는 가변적인 상대 주소

메모리 관리 장치(MMU : Memory Management Unit)

  • 논리 주소와 물리 주소 간의 변환을 위해 CPU와 주소 버스 사이에 위치한 하드웨어

저장 장치 계층 구조(Memory Hierarchy)

  • CPU와의 거리를 기준으로 저장 장치를 계층화하여 표현한 구조

캐시 메모리(Cache Memory)

  • CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 CPU가 사용할 법한 데이터를 저장하는 장치
    • 캐시 히트(Cache Hit) : 메모리에서 가져온 캐시 속 데이터가 CPU에서 할용되는 경우
    • 캐시 미스(Cache Miss) : 메모리에서 가져온 캐시 속 데이터가 CPU에서 할용되지 못하는 경우
    • 캐시 적중률(Cache hit ratio) : 캐시가 히트되는 비율 -> 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

참조 지역성의 원리(Locality of reference)

  • 캐시가 CPU에서 사용할 데이터를 메모리로부터 가져오는 원칙
    • 시간 지역성(Temporal locality) : CPU가 최근에 접근했던 메모리에 다시 접근하려는 경향
    • 공간 지역성(Spatial locality) : CPU가 이전에 접근했던 메모리 근처로 접근하려는 경향

하드 디스크(Hard Disk Drive)

  • 자석의 성질을 이용해 데이터를 저장하는 보조기억장치
  • 하드 디스크의 구성 :
    • 플래터(Platter) : 데이터가 저장되는 공간, 자기 물질(작은 자석)로 구성되고, 이 물질들이 N극과 S극, 즉 0과 1을 나타냄, 원형 모양
    • 스핀들(Spindle) : 플래터를 회전시켜 고정된 헤더가 작업을 할 수 있게 하는 장치
    • 헤드(Head) : 플래터를 대상으로 데이터를 읽고 쓰는 장치
    • 디스크 암(Disk arm) : 헤드를 원하는 위치로 이동시키는 장치
    • 트랙(Track) : 플래터를 여러 동심원으로 나눈 것 중 하나
    • 섹터(Sector) : 트랙의 한 조각, HDD의 가장 작은 전송단위
    • 실린더(Cylinder) : 여러 겹의 플래터 상의 트랙을 연결한 단위, 연속된 정보 저장 시 디스크 암의 이동거리가 줄어듬.

하드 디스크의 데이터 접근

  • 탐색 시간(Seek time) : 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
  • 회전 지연(Rotational latency) : 헤드가 있는 곳으로, 접근하려는 데이터가 있는 플래터의 부분을 이동시키기 위해 플래터를 회전시키는 시간
  • 전송 시간(Transfer time) : 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간

플래시 메모리(Flash memory)

  • 전기 신호로 데이터를 읽고 쓰는 보조기억장치
  • 플래시 메모리의 구성 :
    • 셀(Cell) : 플래시 메모리에서 데이터를 저장하는 가장 작은 단위
      • SLC(Single Level Cell) : 한 셀에 1비트를 저장할 수 있는 셀
      • MLC(Multiple Level Cell) : 한 셀에 2비트를 저장할 수 있는 셀
      • TLC(Triple Level Cell) : 한 셀에 3비트를 저장할 수 있는 셀
    • 페이지(Page) : 셀들이 모여서 만들어진 단위, 읽기/쓰기의 단위
    • 블록(Block) : 페이지가 모여서 만들어진 단위, 삭제의 단위
    • 플레인(Plane) : 페이지가 모여서 만들어진 단위
    • 다이(Die) : 플레인이 모여서 만들어진 단위

RAID(Redundant Array of Independent Disks)

  • 여러개의 물리적 보조기억장치를 하나의 논리적 보조기억장치로 사용하는 기술
    • RAID 0 : 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 방식
      • 스트라입(Stripe) : 줄무늬처럼 분산되어 자장된 데이터
      • 스트라이핑(Striping) : 줄무늬처럼 데이터를 분산하여 저장하는 방법
    • RAID 1 : 완전한 복사본을 만드는 방식(미러링 : Mirroring)
    • RAID 4 : 오류를 검출하고 복구하기 위한 정보(패리티 비트 : Parity bit)를 저장한 장치를 두는 구성 방식
    • RAID 5 : 패리티 정보를 분산하여 저장하는 방식
    • RAID 6 : RAID 5 방식과 같지만 두 개의 패리티 정보를 저장하는 방식

장치 컨트롤러(Device Controller)

  • CPU와 입출력 장치를 연결하는 하드웨어
    • 데이터 레지스터(Data Register) : CPU와 입출력장치 사이에 주고받을 데이터가 저장되는 레지스터(=버퍼)
    • 상태 레지스터(Status Register) : 입출력장치가 작업 준비가 되었는지, 작업이 완료되었는지, 오류는 없는지 등의 상태 정보가 저장되는 레지스터
    • 제어 레지스터(Control Register) : 입출력장치가 수행할 내용에 대한 제어 정보와 명령이 저장되는 레지스터

버퍼링(Buffering)

  • 버퍼(Buffer)라는 공간에 데이터를 조금씩 모아 한 번에 보내거나, 한번에 많은 데이터를 받아 조금씩 보내 전송률이 다른 장치간의 전송률을 맞추는 기술

장치 드라이버(Device Driver)

  • 장치 컨트롤러를 제어하여 장치 컨트롤러가 컴퓨터와 정보를 주고받을 수 있게 하는 프로그램

다양한 입출력 방법

  • 프로그램 입출력(Program I/O) : 프로그램 속 명령어로 입출력을 제어하는 방법
    • 메모리 맵 입출력(Memory-Mapped I/O) : 컴퓨터의 메모리와 장치 컨트롤러의 주소 공간을 하나로 간주하는 방식
    • 고립형 입출력(Isolation I/O) : 컴퓨터의 메모리와 장치 컨트롤러의 주소 공간을 따로 간주하는 방식
  • 인터럽트 기반 입출력(Interrupt-Driven I/O) : 인터럽트(제어 신호)를 통해 입출력을 제어하는 방법
  • DMA 입출력 : CPU를 거치지 않고 입출력 장치가 메모리에 바로 접근하여 입출력을 제어하는 방법

운영체제(Operating System)

  • 실행할 프로그램에 자원을 할당하는 특별한 프로그램

커널 영역(Kernel space)

  • 운영체제가 적재되는 메모리 상의 공간

사용자 영역(User space)

  • 사용자가 실행할 프로그램이 적재되는 커널 영역을 제외한 메모리 상의 공간

커널(Kernel)

  • 운영체제의 핵심서비스(하드웨어 조작, 접근 / 프로그램 실행)를 담당하는 부분(명령어)

이중 모드(Dual mode)

  • CPU의 명령어 실행모드를 2가지로 나눈 것
    • 사용자 모드(User mode) : CPU가 메모리 내의 커널 영역의 명령어를 실행할 수 없는 모드
    • 커널 모드(Kernel mode) : CPU가 메모리 내의 커널 영역의 명령어를 실행할 수 있는 모드

시스템 호출(System Call)

  • 응용 프로그램이 운영체제의 명령어를 실행하기 위해 CPU에게 요청하는 것

프로세스(Process)

  • 메모리에 적재되어 현재 실행중인 프로그램
    • 포그라운드 프로세스(Foreground Process) : 사용자가 보는 앞에서 실행되는 프로세서
    • 백그라운드 프로세스(Background Process) : 사용자가 보지 못하는 뒤편에서 실행되는 프로세스

프로세스 제어 블록 (PCB : Process Controll Block)

  • 운영체제가 프로세스의 실행 순서를 관리하기 위해 사용하는 커널 내 저장 공간
    • 프로세스 ID(PID) : 특정 프로세스를 식별하기 위해 부여되는 고유 번호
    • 레지스터 값 : 프로세스가 자기 실행 차례가 왔을 때 사용하기 위한 프로세스가 이전에 사용하던 레지스터 값
    • 프로세스 상태 : 프로세스가 자원을 대기 하는 상태나 사용 중인 상태를 나타내는 값
    • CPU 스케줄링 정보 : 프로세스가 어떤 순서로 CPU를 할당 받을 지에 대한 정보
    • 메모리 관리 정보 : 프로세스가 메모리의 어느 주소에 저장되었는지를 나타내는 정보
    • 사용한 파일과 입출력장치 목록 : 프로세스가 사용한 특정 입출력장치와 어떤 파일을 열었는지에 대한 정보

문맥(Context)

  • 한 프로세스의 수행을 재개하기 위해 기억해야 할 정보
  • 문맥 교환(Context Switching) : 기존 프로세스의 문맥을 PCB에 백업하고, 실행할 프로세스의 문맥을 PCB로 부터 복구하여 새로운 프로세스를 실행하는 것

프로세스의 메모리 영역

  • 정적 할당 영역 : 프로세스에 할당된 메모리 공간의 크기가 변하지 않는 영역
    • 코드 영역(Code segment) : 프로그램의 명령어가 저장되는 읽기전용 공간
    • 데이터 영역(Data segment) : 프로그램이 실행되는 동안 유지되는 데이터를 저장하는 공간(전역 변수)
  • 동적 할당 영역 : 프로세스에 할당된 메모리 공간의 크기가 프로세스의 실행과정에서 변할 수 있는 영역
    • 힙 영역(Heap segment) : 사용자가 직접 할당 가능한 공간, 메모리 누수(Memory Leak)때문에 반환이 필수적임.
    • 스택 영역(Stack segment) : 일시적인 데이터를 저장하는 공간(매개 변수, 지역 변수)

프로세스의 상태

  • 생성 상태 : 이제 막 메모리에 적재되어 PCB를 할당받은 상태
  • 준비 상태 : CPU를 할당받을 준비가 된 상태
  • 실행 상태 : CPU를 할당받아 실행 중인 상태
  • 대기 상태 : 입출력장치를 사용한 프로세스가 입출력장치의 작업이 끝나기를 기다리는 상태
  • 종료 상태 : 운영체제에 의해 PCB와 프로세스가 사용한 메모리에서 정리당한 상태

CPU 스케줄링(CPU Scheduling)

  • 운영체제가 프로세스에게 공정하게 CPU를 할당하는 것
    • 선점형 스케줄링(Preemptive Scheduling) : 대기 순서에 상관없이 우선 순위가 높은 프로세스에게 자원을 할당하는 스케줄링
    • 비선점형 스케줄링(Non-preemptive Scheduling) : 우선 순위에 상관없이 대기 순서대로 프로세스에게 자원을 할당하는 것

스케줄링 큐(Scheduling Queue)

  • 자원을 할당받기 위해 프로세스들이 대기하는 공간
    • 준비 큐(Ready Queue) : CPU를 이용하고 싶은 프로세스들이 서는 줄
    • 대기 큐(Waiting Queue) : 입출력장치를 이용하기 위해 대기 상태에 접어든 프로세스들이 서는 줄

스케줄링 알고리즘

  • 선입 선처리 스케줄링(First Come First Served Scheduling) : 준비 큐에 삽입된 프로세스 순서대로 CPU를 할당하는 스케줄링
  • 최단 작업 우선 스케줄링(Shortest Job First Scheduling) : 준비 큐에 삽입된 프로세스 중 CPU 사용 시간이 가장 짧은 프로세스부터 CPU를 할당하는 스케줄링
  • 라운드 로빈 스케줄링(Roung Robin Scheduling) : CPU를 사용할 수 있는 정해진 시간(타임 슬라이스)을 도입한 선입 선처리 스케줄링
  • 최소 잔여 시간 우선 스케줄링(Shortest Remaining Time) : 최단 작업 우선 스케줄링 + 라운드 로빈 스케줄링
  • 우선순위 스케줄링(Priority Scheduling) : 프로세스들에 우선순위를 부여하고, 가장 높은 우선순위를 가진 스케줄링부터 실행하는 스케줄링
  • 다단계 큐 스케줄링(Multilevel Queue Scheduling) : 우선 순위별로 준비 큐를 따로 사용하는 스케줄링
  • 다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling) : 프로세스가 준비 큐 사이를 이동하게 하는 에이징 기법을 사용한 다단계 큐 스케줄링

호위 효과(Convoy Effect)

  • 준비 큐 내에서 CPU 사용 시간이 긴 프로세스에 의해 CPU 사용 시간이 짧은 프로세스가 오랜 시간 기다리는 현상

기아 현상(Starvation)

  • 우선 순위가 높은 프로세스에 의해 우선 순위가 낮은 프로세스가 계속해서 CPU를 사용하지 못하는 현상

에이징(Aging)

  • 시간이 지남에 따라 우선 순위가 낮은 프로세스의 우선 순위를 높혀 기아 현상을 해결하는 방법

동기화(Synchronization)

  • 실행 순서 제어를 위한 동기화
  • 상호 배제를 위한 동기화 3원칙
    • 상호 배제(Mutual Exclusion) : 한 프로세스가 임계 구역에 들어갔을 때, 다른 프로세스는 임계 구역에 들어올 수 없다.
    • 진행(Progress) : 임계 구역이 비었을 때, 프로세스는 들어갈 수 있다.
    • 유한 대기(Bounded waiting) : 임계 구역에 들어가려하는 프로세스는 무한 대기하지 않고, 언젠가는 임계 구역에 들어갈 수 있다.

공유 자원(Shared resources)

  • 여러 프로세스가 공동으로 사용하는 자원(전역 변수, 파일, 입출력장치, 보조기억장치..)

임계 구역(Critical section)

  • 공유 자원에 접근하는 코드 중 동시에 실행되면 문제가 발생하는 코드

레이스 컨디션(Race condition)

  • 여러 프로세스가 동시에 임계 구역의 코드를 실행한 상황

동기화 기법

  • 뮤텍스 락(Mutex lock : Mutual exclusion lock) : 임계 구역을 잠그거나 열어서 동시에 접근하지 않도록 만드는 상호 배제의 도구
    • 바쁜 대기(Busy waiting) : 임계 구역에 진입하기 위해 자물쇠의 상태를 계속 확인하는 상태
  • 세마포(Semaphore) : 임계 구역 내에 공유 자원이 여러 개 있을 때의 동기화 도구
  • 모니터(Monitor) : 공유 자원에 접근하기 위한 인터페이스와 조건 변수를 사용한 동기화 도구

교착 상태(Dead lock)

  • 여러개의 프로세스가 서로의 자원을 얻으려고 무한정 대기하는 상태
  • 교착 상태 발생 조건(모두 만족했을 때)
    • 상호 배제(Mutual Exclusion) : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때
    • 점유와 대기(Hold and Wait) : 자원을 할당 받은 상태에서 다른 자원을 할당 받기를 기다리는 상태
    • 비선점(NonPreemtive) : 먼저 대기중인 프로세스가 먼저 자원를 할당받는 상황
    • 원형 대기(Circular Wait) : 프로세스가 원의 형태로 자원을 얻으려 대기하는 상태

스와핑(Swapping)

  • 메모리 내의 사용되지 않는 프로세스가 보조기억장치로 가고, 사용될 프로세스가 보조기억장치에서 메모리로 이동하는 메모리 관리 기법
    • 스왑 공간(Swap space) : 사용되지 않는 프로세스가 내려오게 되는 보조기억장치 속 공간
    • 스왑 아웃(Swap-out) : 프로세스가 메모리에서 보조기억장치로 이동하는 것
    • 스왑 인(Swap-in) : 프로세스가 보조기억장치에서 메모리로 이동하는 것

메모리 할당

  • 프로세스에 메모리 공간을 할당하는 것
    • 최초 적합(First fit) : 메모리 내의 빈 공간을 순서대로 탐색하다가 프로세스를 적재할 수 있는 공간을 발견하면 해당 공간에 프로세스를 적재하는 것
    • 최적 적합(Best fit) : 메모리 내 프로세스가 들어갈 수 있는 가장 작은 공간에 프로세스를 할당하는 것
    • 최악 적합(Worst fit) : 메모리 내 프로세스가 들어갈 수 있는 가장 큰 공간에 프로세스를 할당하는 것

외부 단편화(External fragmentation)

  • 프로세스에 메모리를 할당하는 과정에서 프로세스를 할당할 수 없는 작은 공간이 생겨 메모리가 낭비되는 현상

가상 메모리(Virtual Memery)

  • 프로그램 일부만 메모리에 적재하여 실제 물리 메모리보다 큰 프로세스를 실행할 수 있게 하는 기술

페이징(Paging)

  • 프로세스와 메모리를 동일한 단위로 나누어 프로세스에 메모리를 할당하는 가상 메모리 기법
    • 페이지(Page) : 프로세스를 일정하게 나눈 단위
    • 프레임(Frame) : 메모리 공간을 페이지와 동일하게 나눈 단위
    • 페이지 아웃(Page-out) : 사용되지 않는 페이지를 메모리에서 보조기억장치로 이동시키는 것
    • 페이지 인(Page-in) : 사용할 페이지를 보조기억장치에서 메모리로 이동시키는 것

페이지 테이블

  • 페이지로 나뉜 프로세스가 연속적인것처럼 CPU에게 보이기위해 페이지가 존재하는 실제 프레임 주소를 기록한 표

내부 단편화(Internal fragmentation)

  • 프로세스를 페이지 단위로 나눌 때, 페이지를 다 채우지 못한 채 프레임에 적재되어 메모리가 낭비되는 현상

요구 페이징(Demand paging)

  • 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만 적재하는 기법

페이지 교체 알고리즘

  • FIFO 페이지 교체 알고리즘(First-In First-Out Page Replacement Algorithm) : 메모리에 가장 먼저 적재된 페이지부터 교체하는 알고리즘
  • 최적 페이지 교체 알고리즘(Optimal Page Replacement Algorithm) : 앞으로의 사용 빈도가 가장 낮은 페이지부터 교체하는 알고리즘
  • LRU 페이지 교체 알고리즘(Least Recently Used Page Replacement Algorithm) : 사용빈도가 가장 낮았던 페이지부터 교체하는 알고리즘

스래싱(Thrashing)

  • 페이지 교체가 자주 일어나 프로세스가 실제 실행되는 시간보다 페이징에 더 많은 소요시간이 들어 CPU의 효율이 떨어지는 현상

파일(File)

  • 의미 있고 관련 있는 정보의 논리적 단위

확장자(Extension)

  • 운영체제가 파일의 종류를 식별하는 수단

폴더(Folder)

  • 파일을 관리하기 위한 공간

경로(Path)

  • 절대 경로(Absolute Path) : 루트 폴더에서 자기 자신까지 이르는 고유한 경로
  • 상대 경로(Relative Path) : 현재 폴더부터 자기 자신까지 이르는 경로

파일 시스템(File System)

  • 보조기억장치에 파일과 폴더를 저장하고, 접근하게 하는 운영체재 내부 프로그램

파티셔닝(Partioning)

  • 저장장치의 논리적인 영역을 구획하는 작업
  • 파티션(Partition) : 파티셔닝에 의해 구획된 영역

포매팅(Formatting)

  • 저장장치의 파일 시스템을 결정하여 파일을 저장하고 관리하는 방식을 결정하고 새로운 데이터를 저장할 준비를 하는 작업

파일 할당(쓰기, 저장)

  • 연속 할당(Contiguous allocation) : 보조기억장치의 연속적인 블록에 파일을 순차적으로 저장하는 방식
  • 불연속 할당(Non-contiguous allocation) :
    • 연결 할당(Linked allocation) : 보조기억장치의 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태의 할당 방식, 데이터를 연결리스트 형식으로 관리
    • 색인 할당(Index allocation) : 파알의 모든 블록 주소를 색인 블록에 저장하여 데이터를 관리하는 방식

Categories:

Updated:

Leave a comment