ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스와 스레드를 아라보자
    Operating System 2023. 12. 20. 05:23

    프로세스란?

    컴퓨터에서 실행 중인 프로그램을 프로세스라고 합니다. 실행 파일이 메모리에 적재될 때, 프로그램이 프로세스로 바뀝니다.

    3-1. 프로세스의 특징을 설명하시오

    프로세스는 각각 독립된 메모리 영역(Stack, Heap, Data, Code)을 할당받는다. 프로세스당 최소 1개의 스레드를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 만약 접근하기 위해서는 IPC를 사용해야 한다.

    ※ Process State

    프로세스는 진행되면서 그 상태가 변한다.

    • new: 프로세스가 생성 중이다
    • ready: 프로세스가 프로세서에 할당되기를 기다리고 있는 상태. 프로세스는 ready 큐에서 실행을 준비하고 있다.
    • running: ready 큐에 있는 프로세스가 프로세서에 할당받아 실행되는 상태
    • waiting: 프로세스에 입출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태
    • terminated: 프로세스의 실행이 끝나고 프로세스 할당이 해지된 상태

    ※ IPC (Inter-Process Communication)

    커널 영역에서 IPC를 사용하여 프로세스들 간에 통신을 제공한다.

    • Pipe : 2개의 프로세스를 연결하고 하나의 프로세스는 데이터를 쓰기만 하고 다른 프로세스는 데이터를 읽기만 한다.
    • Message Queue : FIFO 자료구조를 가지는 통신 설비로 커널에서 관리한다. 장점은 비동기 방식이기에 방대한 처리량이 있다면 큐에 넣은 후 나중에 처리할 수 있다. 단점은 데이터가 많이 쌓일수록 추가적인 메모리 자원이 필요하다
    • Shared memory : 프로세스가 공유 메모리 할당을 커널에 요청하면 해당 프로세스에 메모리 공간을 할당해주고 이후 어떤 프로세스건 해당 메모리 영역에 접근할 수 있다. 장점은 중개자 없이 곧바로 메모리에 적용할 수 있기 때문에 모든 IPC 중 가장 빠르다. 단점은 메시지 전달 방식이 아니기 때문에 데이터를 읽어야 하는 시점을 알 수 없습니다.

    4. 스레드는 무엇인가?

    스레드는 프로세스 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하며 작업을 수행합니다. 또한, 2개 이상의 스레드를 가진 프로세스를 멀티 스레드 프로세스라고 합니다.

    4-1. 스레드의 특징은?

    스레드는 프로세스 내에서 각각 Stack만 할당받고 Code, data, heap 영역은 공유합니다.

    4-2. 프로세스와 스레드의 차이는?

    프로세스는 실행 중인 프로그램으로 다른 프로세스와 상관없이 독립적으로 메모리 공간을 할당 받지만 스레드는 경량화된 프로세스로 프로세스 안의 제어 흐름이다. 각 스레드는 별도의 레지스터와 스택을 갖고, 힙 영역은 공유한다.

    4-3. 스레드의 장점은?

    운영체제는 자원을 효율적으로 사용하려고 합니다. 스레드를 사용하면 프로세스보다 생성할 때 오버헤드도 적고 공유된 자원에 대해서도 오버헤드가 적습니다.

    4-4. multi-threading의 장단점은?

    멀티 스레딩이란 하나의 프로세스를 다수의 스레드를 만들어 실행하는 것입니다.

    • 장점
      프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우, 메모리 공간과 시스템 자원 소모가 줄어들게 됩니다. 스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap을 이용하여 데이터를 주고받을 수 있습니다.
    • 단점
      멀티 스레딩은 데이터와 힙 영역을 공유하기 때문에 동기화 문제에 신경써야 합니다. 어떤 스레드가 다른 스레드에서 사용중인 변수나 자료구조에 엉뚱하게 접근하여 이상한 값을 읽어오거나 수정할 수 있습니다. 그러므로 동기화를 통해 작업 처리 순서를 컨트롤하고 공유 자원에 대한 접근을 컨트롤해야 합니다.

    4-5. 멀티 스레드 vs 멀티 프로세스

    멀티 스레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만, 오류로 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 수도 있다는 점과 동기화 문제를 안고 있습니다.
    반면 멀티 프로세스 방식은 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행된다는 장점이 있지만, 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있습니다.

    4-6. 멀티 프로세싱과 멀티 프로그래밍의 차이는 무엇인가?

    멀티 프로세싱은 여러 개의 CPU를 장착하여 동시에 여러 작업을 병렬로 실행하는 방법이고
    멀티 프로그래밍은 단일 CPU 상에서 여러 개의 프로그램이 동시에 실행되는 것을 말합니다.

    4-7. 커널 수준 스레드와 사용자 수준 스레드의 각각 장단점은?

    • 커널 수준 스레드
      운영체제 시스템 내에서 생성되어 동작하는 스레드로, 커널이 직접 관리합니다.
    • 사용자 수준 스레드
      커널 레벨 밖에 있는 스레드로, 스레드를 관리하는 라이브러리로 인해 사용자 단에서 생성 및 관리되는 스레드입니다.
    728x90

    'Operating System' 카테고리의 다른 글

    페이징을 아라보자  (2) 2023.12.02
    부동소수점을 아라보자  (0) 2023.11.29

    댓글

Designed by Tistory.