본문 바로가기
정보처리기사

[이론] 운영체제(페이지 교체, CPU 스케쥴링, 리눅스 명령어)

by wildOjisan 2025. 6. 2.

운영체제의 목적:

* 처리능력(Thoughput) 향상

* 반환시간(Turn Around Time) 단축

* 사용 가능도(Availability) 향상

* 신뢰도(Reliability) 향상

 

🧠 메모리 관리의 4대 전략: 반배할교

정보처리기사 실기에서는 메모리 관리 기법을 다음의 네 가지 전략으로 분류합니다:

  • 반입(Fetch): 데이터를 언제 메모리에 적재할지 결정 (When)
  • 배치(Placement): 데이터를 메모리의 어디에 배치할지 결정 (Where)
  • 할당(Allocation): 데이터를 어떻게 할당할지 결정 (How)
  • 교체(Replacement): 어떤 데이터를 교체할지 결정 (Who)

📌 배치 전략(Placement Strategy)

배치 전략은 새로운 프로그램이나 데이터를 메모리의 어느 위치에 배치할지를 결정하는 방법입니다. 대표적인 세 가지 기법은 다음과 같습니다:

1️⃣ 최초 적합 (First Fit)

  • 핵심 문장: 사용 가능한 첫 번째 분할 영역에 프로그램이나 데이터를 배치하는 방식입니다.
  • 쉽게 설명하면: 메모리의 빈 공간을 앞에서부터 차례로 검사하여, 프로그램이 들어갈 수 있는 첫 번째 공간에 배치합니다.
  • 장점: 탐색 속도가 빠릅니다.
  • 단점: 외부 단편화가 발생할 수 있습니다.

2️⃣ 최적 적합 (Best Fit)

  • 핵심 문장: 단편화를 최소화하는 가장 작은 분할 영역에 프로그램이나 데이터를 배치하는 방식입니다.
  • 쉽게 설명하면: 프로그램이 들어갈 수 있는 공간 중에서 가장 크기가 비슷한(가장 작은) 공간에 배치하여, 남는 공간을 최소화합니다.
  • 장점: 메모리 공간의 효율적인 사용이 가능합니다.
  • 단점: 탐색 시간이 오래 걸릴 수 있으며, 외부 단편화가 발생할 수 있습니다.

3️⃣ 최악 적합 (Worst Fit)

  • 핵심 문장: 단편화를 최대화하는 가장 큰 분할 영역에 프로그램이나 데이터를 배치하는 방식입니다.
  • 쉽게 설명하면: 프로그램이 들어갈 수 있는 공간 중에서 가장 큰 공간에 배치하여, 큰 공간을 나누어 사용합니다.
  • 장점: 큰 공간을 나누어 사용하므로, 큰 프로그램을 위한 공간 확보가 용이합니다.
  • 단점: 외부 단편화가 많이 발생할 수 있습니다.

 

🧠 페이징 기법의 개념

페이징 기법은 **프로세스의 논리적 주소 공간을 고정된 크기의 페이지(Page)**로 나누고, **물리적 메모리도 동일한 크기의 프레임(Frame)**으로 나누어, 페이지를 프레임에 매핑하여 메모리를 관리하는 방식입니다.

✔️ 페이지(Page)와 프레임(Frame)

  • 페이지(Page): 프로세스의 논리적 주소 공간을 일정한 크기로 나눈 블록입니다.
  • 프레임(Frame): 물리적 메모리를 페이지와 동일한 크기로 나눈 블록입니다.

프로세스가 실행될 때, 각 페이지는 메모리의 빈 프레임에 적재됩니다.

✔️ 주소 변환(Address Translation)

프로세스가 사용하는 논리적 주소는 **페이지 번호(Page Number)**와 **페이지 내 오프셋(Offset)**으로 구성됩니다.

주소 변환은 다음과 같은 과정을 거칩니다:

  1. 페이지 번호를 통해 **페이지 테이블(Page Table)**에서 해당 페이지가 적재된 프레임 번호를 찾습니다.
  2. 프레임 번호와 오프셋을 결합하여 실제 물리적 주소를 계산합니다.

✔️ 단편화(Fragmentation)

  • 외부 단편화(External Fragmentation): 메모리 공간이 충분히 있음에도 불구하고, 연속된 공간이 부족하여 프로세스를 적재하지 못하는 현상입니다.
  • 내부 단편화(Internal Fragmentation): 페이지 크기보다 작은 데이터를 저장할 때, 남는 공간이 발생하는 현상입니다.

페이징 기법은 외부 단편화를 방지하지만, 내부 단편화는 발생할 수 있습니다.

 

 

