반응형

프로세스

컴퓨터가 실행하고 있는 프로그램

  • 프로세스는 독립된 메모리 영역을 할당 받는다.
    • Code, Data, Heap, Stack이 저장됨
      1. Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
      2. Data : 전역변수, 정적변수, 배열, ...
      3. Heap : 동적 할당 (new(), mallock()...)
      4. Stack : 지역변수, 매개변수, 리턴 값
  • 프로세스는 최소 하나의 스레드를 가지고 있다.(메인 스레드)
  • 프로세스는 커널에 의해 관리됨
    • PCB(Process Control Block) 자료구조 : 커널 메모리에 있으며, 프로세스들의 데이터가 저장되어 있다. 
      1.  PC(Program Counter) : 프로세스의 실행될 부분
      2.  프로세스 상태 :  생성, 준비, 수행, 대기, 중지
      3.  CPU register 내용 : CPU에서 프로세스의 명령어 집합, 데이터를 빠르게 사용하기 위해 마련한 CPU내 메모리 공간에 적재해서 사용함. 이 내용도 PCB에 있다.
      4.  프로세스 소유자, 허가 내역, 기계어 이미지, etc...

 

스레드

프로세스 내에서 동작의 실행 단위

  • 스레드는 프로세스 내에서 Stack은 따로 할당 받고, Code, Data, Heap 영역은 공유한다.
    • Stack을 공유하면 함수 호출 순서가 복잡해진다.
  • 스레드는 프로세스의 자원을 공유하기 때문에 다른 스레드에 의한 결과를 즉시 확인할 수 있다.
  • 프로세스 내에 존재하며 프로세스가 할당받은 자원을 이용하여 실행된다.

 

 

Context Switching

CPU에서 현재 실행중인 프로세스를 중지하고 다른 프로세스를 실행키시는 과정

  • 인터럽트(우선 순위 프로세스가 생긴것 : I/O 요청, CPU 사용 종료(+허가 시간 만료), ...) 발생으로 일어난다.
    • 프로세스 우선순위는 OS가 선택한 우선순위 알고리즘에 따른다.(= 스케줄링 방식)
  • CPU 레지스터의 프로세스 상태 정보를 PCB 블록에 저장하고 다음 실행시킬 프로세스의 정보를 가져옴.
  • 잦은 context switching은 오버헤드 증가(일반적으로는 context switching이 cpu 사용 효율이 높음)

 

멀티 태스킹

- 여러 Task(os가 수행할 작업, 단위)를 빠르게 번갈아가면서 실행하여, Task가 동시에 실행되는 느낌을 준다.(동시성)

 

멀티 프로세싱

- 여러개의 프로세서(CPU)가 한 프로그램을 동시에 실행하는것(병렬성)

  • 하나의 프로세서가 다운되어도 프로그램이 실행된다.(속도는 조금 느려진다.)

 

멀티 스레딩

- 하나의 프로세스 안에 여러개의 스레드(작업의 흐름)를 구성하여 실행하는 것

  • 한 프로세스의 스레드들은 자원을 공유하기 때문에 잘 사용하면 효율적이다.
  • 공유 자원을 동시에 건드리게 되면 문제가 생긴다. (ex. deadlock)
  • 하나의 스레드가 잘못되면 전체 프로세스가 영향을 받는다.

 

 

 

 

 

 

 

 

 

 

 

출처

shoark7.github.io/programming/knowledge/difference-between-process-and-thread

www.yalco.kr/14_process_thread/

mangkyu.tistory.com/92

github.com/gyoogle/tech-interview-for-developer/blob/master/Computer%20Science/Operating%20System/Process%20vs%20Thread.md

ithub.tistory.com/176

jwprogramming.tistory.com/17(cpu 스케줄링)

 

반응형

'IT study > Notebooks' 카테고리의 다른 글

OS - Cache(feat. Page 교체)  (0) 2021.04.08
OS - 세마포어(Semaphore), 뮤텍스(Mutex)  (0) 2021.04.06
Network - HTTPS(대칭키&비대칭키)  (0) 2021.04.05
Network - API  (0) 2021.03.31
Network - web 동작의 기본 이해  (0) 2021.03.24

+ Recent posts