면접을 위한 CS 전공지식 노트 - 운영체제/메모리

운영체제/메모리
면접을 위한 CS 전공지식 노트운영체제메모리
avatar
2025.04.24
·
48 min read

5527

운영체제의 기본 개념과 역할

운영체제는 컴퓨터 하드웨어와 소프트웨어 자원을 효율적으로 관리하고, 사용자와 응용 프로그램이 하드웨어를 쉽게 사용할 수 있도록 지원하는 시스템 소프트웨어입니다. 운영체제의 주요 목적은 시스템의 성능을 최적화하고, 자원을 안전하게 보호하며, 사용자에게 편리한 인터페이스를 제공하는데 있습니다. 참고로 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것을 펌웨어라고 합니다.

운영체제의 주요 역할

운영체제는 하드웨어와 사용자 프로그램 사이에서 중개자 역할을 하며, 시스템콜(System Call)이라는 인터페이스를 통해 커널에 접근합니다. 커널은 운영체제의 핵심 부분으로, 보안, 메모리, 프로세스, 파일 시스템, I/O 관리 등 시스템의 중추적 기능을 담당합니다.

  • CPU 및 프로세스 관리: 프로세스 생성/삭제, CPU 스케줄링, 자원 할당 및 반환.

  • 메모리 관리: 프로세스별 메모리 할당과 회수, 효율적 사용 및 보호.

  • 파일/저장장치 관리: 파일 생성/삭제/수정, 접근 권한 제어, 저장장치 공간 관리.

  • I/O 디바이스 관리: 다양한 입출력 장치와 데이터 송수신, 드라이버 관리.

  • 보안 및 보호: 자원 접근 제어, 데이터 무결성 및 시스템 안정성 유지.

운영체제의 구조와 구성요소

운영체제는 계층적으로 구성되어 있습니다.

계층

설명

유저 프로그램

사용자가 직접 실행하는 응용 프로그램

운영체제

  • 인터페이스: GUI(그래픽), CUI(명령어)등 사용자와 OS의 상호작용 창구

  • 시스템콜: 시스템 콜이란 운영체제가 커널에 접근하기 위한 인터페이스이며 유저 프로그램이 운영체제의 서비스를 받기위해 커널 함수를 호출할 때 사용됩니다. 이 과정을 통해 컴퓨터 자원에 대한 직접 접근을 차단할 수 있고 프로그램을 다른 프로그램으로부터 보호할 수 있습니다.

  • 커널: 운영체제의 핵심 부분으로, 항상 메모리에 상주하며 컴퓨터가 부팅될 때부터 종료될 때까지 자원을 관리합니다. 또한 응용 프로그램이 하드웨어를 직접 건드리지 못하게 하고, 커널을 통해서만 접근하게 하여 시스템의 안전성과 안정성을 보장합니다.

하드웨어

실제 물리적 장치(CPU, 메모리 디스크 등)

컴퓨터의 요소

컴퓨터 시스템은 여러 핵심 하드웨어 구성요소와 이를 관리하는 소프트웨어로 이루어집니다. 각 요소는 서로 긴밀하게 상호작용하며, 운영체제가 이들 자원을 효율적으로 관리합니다.

구성요소

설명

CPU

중앙처리장치. 산술논리연산자(ALU), 제어장치(CU), 레지스터 등으로 구성, 명령어 해석 및 실행, 연산 처리 담당.

DMA 컨트롤러

주변 장치가 CPU의 개입 없이 메모리와 직접 데이터를 전송할 수 있도록 지원하는 하드웨어. CPU 부하 분산 역할.

메모리

데이터를 일시적으로 저장하는 공간. RAM(주기억장치), 캐시, 레지스터 등 다양한 계층으로 구성.

타이머

프로그램 실행 시간 제한, 시간 관리 등 시스템의 시간 제어 담당.

디바이스 컨트롤러

I/O 장치(키보드, 마우스 등)와 컴퓨터 본체 간 데이터 송수신을 담당하는 장치. 각 장치는 자체 로컬 버퍼를 가짐.

CPU의 내부 구성과 동작

