본문 바로가기
CS전공지식

[CS전공지식] 운영체제

by JINJINC 2025. 3. 26.
728x90
반응형

운영체제(OS)란 무엇인가?

운영체제(Operating System)는 컴퓨터 하드웨어와 소프트웨어를 관리하고, 사용자와 컴퓨터 간의 인터페이스를 제공하는 핵심 시스템 소프트웨어입니다.


🧠 운영체제의 핵심: 커널(Kernel)

운영체제의 가장 핵심적인 부분은 커널(Kernel)입니다.
이는 마치 자동차의 엔진, 사람의 심장에 해당하는 부분으로, 시스템 자원을 제어하고 프로세스를 관리하는 역할을 합니다.

💾 커널

커널 이미지

커널은 메모리 상에 상주하면서 CPU, 메모리, 파일 시스템, 네트워크 등 시스템 자원과 직접 상호작용합니다.


🛠 운영체제의 주요 기능

운영체제는 크게 두 가지 핵심 기능을 수행합니다.

1️⃣ 자원 할당 및 관리 (Resource Management)

  • CPU, 메모리, 저장장치, 입출력 장치 등의 시스템 자원을 효율적으로 분배
  • 중복 사용 방지 및 병목 현상 최소화

2️⃣ 프로세스 및 스레드 관리 (Process & Thread Management)

  • 실행 중인 프로그램(프로세스)과 그 내부 실행 단위(스레드)를 관리
  • 병렬 처리 및 멀티태스킹 구현 지원

🔧 시스템 자원이란?

시스템 자원(Resource)이란 프로그램이 실행되기 위해 필요한 요소들을 의미합니다.

구분 설명
하드웨어 자원 CPU, 메모리, 디스크, 네트워크, I/O 장치
소프트웨어 자원 실행에 필요한 라이브러리, 설정파일, 코드

🧮 CPU 관리: CPU 스케줄링

운영체제는 실행 중인 모든 프로세스가 공정하고 효율적으로 CPU를 할당받도록 조정합니다.

🔄 스케줄링 전략

  • 우선순위 기반 (Priority Scheduling)
  • 스케줄링 큐 (Scheduling Queue)
  • 선점형 vs 비선점형 (Preemptive vs Non-Preemptive)

🧠 대표 CPU 스케줄링 알고리즘

  • FCFS (First Come First Serve)
  • SJF (Shortest Job First)
  • Round Robin
  • Priority Scheduling
  • Multilevel Queue Scheduling

📌 리눅스 스케줄러: CFS(Completely Fair Scheduler)를 사용하여 공정성을 높임


🧠 메모리 관리: 가상 메모리(Virtual Memory)

운영체제는 실행되는 프로그램의 메모리 요구량을 만족시키기 위해 가상 메모리 시스템을 제공합니다.

📌 핵심 개념

  • 논리 주소 vs 물리 주소
  • 메모리 할당 전략: 고정 분할, 가변 분할, 페이징, 세그먼트
  • 페이지 교체 알고리즘:
    • FIFO
    • LRU
    • Optimal

가상 메모리를 통해 프로그램은 물리적 메모리 용량보다 큰 메모리 공간을 사용하는 것처럼 동작할 수 있습니다.


🗂 파일 및 디렉터리 관리: 파일 시스템(File System)

운영체제는 보조기억장치(SSD, HDD 등)의 데이터를 효율적으로 관리하기 위해 파일 시스템을 사용합니다.

📁 파일 시스템 역할

  • 파일 및 폴더 구조 구성
  • 데이터 저장 및 검색
  • 권한 관리

대표 파일 시스템 종류

  • FAT32 / NTFS (Windows)
  • HFS+ / APFS (macOS)
  • ext3 / ext4 / Btrfs (Linux)

⚙ 프로세스 & 스레드 관리

구분 설명
프로세스(Process) 실행 중인 프로그램 인스턴스
스레드(Thread) 프로세스 내부에서 실행되는 작업 단위

운영체제는 프로세스에 자원을 할당하고, 여러 스레드를 병렬로 실행시켜 멀티스레딩 및 멀티태스킹 환경을 구현합니다.

📌 스레드 특징

  • 공유 자원: 동일 프로세스의 메모리 공간 사용
  • 경량 프로세스라고도 불림
  • 스레드 동기화 및 교착상태 문제 발생 가능성 있음

🔎 결론: 운영체제는 왜 중요한가?

운영체제는 단순한 소프트웨어가 아닌 컴퓨터의 전체적인 동작을 조율하는 지휘자입니다.
개발자라면 운영체제의 기본 원리를 이해함으로써, 더 나은 성능과 안정성을 갖춘 프로그램을 만들 수 있습니다.

728x90
반응형

댓글