* 프로세스 : 현재 실행중인 프로그램을 의미한다. 운영체제가 자원을 할당하고 관리하는 기본 단위로 보면 된다.

운영체제는 각 프로세스에 CPU 연산시간, 메모리, 파일, 입출력 장치에 대한 자원을 할당해서 작업을 수행한다.

 

 

📌 페이지 교체 알고리즘(Page Replacement Algorithm)

운영체제에서 가상 메모리를 사용할 때, 필요한 페이지가 메모리에 없으면 **페이지 부재(Page Fault)**가 발생합니다. 이때 메모리에 새로운 페이지를 적재해야 하며, 메모리가 가득 찼다면 기존의 페이지 중 하나를 교체해야 합니다. 이러한 교체 방식을 결정하는 것이 페이지 교체 알고리즘입니다

1️⃣ OPT (Optimal Replacement)

    • 핵심 문장: 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 방식입니다.
    • 쉽게 설명하면: 미래를 예측하여 가장 나중에 사용될 페이지를 교체합니다.
    • 장점: 이론적으로 가장 적은 페이지 부재를 발생시킵니다.
    • 단점: 미래의 페이지 사용을 예측해야 하므로 실제 구현이 어렵습니다.
    • 시험 포인트: 이론적으로 가장 효율적인 알고리즘이며, 실제 구현은 불가능하다는 점을 기억하세요.

📋 조건

      • 페이지 참조 순서: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2
      • 프레임 수: 3개

🧭 실행 과정

      1. 시간 0: 페이지 7 → 프레임에 없음 → 적재 → 페이지 부재 발생 (1회)
      2. 시간 1: 페이지 0 → 프레임에 없음 → 적재 → 페이지 부재 발생 (2회)
      3. 시간 2: 페이지 1 → 프레임에 없음 → 적재 → 페이지 부재 발생 (3회)
      4. 시간 3: 페이지 2 → 프레임에 없음 → 교체 필요
        • 프레임: [7, 0, 1]
        • 미래 참조: 0(시간4), 3(5), 0(6), 4(7), 2(8), 3(9), 0(10), 3(11), 2(12)
        • 7은 더 이상 사용되지 않음 → 7 교체 → 페이지 부재 발생 (4회)
      5. 시간 4: 페이지 0 → 프레임에 있음 → 페이지 히트
      6. 시간 5: 페이지 3 → 프레임에 없음 → 교체 필요
        • 프레임: [2, 0, 1]
        • 미래 참조: 0(6), 4(7), 2(8), 3(9), 0(10), 3(11), 2(12)
        • 1은 더 이상 사용되지 않음 → 1 교체 → 페이지 부재 발생 (5회)
      7. 시간 6: 페이지 0 → 프레임에 있음 → 페이지 히트
      8. 시간 7: 페이지 4 → 프레임에 없음 → 교체 필요
        • 프레임: [2, 0, 3]
        • 미래 참조: 2(8), 3(9), 0(10), 3(11), 2(12)
        • 0은 가장 나중에 사용됨(시간10) → 0 교체 → 페이지 부재 발생 (6회)

...

  •  

2️⃣ FIFO (First-In, First-Out)

  • 핵심 문장: 가장 먼저 들어온 페이지를 가장 먼저 교체하는 방식입니다.
  • 쉽게 설명하면: 큐(Queue) 구조로, 먼저 들어온 페이지가 먼저 나갑니다.
  • 장점: 구현이 간단합니다.
  • 단점: 자주 사용되는 페이지도 먼저 들어왔다는 이유로 교체될 수 있어 비효율적입니다.
  • 시험 포인트: Belady's Anomaly(프레임 수를 늘렸는데도 페이지 부재가 증가하는 현상)가 발생할 수 있다는 점을 기억하세요.

📋 조건

  • 페이지 참조 순서: 1, 3, 0, 3, 5, 6
  • 프레임 수: 3개

🧭 실행 과정

  1. 시간 0: 페이지 1 → 프레임에 없음 → 적재 → 페이지 부재 발생 (1회)
  2. 시간 1: 페이지 3 → 프레임에 없음 → 적재 → 페이지 부재 발생 (2회)
  3. 시간 2: 페이지 0 → 프레임에 없음 → 적재 → 페이지 부재 발생 (3회)
  4. 시간 3: 페이지 3 → 프레임에 있음 → 페이지 히트
  5. 시간 4: 페이지 5 → 프레임에 없음 → 가장 먼저 들어온 페이지 1 교체 → 페이지 부재 발생 (4회)
  6. 시간 5: 페이지 6 → 프레임에 없음 → 가장 먼저 들어온 페이지 3 교체 → 페이지 부재 발생 (5회)

 