CPU는 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치를 말하며, 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행합니다. 운영체제의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 CPU가 이를 처리합니다.

  • 제어장치(CU): 명령어 해석, 실행 순서 제어, 입출력 장치와 통신 조정.

  • 산술논리연산장치(ALU): 산술 연산(덧셈, 뺄셈 등)과 논리 연산(AND, OR 등) 수행.

  • 레지스터: CPU 내의 초고속 임시 저장소. 연산 및 데이터 전달의 중간 매개체.

CPU의 연산 처리

CPU는 메모리에 적재된 명령어와 데이터를 레지스터로 불러와 연산을 수행하고, 결과를 다시 메모리에 저장합니다. 이 과정에서 제어장치가 전체 흐름을 관리합니다.

  1. 제어장치가 메모리에 계산할 값을 로드합니다. 또한, 레지스터에도 로드합니다.

  2. 제어장치가 레지스터에 있는 값을 계산하라고 산술논리연산장치에 명령합니다.

  3. 제어장치가 계산된 값을 다시 ‘레지스터에서 메모리로‘ 계산한 값을 저장합니다.

인터럽트

인터럽트는 특정 이벤트 발생 시 중앙 처리 장치(CPU)의 작업을 일시 중단시키는 것으로, 하드웨어 인터럽트와 소프트웨어 인터럽트 두 가지 주요 유형으로 분류됩니다. 인터럽트 발생 시, 인터럽트 백터를 참조하여 해당 인터럽트 서비스 루틴(ISR)이 우선순위에 따라 실행됩니다.

  • 하드웨어 인터럽트: I/O 디바이스 인터럽트

  • 소프트웨어 인터럽트: 시스템 콜 호출 시 발생하는 프로세스 오류

※ 인터럽트 핸들러 함수: 터럽트가 발생했을 때 이를 핸들링하기 위한 함수. 커널 내부의 IRQ를 통해 호출되며 request_irq()를 통해 인터럽트 핸들러 함수를 등록할 수 있습니다.

DMA (Direct Memory Access)컨트롤러와 디바이스 컨트롤러

DMA 컨트롤러는 I/O 디바이스가 시스템 메모리에 직접 접근하여 데이터를 읽거나 쓸 수 있도록 중재하는 하드웨어 장치입니다. 이는 CPU에 과도한 인터럽트 요청이 집중되는 것을 막아 CPU의 부하를 줄여주는 역할을 합니다. 또한, DMA 컨트롤러는 데이터 전송 과정에서 CPU와 동시에 메모리에 접근하는 것을 방지하여 데이터의 일관성과 시스템의 안정성을 확보합니다.

디바이스 컨트롤러는 내부적으로 명령을 저장하는 제어 레지스터, 상태를 나타내는 상태 레지스터, 그리고 데이터를 임시로 보관하는 로컬 버퍼 등을 가지고 있습니다. CPU가 모든 I/O 작업을 직접 처리하는 대신, 디바이스 컨트롤러가 각 디바이스의 특성에 맞춰 작동을 관리하고 CPU의 부담을 덜어주어 효율적인 시스템 운영을 가능하게 합니다.

특징

DMA 컨트롤러

디바이스 컨트롤러

주요 역할

I/O 디바이스와 메모리 간의 직접적인 데이터 전송 관리 (CPU 개입 최소화)

특정 I/O 디바이스 관리 및 CPU와의 통신 중재

연관 대상

시스템 전체의 메모리 접근 및 고속 데이터 전송 관련

각 I/O 디바이스 별로 존재

CPU 개입 정도

데이터 전송 시작 및 완료 시에만 CPU와 통신 (전송 중 CPU 개입 X)

I/O 작업 시작 및 완료 시 CPU와 통신

주요 목적

대용량 데이터의 고속 전송 및 CPU의 부하를 크게 줄여 시스템 효율성 극대화

각 디바이스의 효율적인 작동 및 CPU의 기본적인 I/O 부담 감소

내부 요소

주소 레지스터, 전송 크기 레지스터 등

제어 레지스터, 상태 레지스터, 로컬 버퍼 등

타이머

시스템 및 프로그램 실행에 시간 제한을 두고, 특정 작업 시간 초과 여부를 감시합니다.

