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

링딩·2023년 3월 17일
0

Computer Science

목록 보기
7/49

프로세스와 스레드의 차이

단어 정의

  • 프로세스 : 프로그램을 메모리 상에서 진행 중인 작업
  • 스레드 : 프로세스 안에서 실행되는 여러 흐름 단위

기본적으로 프로세스마다 최소 1개의 스.레.드.를 소유 (메인 스레드 포함)


프로세스는 이처럼 각각 별도의 '주소공간을 할당' (독립적)

  • code
  • Data : 전역변수, 정적변수, 배열 등
  • Heap : 동적 할당 시 사용
  • Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
    -> 스레드는 Stack만 따로 할당 받음, 나머지는 공유받음.

멀티 프로세스

* 정의

하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행

  • 장점
    안전성 (메모리 침범을 OS 내에서 해결)
  • 단점
    독립적인 메모리 영역을 가져, 작업량이 많아질 수록 '오버헤드' 발생, '컨텍스트 스위칭'으로 성능저하

멀티 스레드

* 정의

하나의 프로세스에서 여러개의 스레드를 만들어 자원의 생성과 관리의 중복을 최소화 하는 것

  • 장점
  1. 메모리 공간, 시스템 자원의 효율성 증가
  2. 컨텍스트 스위칭시 비용이 적게든다.
    => 프로그램 응답시간의 단축
  • 단점
    하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받음


프로세스와 스레드 차이점

프로레스는 자신만의 고유 공간과, 자원 할당을 받아 사용
but 스레드는 다른 스레드와 공간, 자원을 공유하여 사용
=> 그래서 스레드는 좀 더 효율적으로 통신할 수 있음



컨텍스트 스위칭

(1) 정의 :

프로세스들의 상태 전이를 통해 현재 실행중인 (running state) 프로세스를 변경하는 작업, CPU에서 실행할 프로세스를 교체하는 기술

(2) '컨텍스트 스위칭'을 일으키는 주 원인

1) 각 프로세스에 주어진 시간 자원을 모두 사용했을때
2) 현재 프로세스에서 i/o 호출이 일어나 해당 i/o 작업이 끝날때 까지 waiting 상태로 전이될 경우



우리는 실제로 음악과 채팅 등을 동시에 하는것처럼 보이지만 동시에 처리되는게 아니다. 짧고 빠른 시간 내에 시스템이 처리 되는 것을 동시처리로 착각한 것일 뿐. 그런 동작을 하기 위해서는 프로세스들이 교체되어 수행하고 다시 기존 프로세스를 불러올 수 있어야 하는데 이전 작업에 대한 내용을 기억하기 위해서 무언가 필요하지 않을까?

✔ PCB란? (Process Context Block)

운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로 즉, 프로세스의 상태정보를 저장하는 구조체이다.


컨텍스트 스위칭 순서

컨텍스트 스위칭은 크게 다음과 같은 두 동작으로 구분할 수 있다.

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트하여 메인 메모리에 저장
  2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보를 CPU에 넣고 실행
profile
초짜 백엔드 개린이

0개의 댓글