3️⃣ LRU (Least Recently Used)

  • 핵심 문장: 가장 오랫동안 사용되지 않은 페이지를 교체하는 방식입니다.
  • 쉽게 설명하면: 최근에 사용된 페이지는 앞으로도 사용될 가능성이 높다는 가정하에, 가장 오래전에 사용된 페이지를 교체합니다.
  • 장점:
    • Belady's Anomaly가 발생하지 않습니다.
    • 일반적으로 FIFO보다 페이지 부재가 적습니다.
  • 단점:
    • 최근 사용 정보를 추적해야 하므로 구현이 복잡할 수 있습니다.
    • 하드웨어 지원이 필요할 수 있습니다.
  • 시험 포인트:
    • Belady's Anomaly가 발생하지 않는다는 점을 기억하세요.
    • 최근 사용 정보를 추적하여 가장 오래전에 사용된 페이지를 교체한다는 개념을 이해하세요.

📋 조건

  • 페이지 참조 순서: 1, 2, 3, 2, 4, 1, 5
  • 프레임 수: 3개

🧭 실행 과정

  1. 시간 0: 페이지 1 → 프레임에 없음 → 적재 → 페이지 부재 발생 (1회)
  2. 시간 1: 페이지 2 → 프레임에 없음 → 적재 → 페이지 부재 발생 (2회)
  3. 시간 2: 페이지 3 → 프레임에 없음 → 적재 → 페이지 부재 발생 (3회)
  4. 시간 3: 페이지 2 → 프레임에 있음 → 페이지 히트
  5. 시간 4: 페이지 4 → 프레임에 없음 → 가장 오래전에 사용된 페이지 1 교체 → 페이지 부재 발생 (4회)
  6. 시간 5: 페이지 1 → 프레임에 없음 → 가장 오래전에 사용된 페이지 3 교체 → 페이지 부재 발생 (5회)
  7. 시간 6: 페이지 5 → 프레임에 없음 → 가장 오래전에 사용된 페이지 2 교체 → 페이지 부재 발생 (6회)

 

3️⃣ LFU (Least Frequently Used)

  • 핵심 문장: 사용 빈도가 가장 적은 페이지를 교체하는 방식입니다.
  • 쉽게 설명하면: 참조 횟수가 가장 적은 페이지를 교체합니다.
  • 장점: 자주 사용되는 페이지는 유지됩니다.
  • 단점: 최근에 사용되었지만 참조 횟수가 적은 페이지가 교체될 수 있습니다.
  • 시험 포인트: 참조 횟수를 기반으로 교체하며, 구현이 복잡할 수 있다는 점을 기억하세요.

📋 조건

  • 페이지 참조 순서: 1, 2, 3, 4, 2, 1, 5
  • 프레임 수: 3개

🧭 실행 과정

  1. 시간 0: 페이지 1 → 프레임에 없음 → 적재 → 페이지 부재 발생 (1회)
  2. 시간 1: 페이지 2 → 프레임에 없음 → 적재 → 페이지 부재 발생 (2회)
  3. 시간 2: 페이지 3 → 프레임에 없음 → 적재 → 페이지 부재 발생 (3회)
  4. 시간 3: 페이지 4 → 프레임에 없음 → 교체 필요
    • 프레임: [1, 2, 3]
    • 사용 빈도: 1(1회), 2(1회), 3(1회)
    • 모두 동일 → 가장 먼저 들어온 페이지 1 교체 → 페이지 부재 발생 (4회)
  5. 시간 4: 페이지 2 → 프레임에 있음 → 사용 빈도 증가
  6. 시간 5: 페이지 1 → 프레임에 없음 → 교체 필요
    • 프레임: [4, 2, 3]
    • 사용 빈도: 4(1회), 2(2회), 3(1회)
    • 4와 3 중 먼저 들어온 페이지 4 교체 → 페이지 부재 발생 (5회)
  7. 시간 6: 페이지 5 → 프레임에 없음 → 교체 필요
    • 프레임: [1, 2, 3]
    • 사용 빈도: 1(1회), 2(2회), 3(1회)
    • 1과 3 중 먼저 들어온 페이지 3 교체 → 페이지 부재 발생 (6회)

4️⃣ MFU (Most Frequently Used)

  • 핵심 문장: 사용 빈도가 가장 많은 페이지를 교체하는 방식입니다.
  • 쉽게 설명하면: 참조 횟수가 가장 많은 페이지를 교체합니다.
  • 장점: 최근에 적게 사용된 페이지를 유지할 수 있습니다.
  • 단점: 자주 사용되는 중요한 페이지가 교체될 수 있습니다.
  • 시험 포인트: LFU의 반대 개념이며, 실제로는 잘 사용되지 않는다는 점을 기억하세요.

