프로세스와 쓰레드

OwlSuri·2023년 3월 19일
0

방통대 운영체제

목록 보기
2/12

프로세스

프로세스

  • 실행중인 프로그램
    프로그램 : 동작은 하지 않는 정적/수동적 개체
    프로세스 : 동작을 하는 능동적 개체

  • 운영체제로부터 자원을 할당 받아 동작
    자원 : CPU, 메모리, 입출력장치, 파일 등
    동작 : CPU가 프로세스의 명령을 실행

  • 운영체제(프로세스 관리자)가 처리하는 작업

  1. 프로세스를 생성 및 종료
  2. 프로세스를 실행시키기 위한 스케줄링 작업
  3. 프로세스의 상태관리

프로세스의 구성

  • 메모리 구조
    ▪ 프로그램 실행에 필요한 '코드'와 '데이터'
    -> 코드 영역 : 프로그램 그 자체
    -> 데이터 영역 : 프로그램 실행 시 필요한 데이터(상수나 변수의 값 - 정적데이터 영역, 서브프로그램 호출 상태 - 스택영역, 동적변수 중 사용자가 수동으로 주는 값 - 힙영역)
  • 프로세스 제어 블록(PCB)
    ▪ 운영체제가 프로세스를 관리하기 위한 필요한 정보
    ▪ 각 프로세스마다 존재
    ▪ 여러 프로세스가 번갈아 실행되는 경우 PCB에 저장된 정보 활용

프로그램 카운터(PC) : 현재 실행중인 명령어의 바로 다음 명령어의 위치를 저장 -> 제어의 흐름 볼 수 있음

프로세스의 상태관리

  • 셍성 : 처음 작업이 시스템에 주어진 상태

  • 준비 : 실행준비가 되어 CPU 할당ㄷ을 기다리는 상태 (준비 큐)

  • 실행 : 프로세스가 처리되는 상태

  • 대기 : 프로세스가 I/O작업이 끝날떄까지 특정 자원을 할당받을 때까지 보류되는 상태

  • 종료 : 프로세스가 더이상 실행되지않도록 끝난 상태

  • 프로세스 상태 변화

부모프로세스 와 자식프로세스

  1. 프로세스 생성방법
    ▪ 사용자가 프로그램을 직접실행
    ▪ 한 프로세스가 다른 프로세스를 생성 -> 프로세스 생성 시스템 호출
    -> 부모 프로세스 : 시스템 호출을 하는 프로세스
    -> 자식 프로세스 : 시스템 호출을 통해 새로 생성된 프로세스
  2. 프로세스 생성 시스템 호출
  • UNIX, Linux : fork()
    ▪ 자식 프로세스는 부모 프로세스의 복제본

  • UNIX, Linux : exec()
    ▪ 자식 프로세스는 부모 프로세스와 다른 프로그램 실행

  • Windows : CreateProcess()
    ▪ 자식 프로세스는 새로운 프로그램으로 생성

  1. 프로세스 종료방법
  • 프로세스가 모든 처리를 완료(정상적 종료)
  • 부모 프로세스에 의해 자식 프로세스가 강제 종료
    ▪ 츠로세스 종료 시스템 호출 이용
    ▪ 자식 프로세스 생성시 얻은 자식 PID 이용

쓰레드

전통적인 프로세스

  • 하나의 프로그램을 실행하기 위한 기본적인 단위
  • 자원 소유의 단위
    ▪ 하나의 메모리 구조
  • 디스패칭의 단위
    ▪ 하나의 제어 흐름
  • 프로세스 내에서 다중 처리 불가

쓰레드(thread)

  • 프로세스 내에서의 다중처리를 위해 제안된 개념
  • 하나의 프로그램을 실행하기위한 기본적인 단위
  • 디스패칭의 단위(자원 소유의 단위 : 프로세스)
  • 하나의 프로세스 내에는 하나 이상의 쓰레드 존재

쓰레드와 프로세스

  • 쓰레드는 실행에 필요한 최소한의 정보만 가짐
    ▪ PC를 포함한 레지스터 값
    ▪ 상태정보
    ▪ 스택영역
  • 나머지 정보는 프로세스에 두고 다른 쓰레드와 공유

다중 구성된 프로세스

  • 멀티 CPU 또는 멀티코어 컴퓨터
    ▪ 다중 쓰레드를 병렬로 처리 가능

  • 처리 속도 별로 쓰레드가 나워진 경우(계산용, 입력용, 백업용)
    ▪ 효율적인 처리 가능

profile
기억이 안되면, 기록을 -

0개의 댓글