ㅈㄱㅈ/ㅈㅊㄱ
운영체제(OS) 핵심 용어 정리
SBP
2025. 4. 17. 14:39
🖥️ 운영체제(OS) 핵심 용어 정리
운영체제는 사용자가 컴퓨터를 쉽게 다룰 수 있도록 돕는 동시에, 컴퓨터 하드웨어 자원을 효율적으로 관리하는 핵심 소프트웨어입니다.
본 문서는 운영체제의 주요 개념과 용어를 체계적으로 정리합니다.
1. 프로세스와 스레드 (Process & Thread) ⚙️
- 프로세스 (Process)
- 실행 중인 프로그램을 의미하는 단위입니다. 자신만의 고유한 메모리 공간(Code, Data, Stack, Heap)을 할당받습니다.
- 스레드 (Thread)
- 프로세스 내에서 실행되는 흐름의 단위입니다. 하나의 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드들은 프로세스의 자원(Code, Data, Heap)을 공유합니다. Stack은 각 스레드마다 별도로 할당됩니다.
- PCB (Process Control Block)
- 운영체제가 각 프로세스를 관리하기 위해 필요한 정보를 담고 있는 자료구조입니다. 프로세스 상태, 프로세스 ID(PID), 프로그램 카운터(PC), 레지스터 값, 메모리 제한 등의 정보를 포함합니다.
- 문맥 교환 (Context Switching)
- CPU가 현재 실행 중인 프로세스(또는 스레드)의 상태(문맥)를 PCB에 저장하고, 다음 실행할 프로세스의 상태를 불러와 CPU를 할당하는 과정입니다. 이 과정에서 오버헤드가 발생합니다.
- 스케줄링 (Scheduling)
- 어떤 프로세스에게 CPU를 할당할지 결정하는 정책입니다. CPU 이용률, 처리량, 응답 시간 등을 고려하여 효율적으로 자원을 배분하는 것을 목표로 합니다.
- 프로세스 상태 (Process States)
- 프로세스가 생성되어 소멸하기까지 거치는 여러 상태를 말합니다.
- 생성 (New): 프로세스가 생성 중인 상태
- 준비 (Ready): CPU를 할당받기를 기다리는 상태
- 실행 (Running): CPU를 할당받아 명령을 수행 중인 상태
- 대기 (Waiting/Blocked): 입출력(I/O) 완료 등 특정 이벤트를 기다리는 상태
- 종료 (Terminated): 프로세스 실행이 완료된 상태
2. 메모리 관리 (Memory Management) 🧠
- 가상 메모리 (Virtual Memory)
- 실제 물리 메모리(RAM)보다 더 큰 메모리 공간을 프로세스에게 제공하는 기술입니다. 이를 통해 각 프로세스는 자신만의 독립적인 메모리 공간을 가진 것처럼 동작하며, 메모리 관리의 효율성을 높입니다.
- 페이징 (Paging)
- 가상 메모리를 페이지(Page)라는 고정된 크기의 블록으로 나누고, 물리 메모리를 프레임(Frame)이라는 페이지와 동일한 크기의 블록으로 나누어 관리하는 기법입니다. 외부 단편화를 해결할 수 있습니다.
- 세그먼테이션 (Segmentation)
- 가상 메모리를 코드, 데이터, 스택 등 의미 있는 논리적 단위인 세그먼트(Segment)로 나누어 관리하는 기법입니다. 내부 단편화가 발생할 수 있습니다.
- 페이지 부재 (Page Fault)
- 프로세스가 참조하려는 페이지가 현재 물리 메모리에 없을 때 발생하는 인터럽트입니다. 운영체제는 디스크에서 해당 페이지를 찾아 빈 프레임에 적재한 후, 프로세스를 다시 실행시킵니다.
- 스와핑 (Swapping)
- 메모리가 부족할 경우, 현재 사용되지 않는 프로세스를 일시적으로 보조기억장치(디스크)로 옮겨 메모리 공간을 확보하고, 필요할 때 다시 메모리로 불러오는 기법입니다.
3. 동기화 및 교착 상태 (Synchronization & Deadlock) 🚦
- 임계 구역 (Critical Section)
- 여러 프로세스(또는 스레드)가 동시에 접근해서는 안 되는 공유 자원에 접근하는 코드 영역입니다.
- 상호 배제 (Mutual Exclusion)
- 한 프로세스가 임계 구역에 들어가 있다면, 다른 프로세스는 들어갈 수 없도록 막는 것을 의미합니다. 이를 구현하기 위해 뮤텍스, 세마포어 등의 기법이 사용됩니다.
- 뮤텍스 (Mutex)
- 임계 구역에 하나의 스레드만 들어갈 수 있도록 하는 동기화 도구입니다. 락(Lock)을 획득한 스레드만이 임계 구역에 접근할 수 있습니다.
- 세마포어 (Semaphore)
- 지정된 개수만큼의 스레드가 공유 자원에 동시에 접근할 수 있도록 하는 동기화 도구입니다. 허용 가능한 자원의 수를 카운팅하며, 카운트가 0이 되면 다른 스레드는 대기해야 합니다.
- 교착 상태 (Deadlock)
- 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 무한정 대기하는 상태입니다. 상호 배제, 점유와 대기, 비선점, 환형 대기라는 4가지 조건이 모두 충족될 때 발생할 수 있습니다.
4. 파일 시스템 및 입출력 (File System & I/O) 💾
- 파일 시스템 (File System)
- 보조기억장치에 저장되는 파일들을 체계적으로 관리하고 쉽게 접근할 수 있도록 하는 시스템입니다. (예:
FAT32
,NTFS
,ext4
,APFS
) - 인터럽트 (Interrupt)
- CPU가 프로그램을 실행하고 있을 때, 입출력 장치 등 외부에서 예외 상황이 발생하여 처리가 필요함을 알리는 신호입니다. CPU는 하던 일을 멈추고 해당 인터럽트를 처리합니다.
- DMA (Direct Memory Access)
- CPU의 개입 없이 입출력 장치가 직접 메모리에 접근하여 데이터를 전송하는 방식입니다. 이를 통해 CPU는 다른 작업을 계속할 수 있어 시스템 효율성이 향상됩니다.
- 커널 (Kernel)과 시스템 콜 (System Call)
- 커널은 운영체제의 가장 핵심적인 부분으로, 자원 관리를 책임집니다. 일반 응용 프로그램이 하드웨어 자원에 직접 접근하는 것은 금지되어 있으며, 시스템 콜이라는 인터페이스를 통해 커널에게 서비스를 요청해야 합니다.