📋 조건

  • 페이지 참조 순서: 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1
  • 프레임 수: 4개

🧭 실행 과정

  1. 시간 0~3: 페이지 7, 0, 1, 2 → 프레임에 없음 → 적재 → 페이지 부재 발생 (4회)
  2. 시간 4: 페이지 0 → 프레임에 있음 → 사용 횟수 증가
  3. 시간 5: 페이지 3 → 프레임에 없음 → 가장 자주 사용된 페이지 0 교체 → 페이지 부재 발생 (5회)
  4. 시간 6: 페이지 0 → 프레임에 없음 → 가장 자주 사용된 페이지 2 교체 → 페이지 부재 발생 (6회)
  5. 시간 7: 페이지 4 → 프레임에 없음 → 가장 자주 사용된 페이지 1 교체 → 페이지 부재 발생 (7회)
  6. 시간 8: 페이지 2 → 프레임에 없음 → 가장 자주 사용된 페이지 3 교체 → 페이지 부재 발생 (8회)
  7. 시간 9: 페이지 3 → 프레임에 없음 → 가장 자주 사용된 페이지 0 교체 → 페이지 부재 발생 (9회)
  8. 시간 10: 페이지 0 → 프레임에 없음 → 가장 자주 사용된 페이지 4 교체 → 페이지 부재 발생 (10회)
  9. 시간 11: 페이지 3 → 프레임에 있음 → 사용 횟수 증가
  10. 시간 12: 페이지 2 → 프레임에 없음 → 가장 자주 사용된 페이지 0 교체 → 페이지 부재 발생 (11회)
  11. 시간 13: 페이지 1 → 프레임에 없음 → 가장 자주 사용된 페이지 3 교체 → 페이지 부재 발생 (12회)

5️⃣ NUR (Not Used Recently)

  • 핵심 문장: 최근에 사용되지 않은 페이지를 교체하는 방식입니다.
  • 쉽게 설명하면: 참조 비트와 변경 비트를 사용하여 최근에 사용되지 않은 페이지를 찾습니다.
  • 장점: LRU보다 구현이 간단하며, 오버헤드가 적습니다.
  • 단점: 정확한 최근 사용 여부를 판단하기 어렵습니다.
  • 시험 포인트: 참조 비트와 변경 비트를 사용하여 페이지를 분류한다는 점을 기억하세요

📋 조건

  • 페이지 참조 순서: 0, 1, 2, 3, 0, 1, 4, 0, 1, 2, 3, 4
  • 프레임 수: 3개
  • 초기 상태: 모든 페이지의 R=0, M=0TutorialsPoint

🧭 실행 과정

  1. 시간 0: 페이지 0 → 프레임에 없음 → 적재 → 페이지 부재 발생 (1회)
    • R=1, M=0 (읽기 동작 가정)
  2. 시간 1: 페이지 1 → 프레임에 없음 → 적재 → 페이지 부재 발생 (2회)
    • R=1, M=0
  3. 시간 2: 페이지 2 → 프레임에 없음 → 적재 → 페이지 부재 발생 (3회)
    • R=1, M=0
  4. 시간 3: 페이지 3 → 프레임에 없음 → 교체 필요
    • 모든 프레임이 가득 찼으므로 교체 대상 선택
    • 현재 R=1인 페이지들만 존재하므로, 주기적으로 R 비트를 0으로 초기화
    • 초기화 후, 모든 페이지의 R=0, M=0 → 클래스 0
    • 클래스 0에서 임의의 페이지 선택하여 교체 (예: 페이지 0)
    • 페이지 3 적재 → 페이지 부재 발생 (4회)
    • R=1, M=0
  5. 시간 4: 페이지 0 → 프레임에 없음 → 교체 필요
    • 현재 프레임: 페이지 1(R=0), 페이지 2(R=0), 페이지 3(R=1)
    • 클래스 0: 페이지 1, 2
    • 클래스 2: 페이지 3
    • 클래스 0에서 임의의 페이지 선택하여 교체 (예: 페이지 1)
    • 페이지 0 적재 → 페이지 부재 발생 (5회)
    • R=1, M=0
  6. 시간 5: 페이지 1 → 프레임에 없음 → 교체 필요
    • 현재 프레임: 페이지 2(R=0), 페이지 3(R=1), 페이지 0(R=1)
    • 클래스 0: 페이지 2
    • 클래스 2: 페이지 3, 0
    • 클래스 0에서 페이지 2 교체
    • 페이지 1 적재 → 페이지 부재 발생 (6회)
    • R=1, M=0
  7. 시간 6: 페이지 4 → 프레임에 없음 → 교체 필요
    • 현재 프레임: 페이지 3(R=1), 페이지 0(R=1), 페이지 1(R=1)
    • 모든 페이지 R=1이므로, R 비트 초기화
    • 초기화 후, 모든 페이지 R=0, M=0 → 클래스 0
    • 클래스 0에서 임의의 페이지 선택하여 교체 (예: 페이지 3)
    • 페이지 4 적재 → 페이지 부재 발생 (7회)
    • R=1, M=0
  8. 시간 7: 페이지 0 → 프레임에 있음 → R=1

