console.log

[CS] 운영체제 본문

개발공부/CS

[CS] 운영체제

foresight 2023. 9. 30. 22:45

1. Process (프로세스)

  • 실행 중인 프로그램 (CPU의 할당을 받을 수 있는 것)
  • 주소 공간, 파일, 메모리 등을 총칭
  • PCB (Process Control Block, 프로세스 제어 블록)
    • 프로세스에 대한 중요한 정보 저장
    • 프로세스 생성과 동시에 고유한 PCB 생성
    • 프로세스가 CPU를 반환하기 전, 작업의 진행 상황을 저장하는 곳
    • 저장되는 정보
      • 프로세스 식별자 (Process ID, PID)
      • 프로세스 상태 (new, readty, running, wating, terminated …)
      • 프로그램 카운터 : 다음 실행할 명령어 주소
      • CPU 레지스터
      • CPU 스케쥴링 정보 : 프로세스 우선순위, 스케쥴 큐에 대한 포인터 …
      • 메모리 관리 정보 : 페이지 테이블, 세그먼트 테이블
      • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치, 열린 파일 목록
      • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정정보 등

2. Thread (스레드)

  • 프로세스의 실행 단위
  • 구성
    • 스레드 ID
    • 프로그램 카운터
    • 레지스터 집합
    • 스택
  • 같은 프로세스에 속한 스레드와 공유하는 것
    • 코드
    • 데이터 섹션
    • 열린 파일
    • 신호
  • 멀티스레딩이란 ?
    • 하나의 스레드를 다수의 실행 단위로 구분해 수행 능력 향상
    • 각각의 스레드는 독립적인 작업 수행 → 각자의 스택, PC 레지스터 값 가짐
    • 장점
      • 메모리 공간, 시스템 자원 소모 절약 → Heap 영역을 통해 데이터 주고받을 수 있음
      • 간단한 통신 방법
      • 캐시 메모리를 비울 필요가 없어 빠른 context switch 가능
      • 응답시간 단축
    • 문제점
      • 동일한 자원에 동시에 접근할 때 문제가 발생
      • 동기화 작업 필요 → 병목 현상 발생하여 성능 저하 가능성 높음
  • 멀티 스레드 vs 멀티 프로세스
멀티 스레드 멀티 프로세스
적은 메모리 공간 많은 메모리 공간
빠른 문맥 전환 느린 문맥 전환
동시에 여러 작업 수행 동시에 여러 작업 수행
하나의 스레드 종료 시
전체 스레드 종료
다른 프로세스에 영향을
끼치지 않음
동기화 문제 존재 동기화 문제 존재하지 않음

 


3. 스케줄러

  • 프로세스를 스케줄링 하기 위한 Queue
    • Job Queue - 현재 시스템 내의 모든 프로세스
    • Ready Queue - 메모리 내에 있으면서 CPU를 잡아 실행되기를 기다리는 프로세스
    • Device Queue - Device I/O 작업을 대기하는 프로세스
  • Queue에 프로세스를 넣고 빼주는 스케줄러
    • 장기스케줄러
      • 메모리와 디스크 사이의 스케줄링 담당
      • 프로세스에 메모리 할당
      • 실행중인 프로세스 수 제어
      • 프로세스 상태 (new → ready)
    • 단기스케줄러
      • CPU와 메모리 사이의 스케줄링 담당
      • Ready Queue의 어떤 프로세스 running 시킬지 결정
      • 프로세스에 CPU 할당
      • 프로세스 상태 (ready → running → wating → ready)
    • 중기스케줄
      • 여유 공간 마련을 위해 모든 프로세스를 메모리에서 디스크로 옮김
      • 프로세스에게서 메모리를 할당 해제
      • 실행중인 프로세스 수 제어
      • 프로세스 상태 (ready → suspended (외부적인 이유로 수행 정지 상태로 메모리에서 내려간 상태))

4. CPU 스케줄러

  • FCFS (First Come First Served)
    • 특징
      • 먼저 온 순서대로 처리
      • 비선점형 스케줄링 (할당되었던 CPU가 반환될 때 까지 기다림)
    • 문제점
      • 소요시간이 긴 프로세스가 먼저 도착하면 효율이 떨어짐
  • SJF (Shortest - Job - First)
    • 특징
      • 소요 시간이 짧은 프로세스에게 먼저 할당
      • 비선점형 스케줄링
    • 문제점
      • 소요 시간이 지나치게 긴 프로세스는 거의 영원히 CPU 할당받을 수 없음 (지나친 차별)
  • SRTF (Shortest Remaining Time First)
    • 특징
      • 새로운 프로세스가 도착할 때마다 새로운 스케줄링
      • 선점형 스케줄링 (현재 남은 시간보다 짧은 프로세스가 도착하면 CPU 뺏김)
    • 문제점
      • 매번 스케줄링을 새로 하기 때문에 CPU 사용시간을 측정할 수 없음
  • Priority Scheduling
    • 특징
      • 우선순위에 따라 CPU 할당 (수가 작을수록 우선순위 높음)
      • 선점형 스케줄링 (더 높은 우선순위 프로세스가 도착하면 그 즉시 CPU 선점)
      • 비선점형 스케줄링 (더 높은 우선순위 프로세스가 도착하면 Ready Queue의 Head에 삽입)
    • 문제점
      • 실행 준비는 됐지만 CPU를 사용 못하는 프로세스 무기한 봉쇄가 이루어질 수 있음
    • 해결책
      • 우선순위가 낮더라도 오래 기다리면 우선순위 높여주기
  • Round Robin
    • 특징
      • 현대적인 CPU 스케줄링
      • 모든 프로세스가 동일한 시간 동안 할당됨
      • 할당 시간이 지나면 선점 당한 뒤 ready queue 맨 뒤에 삽입
      • CPU 사용시간이 랜덤한 프로세스가 섞여있을 경우 용이
    • 장점
      • 빠른 응답 시간 (대기 시간 감소)
      • 공정한 스케줄링
    • 주의할 점
      • 설정한 할당 시간이 너무 커지면 FCFS와 같아짐
      • 설정한 시간이 너무 작아도 overhead 발생
      • 즉, 적당한 할당 시간을 설정하는 것이 중요 !

'개발공부 > CS' 카테고리의 다른 글

[CS] 자료구조  (2) 2023.09.29
[CS] Front-End  (0) 2023.09.23
[CS] 네트워크  (1) 2023.09.22
[CS] JavaScript  (0) 2023.09.21
[CS] Basic  (0) 2023.09.20