[운영체제] 프로세스와 스레드

James·2023년 12월 19일
0

운영체제

목록 보기
2/13
post-thumbnail

프로세스란 ?


개념 : 프로세스는 실행중인 프로그램

프로세스 vs 스레드

프로세스 : 컴퓨터 자원을 분할해서 쓰지만
쓰레드 : 프로세스마다 주어진 전체 자원을 함께 사용한다.

프로세스 제어 블록(PCB)


운영체제는 프로세스를 관리하는데 사용한다.

  • CPU는 한 프로세스가 종료될때 까지 수행하지 x
    => 때문에 여러 프로세스를 중간중간 바꿔가며 수행한다. 이로인해서 PCB가 필요해진 것 (프로세스의 정보를 저장하려고)
  • 각 프로세스 마다 갖고 있다.

PCB에 들어 있는 것

  • PID
  • Process Status
  • Program Counter
  • CPU 레지스터
  • CPU 스케쥴링 정보
  • 메모리 관리정보
  • 입출력 상태 정보등
    :

PCB에 정보들은 프로세스가 중단되었다가 다시 시작될때, 해당 프로세스를 이전 상태로 복원하는데 필요하다.

프로세스 ID(PID)

특정 프로세스를 식별하기 위해 부여하는 고유한 번호다.

Process Status

생성(create), 준비(ready), 실행 (running), 대기(waiting), 완료(terminated) 상태

Program Counter

프로그램 계수기는 이 프로세스가 다음에 실행할 명령어의 주소를 가리킵니다.

CPU 레지스터 값

프로세스는 자신의 실행 차례가 돌아오면 이전까지 사용했던 레지스터의 중간값을 복원한다.

CPU 스케줄링 정보

  • 우선 순위, 최종 실행시각, CPU 점유시간등

프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보도 PCB에 기록된다.

메모리 관리 정보

프로세스마다 메모리에 저장된 위치가 다르다. PCB에는 프로세스가 어느 주소에 저장되어 있는지에 대한 정보가 있어야 한다.

사용한 파일과 입출력 장치 목록

프로세스에 할당된 입출력장치 목록, 열린 파일 목록 등

IPC(Inter-Process Communication) 프로세스 간 통신

정의

  • 프로세스는 독립적으로 실행된다.
  • 프로세스 간의 통신을 해야하는 상황에 이를 가능하도록 해주는 것이 IPC통신이다.

OS에서 RealTime 이란 무엇인가 ?

: 사전적 정의인 실시간이라기 보다 '정해진 시간에 주어진 작업을 완료하는 것을 의미한다'

  • 하나의 오차가 없는 것을 말한다.

프로세스 메모리 영역

정적 할당 영역

코드 영역, 데이터 영역은 '크기가 고정된 영역'이다.\

1. 코드 영역 (=텍스트 영역)

  • 실행할 수 있는 코드
  • 읽기 전용 공간

2. 데이터 영역

  • 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간(잠깐 쓰는 느낌 X)
  • ex ) 전역변수(global variable)

동적 할당 영역

3. 힙 영역

  • 사용자(프로그래머)가 직접할당 할 수 있는 영역
  • 메모리를 언젠가 반환해야 메모리 누수를 막을 수 있다.

4. 스택 영역

  • 데이터를 일시적으로 저장하는 공간
  • 잠깐 쓰다가 말 값들이 저장되는 공간
  • ex) 지역변수(local variable)

스레드란?

프로세스 내에서 실행되는 흐름의 단위를 말한다.

동일한 프로세스내의 공유 메모리 공간에서 실행된다.

특징

  • 하나의 프로세스 내에서 자원(코드, 데이터, 힙)을 공유한다.

    ❗️ But, Stack 영역은 각 쓰레드 마다 독립적으로 존재한다.

장점

  • 스레드는 하나의 프로세스 내의 자원(코드, 데이터, 힙)을 공유하기 때문에 프로세스에 비해 자원 할당 비용이 적게 들고 문맥 교환(Context Swtich) 비용도 적게 듦
  • 다중 스레드의 경우 일부 스레드의 처리가 지연되더라도 다른 스레드에서 작업을 계속 처리할 수 있음
  • 프로세스 간의 통신은 IPC가 필요한 반면, 스레드는 공유(데이터, 힙) 주소 공간을 사용하여 데이터를 교환할 수 있음
  • 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리

단점

  • 하나의 스레드에서 발생한 문제가 프로세스 전반에 영향을 미칠 수 있음
  • 자원을 공유하기 때문에 동기화 문제가 발생할 수 있음
profile
의미있는 성장의 태도, 긍정적인 사고를 지닌 Deveolper

0개의 댓글