...

 

 

프로세스 관련 용어들:

* 스레싱(Thrashing) : 프로세스 처리 시간보다 페이지 교체 시간이 더 많아지는 현상

* 프로세스 상태의 종류: 생성, 준비, 실행, 대기, 완료, 끝(exit)

* 스레드(Thread): 프로세스보다 작은 단위로 독립적으로 수행되는 제어의 흐름. 한개의 프로세스는 여러개의 스레드를 가지고 있을수 있다.

* 교착상태 : 여러개의 프로세스가 특정 자원 할당을 계속 대기하면서 서로 소비 못하는 상황

  교착상태가 되기위한 조건 : 상호배제, 점유와 대기, 비선점, 환형대기

  교착상태 해결방법: 예발, 회피, 발견, 복구

* 뮤텍스: 하나의 프로세스가 공유자원에 접근하는동안, 다른 프로세스가 해당 자원에 접근 못하게 막는 도구

* 세마포어: 운영체제에서 여러 프로세스가 공유 자원을 사용할때 문제를 해결하는 동기화 도구(정수값으로 보통 관리)

 

 

🧠 CPU 스케줄링 알고리즘이란?

운영체제에서 CPU 스케줄링은 여러 프로세스가 동시에 실행을 요청할 때, 어떤 프로세스에 CPU를 할당할지 결정하는 방법입니다. 효율적인 스케줄링은 시스템의 성능과 사용자 만족도를 높이는 데 중요합니다.

 

🧠 선점형 스케줄링이란?

  • 핵심 문장: 선점형 스케줄링은 실행 중인 프로세스가 있어도, 더 높은 우선순위의 프로세스가 도착하면 현재 프로세스를 중단하고 CPU를 새로운 프로세스에 할당하는 방식입니다.

 

1️⃣ SRTF (Shortest Remaining Time First), SRF

    • 핵심 문장: 남은 실행 시간이 가장 짧은 프로세스를 먼저 실행하는 방식입니다.
    • 쉽게 설명하면: 현재 실행 중인 프로세스보다 남은 실행 시간이 더 짧은 새로운 프로세스가 도착하면, 현재 프로세스를 중단하고 새로운 프로세스를 실행합니다.
    • 장점: 평균 대기 시간을 최소화할 수 있습니다.
    • 단점: 긴 작업이 계속 뒤로 밀려 기아(Starvation) 현상이 발생할 수 있습니다.
    • 시험 포인트: 선점형 SJF로, 실행 시간을 정확히 예측해야 한다는 점을 기억하세요.
      프로세스                                                               도착 시간 (AT)                                 실행 시간 (BT)

       

      P1 0 8
      P2 1 4
      P3 2 9
      P4 3 5
       

🧭 실행 과정

    1. 시간 0: P1이 도착하여 실행을 시작합니다.
    2. 시간 1: P2가 도착합니다. P1의 남은 시간은 7, P2의 실행 시간은 4이므로 P2가 P1을 선점하고 실행을 시작합니다.
    3. 시간 2: P3가 도착합니다. P2의 남은 시간은 3, P3의 실행 시간은 9이므로 P2가 계속 실행됩니다.
    4. 시간 3: P4가 도착합니다. P2의 남은 시간은 2, P4의 실행 시간은 5이므로 P2가 계속 실행됩니다.
    5. 시간 5: P2가 종료됩니다. 남은 프로세스 중 P4의 실행 시간이 5로 가장 짧으므로 P4가 실행을 시작합니다.
    6. 시간 10: P4가 종료됩니다. 남은 프로세스 중 P1의 남은 시간은 7, P3의 실행 시간은 9이므로 P1이 실행을 재개합니다.
    7. 시간 17: P1이 종료됩니다. P3가 실행을 시작합니다.
    8. 시간 26: P3가 종료됩니다.

