운영체제 - 프로세스, 스레드

hsso_o·2024년 10월 16일
0

스터디

목록 보기
46/46

프로세스 (Process)

  • 프로세스 : 메모리에 적재되어 실행 중인 프로그램
  • 특징
    • 독립성 : 독립적으로 메모리 공간을 가지므로 서로 다른 프로세스의 메모리에 직접 접근 불가
    • 자원 관리 : CPU 시간, 메모리, 파일 핸들 등 자원을 할당받고 관리
    • 프로세스 간 통신 (IPC): 프로세스는 서로 통신하기 위해 IPC 메커니즘(예: 파이프, 소켓, 공유 메모리 등)을 사용
  • 프로세스 상태
    1. 생성(Starting) / 준비(Ready) 상태

      • 설명: 프로세스가 메모리에 로드되어 CPU를 할당받기 전의 상태입니다. CPU를 사용하기 위해 대기합니다.
      • fork()와 exec()
        • 부모프로세스는 fork 호출을 통해 자신의 복사본을 자식 프로세스 생성
          • fork 시스템 호출 : 복사본 생성 - 부모 프로세스의 자원 상속
        • 자식 프로세스는 exec 호출을 통해 자신의 메모리 공간을 다른 프로그램으로 교체
          • exec 시스템 호출 : 코드/데이터 영역은 실행할 프로그램으로 바뀌고 나머지 영역 초기화 → 자신의 메모리 공간을 새로운 프로그램으로 덮어씀
    2. 실행(Running) 상태

      • 설명: 프로세스가 CPU에서 실행 중인 상태입니다. 명령을 수행하고 있습니다.
    3. 대기(Waiting) / 블록(Blocked) 상태

      • 설명: 프로세스가 입출력 작업, 자원 할당 등의 이유로 대기하는 상태입니다. CPU를 사용하지 않습니다.
    4. 종료(Terminated) 상태
      - 설명: 프로세스의 실행이 완료되어 종료된 상태입니다. 더 이상 CPU를 사용하지 않으며, 메모리에서 제거됩니다.

      상태 전환

    • 준비 -> 실행: CPU를 할당받아 실행 상태로 전환
    • 실행 -> 대기: 자원 대기나 입출력 작업으로 대기 상태로 전환
    • 대기 -> 준비: 자원이나 조건이 충족되면 준비 상태로 전환
    • 실행 -> 종료: 작업 완료나 강제 종료로 종료 상태로 전환
  • 컨텍스트 스위칭
    • PCB(프로세스 제어 블록): 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터
      • 프로세스 생성 시, 운영체제는 해당 PCB를 생성함
    • PCB를 기반으로 프로세스의 상태를 저장하고 로드시키는 과정

스레드

  • 프로세스의 실행 가능한 흐름 단위(작은 단위)
    • 프로세스는 여러 스레드를 가질 수 있음
  • 특징
    • 같은 프로세스 내의 메모리 공간과 자원 공유
    • 생성과 관리가 비교적 가볍고 빠름
    • 여러 스레드가 동시에 실행, 멀티코어 CPU 활용해 병렬 처리 가능

멀티프로세스

  • 여러 개의 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것
    • 하나의 일을 병렬로 처리할 수 있음
  • 프로세스 중 일부에 문제가 발생해도 다른 프로세스로 처리 가능
  • 단점
    • 문맥교환 시, 오버헤드로 성능 저하 발생할 수 있

멀티스레드

  • 프로세스 내의 작업을 여러 개의 스레드로 처리하는 것
  • 프로세스 내의 스레드끼리 자원을 공유하기 때문에 효율성이 높음
  • 단점
    • 하나의 스레드 장애로 전체 스레드가 영향을 받을 수도 있음
    • 자원을 공유하기 때문에 동기화 문제 발생 가능
  • 동시성과 병렬성
    • 동시성 : 싱글 코어에서 멀티스레드 동작 → 여러 개의 스레드가 번갈아가며 실행
    • 병렬성 : 실제 멀티 코어에서 멀티스레드 동작 → 각 코어들이 동시에 실행
profile
아뇨 소혠데요-

0개의 댓글