메모리 계층 구조와 캐시

메모리 계층 구조는 속도, 용량, 비용 간의 절충점을 찾아 컴퓨터 시스템의 전체적인 성능을 최적화하기 위해 존재합니다. CPU에 가까운 계층일수록 속도는 빠르지만 용량이 작고 비싸며, CPU에서 멀어질수록 속도는 느려지지만 용량이 크고 저렴합니다. 자주 사용되는 데이터는 빠른 계층에 저장하여 접근 시간을 줄이고, 용량이 큰 데이터는 느리고 저렴한 계층에 저장하여 비용 효율성을 높이는 방식입니다.

계층

특징

레지스터

CPU 내부, 가장 빠름, 용량 매우 적음

캐시

CPU와 메인 메모리 사이, 빠름, 용량 적음

주기억장치

RAM, 속도/용량 중간, 휘발성

보조기억장치

HDD/SSD, 느림, 용량 큼, 비휘발성

캐시와 지역성

캐시는 처리 속도가 빠른 장치와 느린 장치 사이의 속도 차이 때문에 생기는 병목 현상을 줄이기 위해 자주 사용되는 임시 저장 공간입니다. 캐시는 앞으로 자주 사용될 가능성이 높은 데이터를 미리 복사해 두어 접근 시간을 단축시킵니다.

특히, CPU와 메인 메모리 사이의 속도 차이가 매우 크기 때문에, 이 둘 사이에는 속도가 더 빠르고 용량이 더 작은 여러 계층의 저장 공간(가장 빠른 레지스터부터 캐시 메모리)을 두어 데이터 접근 속도 불균형을 해결합니다.

캐시의 효율성은 지역성의 원리에 기반합니다. 지역성의 원리에는 두 가지 유형이 있습니다.

  • 시간 지역성 (Temporal Locality): 최근에 사용된 데이터는 가까운 미래에 다시 사용될 가능성이 높다는 원리입니다.

  • 공간 지역성 (Spatial Locality): 특정 데이터가 사용되면, 그 데이터와 인접한 메모리 주소에 있는 데이터도 함께 사용될 가능성이 높다는 원리입니다.

캐시매핑

캐시매핑이란 캐시가 히트되기 위해 매핑하는 방법을 말하며 CPU의 레지스터와 주 메모리(RAM) 간에 데이터를 주고 받을 때를 기반으로 설명합니다. 레지스터는 주 메모리에 비하면 굉장히 작고 주 메모리는 굉장히 크기 때문에 작은 레지스터가 캐시 계층으로써 역할을 잘 해주려면 이 매핑을 어떻게 하느냐가 중요합니다.

이름

설명

직접 매핑(directed mapping)

메모리가 1~100이 있고 캐시가 1~10이 있다면 1:1~10, 2:1~20··· 이런 식으로 맵핑하는 것을 말합니다. 처리가 빠르지만 충돌이 잦습니다.

연관 매핑(associative mapping)

순서를 일치시키지 않고 관련 있는 캐시와 메모리를 매핑합니다. 충돌이 적지만 모든 블록을 탐색해야 해서 속도가 느립니다.

집합 연관 매핑(set associative mapping)

직접 매핑과 연관 매핑을 합쳐 놓은 것입니다. 순서는 일치시키지만 집합을 둬서 저장하며 블록화되어 있기 때문에 검색은 좀 더 효율적입니다. 예를 들어 메모리가 1~100 있고 1~10이 있다면 캐시에는 1~5에는 1~50의 데이터를 무작위로 저장시키는 것을 말합니다.

이러한 캐시 구조와 매핑 방식을 통해 시스템은 데이터 접근 속도를 향상시키고 전체적인 성능을 높일 수 있습니다.

캐시히트와 캐시미스

캐시에서 원하는 데이터를 찾았다면 캐시히트라고 하며, 해당 데이터가 캐시에 없다면 주 메모리로 가서 데이터를 찾아오는 것을 캐시미스라고 합니다.

웹 브라우저의 캐시