2️⃣ RR (Round Robin)

    • 핵심 문장: 각 프로세스에 동일한 시간 할당량(Time Quantum)을 부여하여 순환적으로 CPU를 할당하는 방식입니다.
    • 쉽게 설명하면: 모든 프로세스가 공평하게 CPU를 사용할 수 있도록 일정 시간씩 번갈아가며 실행합니다.
    • 장점: 응답 시간이 일정하여 시분할(Time-Sharing) 시스템에 적합합니다.
    • 단점: 시간 할당량이 너무 작으면 **문맥 교환(Context Switching)**이 자주 발생하여 오버헤드가 증가합니다.
    • 시험 포인트: 선점형 스케줄링이며, 시간 할당량의 크기가 성능에 큰 영향을 미친다는 점을 기억하세요.
      프로세스                                                              도착 시간(AT)                                   실행 시간(BT)
      P1 0 5
      P2 1 3
      P3 2 1
      P4 3 2
      P5 4 3
       
      • 시간 할당량(Time Quantum): 2 단위

🧭 실행 과정

    1. 시간 0: P1이 도착하여 실행을 시작합니다. 2단위 실행 후 남은 시간은 3입니다.
    2. 시간 2: P2가 도착하여 실행을 시작합니다. 2단위 실행 후 남은 시간은 1입니다.
    3. 시간 4: P3가 도착하여 실행을 시작합니다. 실행 시간이 1이므로 1단위 실행 후 종료됩니다.
    4. 시간 5: P4가 도착하여 실행을 시작합니다. 2단위 실행 후 종료됩니다.
    5. 시간 7: P5가 도착하여 실행을 시작합니다. 2단위 실행 후 남은 시간은 1입니다.
    6. 시간 9: P1이 남은 3단위 중 2단위 실행 후 남은 시간은 1입니다.
    7. 시간 11: P2가 남은 1단위 실행 후 종료됩니다.
    8. 시간 12: P5가 남은 1단위 실행 후 종료됩니다.
    9. 시간 13: P1이 남은 1단위 실행 후 종료됩니다.

3️⃣ 선점형 우선순위 스케줄링 (Preemptive Priority Scheduling)

    • 핵심 문장: 우선순위가 높은 프로세스를 먼저 실행하며, 더 높은 우선순위의 프로세스가 도착하면 현재 실행 중인 프로세스를 중단하는 방식입니다.
    • 쉽게 설명하면: 각 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스에 CPU를 먼저 할당합니다.
    • 장점: 중요한 작업을 먼저 처리할 수 있습니다.
    • 단점: 우선순위가 낮은 프로세스가 계속 뒤로 밀려 기아(Starvation) 현상이 발생할 수 있습니다.
    • 시험 포인트: 선점형 스케줄링이며, 기아 현상을 방지하기 위해 Aging 기법을 사용할 수 있다는 점을 기억하세요.
      프로세스                                            도착 시간(AT)                       실행 시간(BT)                      우선순위

       

      P1 0 4 2
      P2 1 3 1
      P3 2 1 3
      P4 3 2 2
       
      • 우선순위 기준: 숫자가 작을수록 높은 우선순위입니다.

🧭 실행 과정

    1. 시간 0: P1이 도착하여 실행을 시작합니다.
    2. 시간 1: P2가 도착합니다. P2의 우선순위(1)가 P1의 우선순위(2)보다 높으므로, P1은 중단되고 P2가 실행을 시작합니다.
    3. 시간 2: P3가 도착합니다. 현재 실행 중인 P2의 우선순위(1)가 P3의 우선순위(3)보다 높으므로, P2가 계속 실행됩니다.
    4. 시간 4: P2가 종료됩니다. 대기 중인 프로세스 중 P1과 P4가 있습니다. P1의 우선순위(2)와 P4의 우선순위(2)가 동일하므로, 도착 시간이 빠른 P1이 실행을 재개합니다.
    5. 시간 6: P1이 종료됩니다. 남은 프로세스는 P3와 P4입니다. P4의 우선순위(2)가 P3의 우선순위(3)보다 높으므로, P4가 실행을 시작합니다.
    6. 시간 8: P4가 종료됩니다. 마지막으로 남은 P3가 실행을 시작합니다.
    7. 시간 9: P3가 종료됩니다.

 

🧠 비선점형 스케줄링이란?

  • 핵심 문장: 비선점형 스케줄링은 한 번 CPU를 할당받은 프로세스가 작업을 마칠 때까지 CPU를 점유하는 방식입니다.
  • 쉽게 설명하면: 운영체제가 실행 중인 프로세스를 강제로 중단시키지 않고, 해당 프로세스가 종료될 때까지 기다리는 스케줄링 방식입니다.
  • 핵심 키워드: 비선점형(Non-Preemptive), 우선순위(Priority), 기아(Starvation), Aging

