CS

OS (운영체제)와 컴퓨터

dhfkdlsj 2025. 2. 10. 00:11

🖥️ 운영체제(OS, Operating System)

OS(운영체제)란, 사용자가 컴퓨터를 쉽게 다룰 수 있도록 도와주는 인터페이스이다.
한정된 메모리 및 시스템 자원을 효율적으로 분배하는 역할을 한다.

📌 OS의 역할

  1. CPU 스케줄링과 프로세스 관리

    • CPU 소유권을 어떤 프로세스에 할당할지 결정
    • 프로세스 생성 및 삭제, 자원 할당 및 반환 관리
  2. 메모리 관리

    • 한정된 메모리를 각 프로세스에 효율적으로 할당
  3. 디스크 파일 관리

    • 디스크 파일 저장 및 관리 방법 결정
  4. I/O 디바이스 관리

    • 마우스, 키보드 등의 I/O 디바이스와 컴퓨터 간 데이터 교환 관리

🔹 운영체제의 구조


🛠️ 시스템 콜 (System Call)

  • 운영체제가 커널에 접근하기 위한 인터페이스

  • 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용

  • 유저 모드 → 커널 모드로 전환 후 파일을 읽고 다시 유저 모드로 복귀

장점:

  • 컴퓨터 자원에 대한 직접 접근 차단
  • 프로그램 간 보호 기능 제공


🔹 Modebit

  • 유저 모드(1) vs. 커널 모드(0) 구분
  • 시스템 콜이 실행될 때 modebit 값을 참고하여 전환

🔹 Trap

  • 소프트웨어 예외 발생 시 사용자 모드 → 커널 모드 전환
  • 특정 이벤트 처리를 위해 커널이 개입하는 과정

- 소프트웨어에 의해 발생하는 예외나 특정 이벤트를 처리하기 위해 사용자 모드에서 커널 모드로 전환되는 과정


🏃‍♂️ 프로세스와 스레드

프로세스 (Process)

  • 실행 중인 프로그램
  • CPU의 스케줄링 대상
  • 작업(Task)과 같은 의미로 사용됨

스레드 (Thread)

  • 프로세스 내 작업의 흐름
  • 프로세스 내 가장 작은 실행 단위


🔄 멀티 프로세싱 vs. 멀티 스레딩

멀티 프로세싱

여러 개의 프로세스를 동시에 실행하는 기법
✅ 여러 개의 프로세서가 병렬로 작업 처리
✅ 신뢰성이 높음 (특정 프로세스가 중단되어도 다른 프로세스로 대체 가능)


멀티 스레딩

하나의 프로세스 내에서 여러 개의 스레드 실행
✅ 스레드끼리 자원을 공유하여 효율성 증가
❌ 하나의 스레드에 문제가 생기면 다른 스레드에도 영향을 미칠 수 있음


🔗 공유 자원과 임계 영역

공유 자원 (Shared Resource)

  • 여러 프로세스, 스레드가 함께 접근하는 자원
  • 경쟁 상태(Race Condition): 두 개 이상의 프로세스가 공유자원을 동시에 읽기/쓰기 시 발생

임계 영역 (Critical Section)

  • 둘 이상의 프로세스, 스레드가 공유 자원에 접근하는 순서에 따라 결과가 달라지는 코드 영역
  • 해결 방법: 뮤텍스, 세마포어, 모니터 사용
  • 이 3가지 방법 모두 상호 배제, 한정 대기, 융통성 조건을 만족한다.

임계 영역 문제 해결을 위한 조건

  1. 🔒 상호 배제 (Mutual Exclusion)

    • 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 접근할 수 없음
  2. ⏳ 한정 대기 (Bounded Waiting)

    • 특정 프로세스가 영원히 임계 영역에 들어가지 못하는 상태가 발생하면 안 됨
  3. 🔄 융통성 (Progress)

    • 어떠한 프로세스도 임계 영역을 사용하지 않는다면, 임계 영역 외부의 프로세스는 자유롭게 접근 가능해야 함
    • 이때, 프로세스들은 서로 방해하지 않아야 함

🔒 동기화 기법

1️⃣ 뮤텍스 (Mutex)

  • 공유 자원을 lock() → unlock() 방식으로 제어
  • 잠금과 잠금 해제의 두 가지 상태만 가짐

2️⃣ 세마포어 (Semaphore)

  • 뮤텍스의 일반화된 형태
  • wait() → 차례가 올 때까지 대기
  • signal() → 다음 프로세스로 순서 넘김
  • 종류:
    • 바이너리 세마포어 (0과 1만 가능, 뮤텍스와 유사)
    • 카운팅 세마포어 (여러 개의 값 가능, 자원 개수 제한)

모니터

3️⃣ 모니터 (Monitor)

  • 모니터 큐를 통해 공유 자원 접근을 순차적으로 처리
  • 세마포어보다 구현이 쉬우며, 상호 배제가 자동으로 적용됨

🚨 교착 상태 (Deadlock)

교착 상태란?

✅ 두 개 이상의 프로세스가 서로 가진 자원을 기다리며 중단된 상태

발생 조건

  1. 상호 배제 - 한 프로세스가 자원을 독점
  2. 점유 대기 - 특정 프로세스가 점유한 자원을 다른 프로세스가 요청
  3. 비선점 - 다른 프로세스의 자원을 강제로 가져올 수 없음
  4. 환형 대기 - 프로세스 1과 2가 서로의 자원을 요구하며 기다리는 상황

교착 상태 해결 방법

  1. 사전 예방 - 자원 할당 시 교착 상태 발생 조건을 방지
  2. 회피 (은행원 알고리즘)
    • 자원의 최대 요청량을 기반으로 안전 여부 판단 후 할당
  3. 탐지 후 해결
    • 사이클이 존재하는지 탐색 후 해당 프로세스 종료
  4. 강제 종료
    • 교착 상태 발생시 작업 종료
    • ex) 가끔 프로세스를 실행시키다가 '응답 없음'이라고 뜨는 경우

📌 추가: 은행원 알고리즘 (Banker's Algorithm)

  • 자원의 총량과 현재 할당된 자원의 양을 기준으로 안정/불안정 상태 구분
  • 안정 상태 유지 가능할 경우만 자원 할당
  • 불안정 상태 초래 가능성이 있는 경우 요청 거절

📚 참고 자료