소프트웨어적인 대표적인 캐시로는 웹 브라우저의 작은 저장소 쿠키, 로컬 스토리지, 세션 스토리지가 있습니다. 보통 사용자의 커스텀 정보나 인증 모듈 관련 사항들을 웹 브라우저에 저장해서 추후 서버에 요청할 때 자신을 나타내는 아이덴티티나 중복 요청 방지를 위해 쓰이며 오리진(origin == protocol + domain + port)에 종속됩니다.

종류

설명

쿠키

쿠키는 만료 기한이 있는 키-값 저장소 입니다. 4KB까지 데이터를 저장할 수 있고 만료기한을 정할 수 있습니다. 클라이언트 또는 서버에서 만료기한 등을 정할 수 있는데 보통 서버에서 만료기한을 정합니다.

로컬 스토리지

로컬 스토리지는 만료 기한이 없는 키-값 저장소 입니다. 5MB가지 저장할 수 있으며 웹 브라우저를 닫아도 유지 됩니다. HTML5를 지원하지 않는 웹 브라우저에서는 사용할 수 없으며 클라이언트에서만 수정 가능합니다.

세션 스토리지

세션 스토리지는 만료기한이 없는 키-값 저장소입니다. 탭 단위로 세션 스토리지를 생성하며, 탭을 닫을 때 해당 데이터가 삭제됩니다. 5MB까지 저장이 가능하며 HTML5를 지원하지 않는 웹 브라우저에서는 사용할 수 없습니다. 클라이언트에서만 수정 가능합니다.

데이터 베이스 캐싱 계층

데이터 베이스 시스템을 구축할 때도 메인 데이터베이스 위에 레디스(redis)를 '캐싱 계층'으로 둬서 성능을 향상시키기도 합니다.

가상 메모리와 메모리 관리

운영체제의 대표적인 할 일 중 하나가 메모리 관리입니다. 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하기 떄문입니다.

가상매모리(virture memory)

가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말합니다.

  • 가상 주소/물리 주소: 메모리관리장치(MMU)가 가장 주소를 실제 주소로 변환

  • 페이지 테이블: 가상-물리 주소 매핑 저장

  • TLB: 페이지 테이블 일부를 캐싱하여 주소 변환 속도 향상

페이지 폴트와 스와핑

페이지 폴트는 가상 메모리에 있는 데이터에 접근했지만 RAM에 없을 때 발생하며, 이때 스와핑은 RAM에서 사용하지 않는 영역을 디스크로 옮기고 필요한 데이터를 디스크에서 RAM으로 가져와 페이지 폴트가 발생하지 않은 것처럼 처리하는 과정입니다.

페이지 폴트와 그로 인한 스와핑은 다음 과정으로 이루어 집니다.

  1. 어떤 명령어가 유효한 가상주소에 접근했으나 해당 페이지가 만약 없다면 트랩이 발생되어 운영체제에 알리게 됩니다.

  2. 운영체제는 실제 디스크로부터 사용하지 않은 프레임을 찾습니다.

  3. 해당 프레임을 실제 메모리에 가져와서 페이지 교체 알고리즘을 기반으로 특정 페이지와 교체 합니다. (이때 스와핑이 일어납니다.)

  4. 페이지 테이블을 갱신 시킨 후 해당 명령어를 다시 시작합니다.

※ 페이지: 가상메모리를 사용하는 최소 크기 단위
※ 프레임: 실제 메모리를 사용하는 최소 크기 단위

스레싱(thrashing)

스레싱은 과도한 페이지 폴트로 인해 컴퓨터 성능이 심각하게 저하되는 현상입니다. 이는 메모리에 너무 많은 프로세스가 동시에 올라와 잦은 스와핑이 발생하면서 나타납니다. 페이지 폴트 발생 시 CPU 이용률이 낮아지면 운영체제는 더 많은 프로세스를 메모리에 로드하려 하고, 이는 스와핑을 더욱 심화시키는 악순환으로 이어집니다.

스레싱 해결 방법으로는 메모리 증설이나 저장 장치를 HDD에서 SSD로 교체하는 하드웨어적인 개선이 있습니다. 운영체제 차원에서는 작업 세트(Working Set)와 PFF(Page Fault Frequency) 기법을 활용할 수 있습니다.

종류