1️⃣ FCFS (First-Come, First-Served)

    • 핵심 문장: 프로세스를 도착한 순서대로 처리하는 방식입니다.
    • 쉽게 설명하면: 먼저 도착한 프로세스부터 순서대로 CPU를 할당받습니다.
    • 장점: 구현이 간단합니다.
    • 단점: 긴 작업이 먼저 도착하면 짧은 작업들이 오랫동안 기다려야 하는 Convoy Effect가 발생할 수 있습니다.
      프로세스                                                                 도착 시간(AT)                                  실행 시간(BT)

       

      P1 0 5
      P2 1 3
      P3 2 8
       

🧭 실행 과정

    1. 시간 0: P1이 도착하여 실행을 시작합니다. 5단위 실행 후 종료됩니다.
    2. 시간 5: P2가 도착하여 실행을 시작합니다. 3단위 실행 후 종료됩니다.
    3. 시간 8: P3가 도착하여 실행을 시작합니다. 8단위 실행 후 종료됩니다.

2️⃣ SJF (Shortest Job First)

    • 핵심 문장: 가장 짧은 실행 시간을 가진 프로세스를 먼저 실행하는 방식입니다.
    • 쉽게 설명하면: 실행 시간이 가장 짧은 프로세스에 CPU를 먼저 할당합니다.
    • 장점: 평균 대기 시간을 최소화할 수 있습니다.
    • 단점: 긴 작업이 계속 뒤로 밀려 기아(Starvation) 현상이 발생할 수 있습니다.
      프로세스                                                               도착 시간(AT)                                 실행 시간(BT)

       

      P1 0 6
      P2 2 8
      P3 4 3
       

🧭 실행 과정

    1. 시간 0: P1이 도착하여 실행을 시작합니다. 6단위 실행 후 종료됩니다.
    2. 시간 6: P2와 P3가 도착해 있습니다. 실행 시간이 더 짧은 P3(3단위)가 먼저 실행됩니다.
    3. 시간 9: P3가 종료되고, P2가 실행을 시작합니다. 8단위 실행 후 종료됩니다.

3️⃣ Priority Scheduling (비선점형 우선순위 스케줄링)

    • 핵심 문장: 우선순위가 높은 프로세스를 먼저 실행하는 방식입니다.
    • 쉽게 설명하면: 각 프로세스에 우선순위를 부여하고, 우선순위가 높은 프로세스에 CPU를 먼저 할당합니다.
    • 장점: 중요한 작업을 먼저 처리할 수 있습니다.
    • 단점: 우선순위가 낮은 프로세스가 계속 뒤로 밀려 기아(Starvation) 현상이 발생할 수 있습니다.
    • 해결 방법: Aging 기법을 사용하여 시간이 지남에 따라 우선순위를 높여 기아 현상을 방지할 수 있습니다.
      프로세스                                              도착 시간(AT)                    실행 시간(BT)                    우선순위

       

      P1 0 4 2
      P2 1 3 1
      P3 2 1 3
       
      • 우선순위 기준: 숫자가 작을수록 높은 우선순위입니다.

🧭 실행 과정

    1. 시간 0: P1이 도착하여 실행을 시작합니다.
    2. 시간 1: P2가 도착합니다. P2의 우선순위(1)가 P1의 우선순위(2)보다 높으므로, P1은 중단되고 P2가 실행을 시작합니다.
    3. 시간 4: P2가 종료됩니다. P1이 실행을 재개합니다.
    4. 시간 7: P1이 종료됩니다. P3가 실행을 시작합니다.
    5. 시간 8: P3가 종료됩니다.

4️⃣ HRN (Highest Response Ratio Next)

  • 핵심 문장: 응답 비율이 가장 높은 프로세스를 먼저 실행하는 방식입니다.
  • 쉽게 설명하면: 대기 시간과 실행 시간을 고려하여 응답 비율이 높은 프로세스를 우선 실행합니다.
  • 우선순위 계산식: (대기 시간 + 실행 시간) / 실행 시간
  • 장점: 긴 작업도 대기 시간이 길어지면 우선순위가 높아져 기아(Starvation) 현상을 방지할 수 있습니다.

 

 

리눅스 운영체제 명령어:

1️⃣ ls – 디렉토리 목록 보기

  • 핵심 문장: 현재 디렉토리의 파일과 폴더 목록을 표시합니다.
  • 쉽게 설명하면: 현재 위치에 어떤 파일이나 폴더가 있는지 확인할 때 사용합니다.
  • 예시: ls -l (자세한 정보 포함), ls -a (숨김 파일 포함)

