프로세스와 스레드

MoonDD·2023년 4월 26일
0

프로세스

  • 실행중인 프로그램
  • 가상주소 공간을 가지고 있고 운영체제가 실행하고 스케줄링한다. 이 특징으로 인해 운영체제가 각각의 프로세스를 독립적으로 다룰 수 있다.
  • 즉 운영체제로부터 자원을 할당받은 작업단위

쓰레드

  • 프로세스에서 실행되는 명령어들의 유닛
  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

프로세스의 구성

PCB

프로세스의 정보는 PCB(Process Control Block)에 저장됩니다.

  • PCB는 프로세스의 여러가지 정보를 가지고 있는데, 프로세스 ID, 현재 상태, 큐에서의 우선순위, 프로세스가 메모리 어디에 저장되어 있는지, context 데이터들의 위치 등등을 포함하고 있습니다.
  • OS에 의해 생성되고 관리된다. Primary Process Table에 PCB의 리스트들이 존재한다.
  • 프로세스당 한개씩 가지고 있다.

프로세스의 메모리 공간

PCB에서 프로세스가 메모리 공간 중에 어디에 위치하는 정보가 담겨있다고 했는데, 이 메모리는 어떻게 구성되어 있는지 살펴봅시다.

이 공간은

  • Code
  • Data
  • Heap
    • 런타임시 발생되는 데이터 저장
  • Stack
    • 호출한 함수의 수행을 마치고 복귀할 주소, 데이터(매개변수, 지역변수, 리턴값) 저장
  • Memory for registers context
    • 실행되고 있는 명령어 주소와 스택의 최상단 위치를 저장하고 있다

로 이루어져 있고 이중 Stack와 registers 한쌍이 한개의 쓰레드가 가지게 된다.

멀티스레드

  • 동시에 동작하고 있는 쓰레드로 구성되어진 프로세스를 의미
  • 쓰레드는 속한 프로세스의 메모리와 자원들에 접근할 수 있다. 즉 같은 프로세스에 속한 쓰레드는 자원들을 공유하고 있다.
  • 쓰레드는 지역변수를 저장하기 위한 stack, register 를 쓰레드별로 가지고 있기도 한다.


문맥전환

Context : 프로그램의 실행되던 환경

Context Swith : 프로세스에서 다른 프로세스로 CPU의 제어권을 넘긴는 과정

  1. 프로그램 카운터와 다른 레지스터들을 포함한 프로세서의 context를 저장한다.
  2. 현재 실행중인 프로세스의 pcb를 업데이트한다.
  3. 적절한 큐로 pcb를 옮긴다.
  4. 실행한 프로세스를 고른다
  5. 고른 프로세스의 pcb를 업데이트한다
  6. 고른 프로세스의 context를 저장한다.

쓰레드의 장점

  • 프로세스보다 새로운 쓰레드를 만드는데 더 적은 시간이 걸린다.
  • 프로세스보다 쓰레드를 terminate하는데 더 적은 시간이 걸린다.
  • 같은 프로세스 내의 두개의 쓰래드 사이에서 전환속도가 바르다
  • 프로세스까리 통신하는 것보다 쓰레드 사이에서 통신하는 것이 더 빠르다
  • 쓰레드는 메모리와 파일들을 공유할 수 있기때문에 그들끼리 통신할때 커널을 통하지 않아도 된다.

퀴즈

  • 프로세스는 실행중인 프로그램이라고 하였는데, 프로세스와 프로그램은 어떤 차이가 있는지?

    프로그램은 하드디스크에 저장된 코드와 정적 데이터들의 모음이고, 코드와 데이터들이 메모리에 적재되어 실행되면 프로세스라고 부른다.

  • 프로세서는 무엇이며, CPU는 무엇일까?

    컴퓨터 운영에 필요한 기본적인 명령어를 처리하고 반응하기 위한 논리회로를 프로세서라고 한다.

    프로세스도 현재상태와 명령어의 모음이기때문에 이를 실행시키는 것도 프로세서가 하게 된다.

    프로세서는 소프트웨어의 명령을 하드웨어에게 신호를 보내는 제어장치와 사칙연산,논리연산을 담당하는 연산장치로 구성된다.

    이때 디바이스가 해야할 일을 총 지휘하는 프로세서를 CPU라고 하고 이를 보조하는 프로세서를 보조프로세서라고 한다.

  • 운영체제가 프로세스를 만든다고 하였는데, 여기서 운영체제는 무엇을 의미하는가?

    여기서 운영체제는 커널을 의마하게 된다. 커널은 운영체제의 좁은 의미이다. 커널은 메모리에 항상 상주하고 있고 커널이 프로세스를 만들기때문에 프로세스 생성에서 운영체제는 정확히는 커널을 의미한다.

0개의 댓글