특징

작업세트(working set)

작업 세트는 프로세스의 과거 사용 이력인 지역성(locality)를 통해 결정된 페이지 집합을 만들어서 미리 메모리에 로드하는 것입니다.

PFF(Page Fault Frequenct)

PFF는 페이지 폴트 빈도를 조절하는 방법으로 상한선과 하한선을 만드는 방법입니다. 만약 상한선에 도달한다면 프레임을 늘리고 하한선에 도달한다면 프레임을 줄이는 것입니다.

메모리 할당 전략과 단편화

메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당하는데, 연속 할당과 불연속 할당으로 나뉩니다.

방식

특징

연속 할당

연속 할당은 메모리에 ‘연속적으로’ 공간을 할당하는 것을 말합니다. 이는 메모리를 미리 나누어 관리하는 고정 분할 방식과 매 시점 프로그램의 크기에 맞게 메모리를 분할하여 사용하는 가변 분할 방식이 있습니다.

  • 고정 분할 방식: 메모리를 미리 나누어 관리하는 방식이며, 메모리가 미리 나뉘어 있기 때문에 융통성이 없습니다. 또한 내부 단편화가 발생합니다.

  • 가변 분할 방식: 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용합니다. 내부 단편화는 발생하지 않지만 외부 단편화는 발생할 수 있습니다. 이는 최초적합, 최적적합, 최악접합이 있습니다.

    • 최초적합: 위쪽이나 아래쪽부터 시작해서 홀을 찾으면 바로 할당합니다.

    • 최적적합: 프로세스의 크기 이상인 공간 중 가장 작은 홀부터 할당합니다.

    • 최악적합: 프로세스의 크기와 가장 많이 차이가 나는 홀에 할당합니다.

※ 내부 단편화(internal fragmentation): 메모리를 나눈 크기보다 프로그램이 작아서 들어가지 못하는 공간이 많이 발생하는 현상
※ 외부 단편화(external fragmentation): 메모리를 나눈 크기보다 프로그램이 커서 들어가지 못하는 공간이 많이 발생하는 현상, 예를 들어 100MB를 55MB, 45MB로 나눴지만 프로그램의 크기는 70MB일 때 들어가지 못하는 것을 의미
※ 홀(hole): 할당할 수 있는 비어있는 메모리 공간

불연속 할당

메모리를 동일한 크기의 페이지(보통 4KB)로 나누고 프로그램마다 페이지 테이블을 두어 이를 통해 메모리에 프로그램을 할당하는 것입니다.

  • 페이징(고정크기블록): 페이징은 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당합니다. 홀의 크기가 균일하지 않은 문제가 없어지지만 주소 변환이 복잡해집니다.

  • 세그멘테이션(논리 단위): 페이지 단위가 아닌 의미 단위인 세그먼트로 나누는 방식입니다. 프로세스를 이루는 메모리는 코드 영역, 데이터 영역, 스택 영역, 힙 영역으로 이루어지는데, 코드와 데이터로 나누거나 코드 내의 작은 함수를 세그먼트로 놓고 나눌 수도 있습니다. 공유와 보안 측면에서 장점을 가지지만 홀 크기가 균일하지 않은 단점이 있습니다.

  • 페이지드 세그멘테이션: 페이지드 세그멘테이션은 프로그램을 의미 단위인 세그먼트로 나눠 공유나 보안 측면에 강점을 두고 임의의 길이가 아닌 동일한 크기의 페이지 단위로 나누는 것을 말합니다.

페이지 교체 알고리즘

메모리는 한정되어 있기 때문에 스와핑이 많이 일어납니다. 스와핑은 많이 일어나지 않도록 설계되어야 하며 이는 페이지 교체 알고리즘을 기반으로 스와핑이 일어납니다.

알고리즘

설명

장점

단점

오프라인 알고리즘 (Optimal)

먼 미래에 참조될 페이지를 예측하여 현재 페이지와 교체하는 최적의 알고리즘

이론적으로 가장 낮은 페이지 폴트율을 보장

미래의 참조 페이지를 알 수 없으므로 실제로 구현 불가능, 다른 알고리즘 성능 비교의 상한 기준으로 사용

