2025-12-07

오늘 배운 것

  • 운영체제(OS)

    사용자·하드웨어·프로그램 사이에서 자원을 관리하고 추상화를 제공하는 시스템 소프트웨어다.

    CPU·메모리·I/O·파일·네트워크를 스케줄링하고 보호하는 역할을 한다.

  • 커널(Kernel)

    OS의 핵심 부분으로, 프로세스 관리·메모리 관리·파일 시스템·I/O 제어를 담당한다.

    사용자 모드와 커널 모드로 나뉘며 시스템 콜을 통해 접근된다.

  • CPU

    명령어를 수행하는 장치로, ALU·제어장치·레지스터로 구성된다.

    CPU 스케줄러가 어떤 프로세스를 실행할지 결정한다.

  • 메모리 / I/O 기기

    메모리는 실행 중인 프로그램과 데이터를 저장하고, I/O 기기는 외부 세계와의 입출력을 담당한다.

    CPU와 I/O 간 속도 차를 완충하기 위해 버퍼링과 캐싱을 사용한다.

  • System Bus

    CPU·메모리·I/O를 연결하는 통로로, 주소버스·데이터버스·제어버스로 구성된다.

  • I/O 제어 방식(폴링, 인터럽트, DMA, 채널)

    폴링: CPU가 주기적으로 I/O 상태 확인(비효율)

    인터럽트: I/O 완료 시 CPU에 신호(효율↑)

    DMA: 메모리↔I/O를 DMA 컨트롤러가 직접 전송(CPU 부담 ↓)

    채널: 대형 시스템에서 I/O 연산을 전담하는 독립 프로세서

  • 프로세스

    실행 중인 프로그램 단위이며, 코드/데이터/스택/힙 등 메모리 공간을 가진다.

  • 멀티프로세스

    여러 프로세스를 병렬로 실행해 안정성은 좋지만 메모리 사용량이 크다.

  • 프로세스 간 통신(IPC)

    파이프, 메시지 큐, 공유 메모리, 소켓 등을 통해 독립된 프로세스끼리 데이터를 주고받는 방식이다.

  • 스레드(Thread)

    프로세스 내의 실행 단위로, 코드/데이터/힙은 공유하고 스택만 독립적으로 가진다.

  • 멀티스레드

    동일한 메모리 공간을 공유해 문맥전환 비용이 적고 효율적이지만 동기화 문제가 생긴다.

  • Critical Section

    여러 스레드가 동시에 접근하면 안 되는 공유 자원 영역이다.

  • Mutex

    상호배제를 강제해 한 순간 하나의 스레드만 진입하도록 하는 잠금 메커니즘이다.

  • Semaphore

    정수값 기반 스레드 접근ㅁ 제어 도구로, 카운팅 세마포어는 여러 스레드 동시 접근도 허용한다.

  • Monitor

    조건변수 + 락이 함께 묶인 추상화 객체로, 고수준 동기화 구조를 제공한다.

  • Deadlock(교착상태)

    상호배제·점유대기·비선점·환형대기의 4조건이 모두 만족할 때 발생하며

    상호배제 : 자원은 한 번에 한 프로세스

    점유 대기 : 이미 지원을 가지고 있는 프로세스가 추가 자원 기다림

    비선점 : 프로세스가 점유한 자원을 강제로 빼앗을 수 없음

    환형 대기 : 프로세스들이 원형으로 서로 자원을 기다림

    예방, 회피(Banker), 탐지 후 복구 방식이 있다.

    예방

    4가지 조건 중 하나를 강제로 깸

    무조건 안전하지만, 과하게 제약이 많아 성능 손해가 큼

    데드락 회피

    뱅커 알고리즘 : 안전 상태인지 판단 후 불안정하면 요청 거절

    프로세스가 얼마나 필요한지 알려줘야되고,계산 비용 큼

    탐지 후 복구

    일당 발생하게 두고 주기적으로 확인

    데드락 발생하면, 프로세스 종료하거나, 특정 프로세스의 자원을 강제로 빼앗아 롤백해서 안전상태로 돌아갈 때까지 반복

  • Context Switching

    실행 중인 프로세스 상태(레지스터, PC)를 PCB에 저장하고 다른 프로세스로 교체하는 작업이다.

  • PCB(Process Control Block)

    프로세스의 상태·레지스터 정보·메모리 위치·스케줄링 정보를 저장한 구조체다.

  • Dispatcher

    CPU를 사용할 다음 프로세스를 골라 실제로 실행을 넘겨주는 모듈이다.

  • Scheduling Policy
    • FCFS (First Come First Served)

      먼저 도착한 프로세스부터 처리하는 가장 단순한 스케줄링 방식이며 비선점형이다.

    • SJF (Shortest Job First)

      CPU Burst가 가장 짧은 프로세스를 먼저 실행하며 기본 형태는 비선점형이다.

    • Multilevel Queue

      여러 큐(우선순위/작업 종류별)로 나누어 정해진 규칙대로 배분하며 기본적으로 비선점형이다.

      (단, 큐 간 스케줄링은 선점 가능하지만 큐 내부는 비선점형이 일반적)

    • SRTF (Shortest Remaining Time First)

      SJF의 선점형 버전으로, 더 짧은 잔여 시간을 가진 프로세스가 오면 CPU를 선점한다.

    • Priority Scheduling

      우선순위가 높은 프로세스를 먼저 실행하는 방식이며,

      구현에 따라 비선점형/ 선점형(Priority Preemptive) 모두 가능하다.

    • Round Robin

      프로세스에 동일한 시간 할당량(Time Quantum)을 주고 순환시키는 방식으로 선점형이다.

    • Multilevel Feedback Queue (MLFQ)

      실행 시간에 따라 큐를 이동시키며 우선순위를 동적으로 변경하는 방식으로 선점형이다.

  • 메모리 관리

    프로세스에 메모리를 할당/회수하는 기능이며, 내부 단편화/외부 단편화를 해결하는 전략이 필요하다.

    내부 : 할당된 메모리 블록 안에서 낭비 공간 발생

    외부 : 빈 공간은 있는데 연속 된게 없는 상태

  • 동적 메모리 할당

    malloc/free 방식이며 free list로 빈 공간을 관리한다.

  • Garbage Collecting

    필요 없는 객체를 자동으로 회수하는 메모리 관리 기법(Java, JVM).

  • MMU (Memory Management Unit)

    CPU 논리 주소를 실제 물리 주소로 변환하는 하드웨어 장치다.

  • Segmentation

    논리적 구조(코드/스택/데이터) 단위로 메모리를 분할하며 외부 단편화가 발생한다.

  • Paging

    고정 크기 페이지·프레임으로 나누어 외부 단편화를 제거하고, 논리주소→물리주소 매핑을 유지한다.

  • Paged Segmentation

    세그먼트를 페이지 단위로 다시 나누어 단편화와 보호를 동시에 해결하는 방식이다.

  • Demand Paging

    필요한 페이지가 있을 때만 메모리에 적재하는 방식으로, 페이지 부재(Page Fault)가 발생할 수 있다.

  • File / File System

    파일은 저장 단위이며 파일시스템은 디스크 공간을 관리하고 디렉터리·inode·저널링 등을 제공한다.

  • Buffer Cache

    디스크 접근 성능을 향상시키기 위해 OS가 유지하는 메모리 기반 캐시다.

  • Thrashing

    페이지 결함이 과도해 CPU보다 페이지 교체 작업이 더 많아지는 상태다.

    워킹세트 조절로 완화할 수 있다.

  • Cache / Register

    레지스터는 CPU 내부 초고속 저장소, 캐시는 CPU와 메모리 속도 차를 줄이는 계층적 저장장치다(L1/L2/L3).

  • 프로그램 컴파일 과정

    전처리 → 컴파일 → 어셈블 → 링크 과정을 통해 실행파일을 생성한다.

  • 스케줄링

    CPU 자원을 어떤 프로세스가 사용할지 결정하는 작업으로,

    선점/비선점 방식이 있으며 목표는 응답시간·처리율·공정성 최적화다.

  • 가상 메모리(Virtual Memory)

    프로세스마다 독립적인 주소공간을 제공하는 추상화로, 안전성과 확장성이 증가한다.

  • TLB(Translation Lookaside Buffer)

    페이지 테이블 매핑을 캐싱해 주소 변환을 빠르게 하는 하드웨어 캐시다.

  • System Call

    사용자 모드가 커널 기능을 요청하는 인터페이스다.

  • CPU Burst / I/O Burst

    프로세스는 CPU 작업과 I/O 작업이 번갈아 발생하며 이를 바탕으로 스케줄링에 활용된다.

results matching ""

    No results matching ""