본문 바로가기

Backend/CS

2. 운영체제 (프로세스와 스케쥴링)

반응형
SMALL

멀티 프로그래밍

  • 목적: CPU의 활용도를 극대화하는 것입니다. 이를 위해, 하나의 프로그램이 I/O 작업 등으로 대기 상태에 있을 때 다른 프로그램이 CPU를 사용할 수 있도록 합니다.
  • 동작 원리: 프로그램이 CPU를 사용하다가 파일을 읽는 등의 작업으로 대기 상태가 되면, 운영 체제는 대기 중인 다른 프로그램을 CPU에 할당합니다. 이는 시스템 자원의 효율적 사용을 가능하게 합니다.

멀티 태스킹과 멀티 프로세싱

  • 멀티 태스킹
    • 정의: 단일 CPU에서 여러 프로세스 또는 작업을 동시에 처리하는 기술입니다.
    • 메커니즘: 시간을 매우 짧은 단위로 분할하여, 각 프로세스에 번갈아 할당함으로써 동시에 실행되는 것처럼 보이게 합니다.
  • 멀티 프로세싱
    • 정의: 여러 개의 CPU를 사용하여 여러 프로세스를 동시에 실행하는 기술입니다.
    • 장점: 프로세스 실행 속도가 극대화되며, 하나의 CPU에서 발생할 수 있는 병목 현상을 줄일 수 있습니다.

스케쥴링 알고리즘

  • FIFO (First Come First Served)
    • 특징: 가장 간단한 스케쥴링 알고리즘으로, 먼저 도착한 프로세스를 먼저 처리합니다.
    • 단점: 짧은 작업이 긴 작업 뒤에 오면 대기 시간이 길어질 수 있습니다.

  • 최단 작업 우선 (Shortest Job First, SJF)
    • 특징: 실행 시간이 가장 짧은 프로세스를 우선적으로 처리합니다.
    • 장점: 평균 대기 시간을 줄일 수 있습니다.

  • 우선순위 기반 스케쥴러
    • 정적 우선순위: 프로세스가 생성될 때 미리 지정된 우선순위에 따라 처리합니다.
    • 동적 우선순위: 시스템의 상황에 따라 우선순위가 변경될 수 있습니다.

  • Round Robin
    • 특징: 각 프로세스에 동일한 시간 동안 CPU를 할당하고, 순환식으로 처리합니다.
    • 장점: 응답 시간이 예측 가능하며 공정한 시스템입니다.

프로세스 상태

  • Running State: 프로세스가 CPU에서 명령어를 실행 중인 상태입니다.
  • Ready State: 프로세스가 CPU에서 실행될 준비가 되어 있는 상태입니다.
  • Block State: 프로세스가 I/O 작업과 같은 특정 이벤트를 기다리는 상태입니다.

프로세스 구조

  • 프로세스 메모리
    • Text (Code): 프로그램의 실행 코드가 저장됩니다.
    • Data: 초기화된 전역 변수와 정적 변수가 저장됩니다.
    • Stack: 함수 호출, 로컬 변수 등 임시 데이터가 저장됩니다.
    • Heap: 동적으로 할당된 메모리가 저장됩니다.

  • 제어 블록
    • PC (Program Counter): 다음에 실행할 명령어의 주소를 가리킵니다.
    • SP (Stack Pointer): 현재 스택의 최상단을 가리킵니다.

프로세스와 컴퓨터 구조

  • PC와 SP는 프로그램의 실행 상태를 나타내는 데 중요합니다.
  • 임베디드 시스템과 같은 경우, 디버깅 시 이러한 값들을 캡처하여 프로그램의 상태를 파악합니다.
반응형
LIST