FIFO (First In First Out)

가장 먼저 메모리에 들어온 페이지를 가장 먼저 교체

구현이 단순

페이지 사용 빈도와 상관없이 먼저 들어온 페이지를 교체하므로 비효율적인 교체가 발생할 수 있음 (Belady's Anomaly 발생 가능성)

LRU (Least Recently Used)

가장 오랫동안 참조되지 않은 페이지를 교체

시간 지역성 원리에 기반하여 직관적이고 비교적 효율적인 성능을 보임

'오래된' 페이지를 추적하기 위해 계수기나 스택 등의 추가적인 자료 구조 및 연산 필요, 구현 복잡

NUR (Not Used Recently) / Clock

각 페이지마다 참조 비트(최근 참조 여부)를 두고, 시계 방향으로 순회하며 참조되지 않은 페이지(참조 비트 0)를 찾아 교체, 교체된 페이지의 참조 비트를 1로 변경

LRU에 비해 구현이 간단하고 오버헤드가 적음, 비교적 효율적인 성능

LRU만큼 정확하게 오래된 페이지를 식별하지 못할 수 있음

LFU (Least Frequently Used)

참조 횟수가 가장 적은 페이지를 교체

자주 사용되지 않는 페이지를 교체하므로 직관적인 이해가 가능

과거의 참조 횟수에만 의존하므로 최근에 사용 빈도가 낮아진 페이지를 즉시 교체하지 못할 수 있음, 참조 횟수 추적을 위한 오버헤드 발생


추가정리

운영체제 기본 분류, 처리 방식 및 하드웨어 구조

운영체제 기본 분류

운영체제는 동시에 처리할 수 있는 작업의 수와 사용자 수에 따라 다음과 같이 분류됩니다.

  • 단일 작업(Single-task): 한 번에 하나의 작업만 처리 (예: MS-DOS).

  • 다중 작업(Multi-task): 여러 프로그램을 동시에 실행 (예: 리눅스, 윈도우).

  • 단일 사용자(Single-user): 하나의 하드웨어로 한 명의 사용자만 받을 수 있다.

  • 다중 사용자(Multi-user): 하나의 하드웨어에 여러 사용자가 동시에 시스템에 접송할 수 있다.

운영체제 처리 방식

운영체제가 작업을 처리하는 주요 방식은 다음과 같습니다.

처리 방식

특징 및 예시

배치 프로세싱(Batch Processing)

일련의 작업을 묶어서 순차적으로 처리하는 방식입니다. 사용자의 직접적인 상호 작용 없이 미리 정의된 작업들을 한 번에 처리하는 데 유용합니다. 초기 컴퓨터 시스템에서 주로 사용되었으며, 현재도 대량의 데이터를 처리하는 작업(예: 급여 처리, 통계 분석)에 활용됩니다.

  • 일괄 처리로 시스템 효율성을 높일 수 있음

  • 작업이 완료될 때까지 결과를 기다려야 하므로 응답 시간이 김

  • 작업 중간에 사용자 개입이 어려움

타임 셰어링(Time Sharing)

여러 사용자가 하나의 컴퓨터 시스템을 동시에 공유하며 사용하는 방식입니다. CPU 시간을 짧게 분할하여 각 사용자에게 번갈아 할당함으로써 마치 각자 독립적인 컴퓨터를 사용하는 것처럼 느끼게 합니다. 현대적인 대부분의 운영체제에서 채택하고 있는 방식입니다

  • 여러 사용자가 동시에 시스템을 이용할 수 있음

  • 각 사용자에게 빠른 응답 시간을 제공

  • CPU 스케줄링 알고리즘이 중요하며, 사용자 수가 많아지면 성능 저하 가능성

리얼타임 시스템(Real-Time System)

특정 시간 제약 조건 내에 작업을 반드시 완료해야 하는 시스템을 위한 처리 방식입니다. 마감 시간을 지키는 것이 매우 중요하며, 조금이라도 늦어지면 시스템 전체에 심각한 오류를 초래할 수 있습니다.

  • 하드 리얼타임 시스템: 반드시 데드라인을 지켜야 함(예: 공장, 미사일, 원자로 등)

  • 소프트 리얼타임 시스템: 데드라인을 어겨도 치명적이지 않음(예: 동영상 스트리밍)

멀티태스킹과 하드웨어 구조

여러 작업을 동시에 처리하는 멀티태스킹은 하드웨어 구조와 밀접한 관련이 있습니다.

  • 멀티프로세서(Multi-processor): 시스템에 독립적인 CPU 칩이 2개 이상 존재.

  • 멀티코어(Multi-core): 단일 CPU 칩 내부에 여러 개의 실행 유닛(코어) 포함. 멀티프로세서의 한 형태이며 현대 시스템의 표준 구조.

운영체제 기능

운영체제는 다양한 기능을 통해 시스템 효율성과 성능을 최적화합니다.

절전 모드 vs. 메모리 예측

두 기술 모두 시스템 효율성을 목표로 하지만, 목적과 작동 방식이 다릅니다.

특징

절전 모드

메모리 예측

주요 목적

전력 소비 감소

시스템 성능 향상

작동 시점

시스템 비활성 상태

시스템 활성 상태

대상 자원

시스템 전체 (CPU, 디스크 등)

주로 메인 메모리 (RAM)

핵심 원리

작동 중단/속도 조절, 상태 저장

데이터 접근 패턴 예측

메모리 예측(Memory Prediction) vs. 오프라인 (Optimal) 알고리즘

미래 정보를 활용한다는 공통점이 있지만, 정보 획득 방식과 현실성에 차이가 있습니다.

특징

메모리 예측

오프라인 알고리즘

미래 정보 획득

과거/현재 기반 추정

미래 정보 완벽히 파악

현실 구현 가능성

가능

불가능 (이론적 기준)

주요 목적

시스템 성능 향상

알고리즘 성능 평가 기준

결정 방식

예측 기반 휴리스틱

미래 정보 기반 최적 결정

메모리 예측은 실제 시스템 성능 개선을 위한 현실적 접근이며, 오프라인 알고리즘은 다른 알고리즘 성능 평가를 위한 이론적 상한선입니다.

디바이스 컨트롤러와 로컬 버퍼

하드웨어 장치 제어는 디바이스 컨트롤러를 통해 이루어집니다.

  • 디바이스 컨트롤러: 각 I/O 장치(프린터, 디스크 등)를 제어하는 소형 프로세서, 장치와 시스템 간 데이터 송수신 중재.

  • 동작 로직 (펌웨어): 컨트롤러 칩 내부 ROM/플래시 메모리에 내장된 프로그램에 따라 동작. 외부 메모리에서 코드를 실행하지 않음.

  • 로컬 버퍼: 컨트롤러 내부에 있는 데이터 임시 저장 공간. CPU와 장치 간 데이터 전송 시 중간 저장소 역할 (명령 실행 공간 아님).

  • 동작 과정: CPU가 명령을 컨트롤러 레지스터에 기록 -> 데이터가 로컬 버퍼에 복사됨 -> 컨트롤러 펌웨어가 명령 실행 및 데이터 전송 -> 작업 완료 시 인터럽트로 CPU에 알림.

핵심 포인트

  • 운영체제는 작업 수(단일/다중), 사용자(단일/다중) 및 처리 방식(배치, 타임셰어링, 리얼타임)에 따라 분류됩니다.

  • 멀티태스킹은 멀티프로세서(다중 CPU 칩) 또는 멀티코어(단일 칩 내 다중 코어) 하드웨어 구조를 기반으로 합니다.

  • 절전 모드는 전력 감소, 메모리 예측은 성능 향상을 목표로 하며 작동 방식이 다릅니다.

  • 메모리 예측은 과거 데이터 기반 추정으로 현실적 성능 향상을 시도하고, 오프라인 알고리즘은 미래를 안다는 가정하의 이론적 최적 성능 기준입니다.

  • 디바이스 컨트롤러는 내장 펌웨어로 하드웨어 장치를 제어하며, 로컬 버퍼는 데이터 임시 저장 공간으로 사용됩니다.

출처

  • 면접을 위한 CS 전공지식 노트







- 컬렉션 아티클