2️⃣ cd – 디렉토리 이동

  • 핵심 문장: 다른 디렉토리로 이동할 때 사용합니다.
  • 쉽게 설명하면: 폴더를 열어 그 안으로 들어가는 것과 같습니다.
  • 예시: cd /home/user/DocumentsGeeksforGeeks

3️⃣ pwd – 현재 디렉토리 확인

  • 핵심 문장: 현재 작업 중인 디렉토리의 전체 경로를 표시합니다.
  • 쉽게 설명하면: 지금 내가 어느 폴더에 있는지 알려줍니다.
  • 예시: pwdHostinger+6vsys.host+6people.duke.edu+6

4️⃣ cp – 파일 복사

  • 핵심 문장: 파일이나 디렉토리를 복사할 때 사용합니다.
  • 쉽게 설명하면: 파일을 복사하여 동일한 내용의 새 파일을 만듭니다.
  • 예시: cp file1.txt file2.txt

5️⃣ mv – 파일 이동 또는 이름 변경

  • 핵심 문장: 파일이나 디렉토리를 이동하거나 이름을 변경할 때 사용합니다.
  • 쉽게 설명하면: 파일을 다른 위치로 옮기거나 이름을 바꿀 수 있습니다.
  • 예시: mv oldname.txt newname.txtvsys.host+1LinkedIn+1

6️⃣ rm – 파일 삭제

  • 핵심 문장: 파일이나 디렉토리를 삭제할 때 사용합니다.
  • 쉽게 설명하면: 필요 없는 파일을 제거합니다.computersecuritystudent.com+1people.duke.edu+1
  • 주의: 삭제된 파일은 복구하기 어렵습니다.
  • 예시: rm file.txt, rm -r folder/ (디렉토리 삭제)GeeksforGeeks

7️⃣ mkdir – 새 디렉토리 생성

  • 핵심 문장: 새로운 디렉토리를 만들 때 사용합니다.
  • 쉽게 설명하면: 새 폴더를 생성합니다.
  • 예시: mkdir new_folder

8️⃣ rmdir – 빈 디렉토리 삭제

  • 핵심 문장: 비어 있는 디렉토리를 삭제할 때 사용합니다.
  • 쉽게 설명하면: 내용이 없는 폴더를 제거합니다.
  • 예시: rmdir empty_folder

9️⃣ touch – 새 파일 생성

  • 핵심 문장: 새로운 빈 파일을 만들거나 기존 파일의 수정 시간을 변경합니다.
  • 쉽게 설명하면: 새 파일을 만들거나 파일의 시간을 업데이트합니다.
  • 예시: touch newfile.txtGeeksforGeeks+1computersecuritystudent.com+1

🔐 권한 및 소유권 관리 명령어

🔟 chmod – 파일 권한 변경

  • 핵심 문장: 파일이나 디렉토리의 접근 권한을 변경합니다.
  • 쉽게 설명하면: 누가 파일을 읽고 쓸 수 있는지 설정합니다.
  • 예시: chmod 755 script.sh

1️⃣1️⃣ chown – 파일 소유자 변경

  • 핵심 문장: 파일이나 디렉토리의 소유자와 그룹을 변경합니다.
  • 쉽게 설명하면: 파일의 주인을 바꿉니다.
  • 예시: chown user:group file.txtGeeksforGeeks

🔍 파일 검색 및 내용 확인 명령어

1️⃣2️⃣ find – 파일 검색

  • 핵심 문장: 지정한 조건에 맞는 파일이나 디렉토리를 검색합니다.
  • 쉽게 설명하면: 특정 이름이나 조건에 맞는 파일을 찾아줍니다.
  • 예시: find /home -name "file.txt"

1️⃣3️⃣ grep – 텍스트 검색

  • 핵심 문장: 파일 내에서 특정 문자열을 검색합니다.
  • 쉽게 설명하면: 파일 내용 중에서 원하는 단어나 문장을 찾아줍니다.
  • 예시: grep "error" logfile.txtGeeksforGeeks

📄 파일 내용 표시 및 출력 명령어

1️⃣4️⃣ cat – 파일 내용 출력

  • 핵심 문장: 파일의 내용을 화면에 출력합니다.
  • 쉽게 설명하면: 파일 안에 어떤 내용이 있는지 보여줍니다.
  • 예시: cat file.txt

1️⃣5️⃣ echo – 문자열 출력

  • 핵심 문장: 지정한 문자열을 화면에 출력하거나 파일에 기록합니다.
  • 쉽게 설명하면: 문장을 출력하거나 파일에 내용을 추가합니다.
  • 예시: echo "Hello World", echo "Hello" > file.txt