ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스? 스레드?
    CS/운영체제 2021. 1. 2. 15:07

    프로그램

    어떤 작업을 위해 실행할 수 있는(CPU에 할당받을 수 있는) 파일을 말한다.


    프로세스 

    CPU에 올라가 실행중인 프로그램을 말하며 메모리에 올라와 실행되고 있는 프로그램의 인스턴스이다. 다른말로 운영체제로 부터 시스템 자원을 할당받는 작업의 단위이기도 하다.

    ●할당받는 자원들

    CPU 시간

    주소 공간

    Code, Data, Stack, Heap의 구조로 되어 있는 독립된 메모리 영역


    프로세스 제어 블록(pocess Control Block, PCB)

    PCB는 특정 프로세스에 대해서 정보를 저장하고 있는 운영체제 자료구조이다. 운영체제는 프로세스를 관리하기 위해서 프로세스 생성과 동시에 PCB를 생성한다. 프로세스는 작업을 처리하다가 (문맥전환)전환이 발생하게 되면 현재 진행중인 작업을 PCB에 저장하고 CPU를 반환한다. 다시 사용하게 된다면 PCB에 저장되어있던 내용을 불러와 다시 작업을 수행한다.

    PCB에 저장되는 프로세스 정보들

    ○프로세스 식별자(PID)

    ○프로세스 상태 : 생성, 준비, 실행, 대기, 종료 등

    ○프로그램 카운터 : 프로세스가 다음에 실행할 명령어 주소

    ○CPU 레지스터

    ○CPU 스케쥴링 정보 : 프로세스 우선순위, 스케줄링 큐에 대한 포인터

    ○메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보

    ○입출력 상태 정보 : 프로세스에 할당된 입출력 장치들에 대한 정보

    ○Accounting 정보 : CPU의 사용시간, 시간제한, 계정번호 등.


    프로세스 특징

    프로세스가 할당 받는 메모리 영역들

    프로세는 최소 1개 이상의 스레드를(메인 스레드 포함) 가지고 있다.

    각 프로세스는 별도의 주소 공간에서 실행된다. 다른 프로세스의 변수나 자료구조에 접근할 수 없다.

    한 프로세스가 다른 프로세스 자원에 접근 하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다.

    *IPC -> 소켓, 파일, 파이프 등을 이용해야 한다고 한다.


    스레드

    프로세스 내 실행되는 여러가지 흐름을 말하며 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.

    프로세스 내 주소 공간이나 자원들 (힙 공간 등)을 같은 프로세스 내 스레드끼리 공유하며 실행된다.

    -> 이 때문에 데드락, 교착상태 등이 스레드가 공유자원을 접근할 때 제어를 잘 못 해주면 발생한다.

    같은 공간 여러 스레드들은 같은 힙 공간을 공유하는 반면 프로세스는 다른 프로세스 메모리에 직접 접근을 하지 못한다.

    각 스레드는 별도의 레지스터, 스택을 가지지만, Heap메모리는 서로 읽고 쓸 수 있다.

    한 스레드가 프로세스의 자원을 변경하면, 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있다.

     

    메모리내 스레드

    스택을 스레드마다 독립적으로 할당하는 이유

    독립적인 스택 공간이 할당되면 독립적인 함수 호출이 가능해진다는 얘기로 이는 독립적인 실행 흐름을 가능하게 해주기 위해서이다.

     

    PC Register를 스레드마다 독립적으로 할당하는 이유

    스레드는 CPU를 할당받았다가 스케쥴러에 의해 선점 당하게 되는데 어느 부분까지 수행했는지 기억해야 한다. 따라서 이 부분을 PC레지스터를 독립적으로 할당해 수행정보를 저장한다.

     

    [NEXT]메모리 공간 (Code, Heap, Stack, Data)영역에 대한 글, 페이지 테이블 또는 세그먼트 테이블 이란

    멀티스레드에 대해서... m.blog.naver.com/rja1104/220551216367

     

    Reference

    gmlwjd9405.github.io/2017/10/01/basic-concepts-of-development-os.html

     

    [기술 면접 질문] 기술 면접 예상 질문 대비하기 - 운영체제(OS)편 - Heee's Development Blog

    Step by step goes a long way.

    gmlwjd9405.github.io

     

     

Designed by Tistory.