ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 6. Thread
    CS/OS 2022. 4. 27. 23:09

    프로세스 생성 원리

    프로세스는 프로세스에 의해 만들어진다.

    컴퓨터가 부팅이 되면 운영체제가 메모리에 올라오는데 운영체제가 처음으로 수행하는 일 중에 하나는 최초의 프로세스를 생성하는 것이다.

    처음 만들어진 프로세스가 다른 프로세스를 만들고 그 프로세스가 또 다른 프로세스를 만드는 과정을 반복한다.

    최초의 프로세스는 Init이다. init은 UNIX 운영체제 기준이다.

    init Process

    여러 다른 프로세스들이 생성되면 위 그림처럼 트리로 나타낼 수 있다.

    프로세스는 각각 고유의 번호를 갖는데 이를 PID(Process Identifirer)라고 한다.

    Process 생성하기 위해서는 System Call( Fork() ) -> Process 내에서 File 실행 System call( exec() ) -> Process 종료 및 resource 회수 System call ( exit() )

    Thread


    컴퓨터 분야에서 실행되는 스레드는 일반적으로 운영체제의 일부인 스케줄러에 의해 독립적으로 관리 될 수 있는 프로그래밍 된 명령어의 가장 작은 시퀀스다.

    Process and Thread by time

     

     

    메모리 관점에서의 Thread

    ThreadStack영역만 각각 할당 받고 나머지 Memory 영역( Data , Code , Heap ) 은 서로 공유한다.

    Process 내 Thread

     

    Multi Process vs Multi Thread


    멀티 프로세스

    멀티 프로세스란 하나의 애플리케이션을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다.

    Multi Process

    • 안정성이 좋다. 여러개의 자식 프로세스 중 하나에 문제가 발생해도, 다른 자식 프로세스에 영향이 확산되지 않는다.
    • 프로세스 간 통신을 하기 위해서는 IPC를 통해야 한다.
    • 메모리가 독립된 영역임으로 Context Switching이 발생하면서 매번 캐시 메모리를 Reload 해주어야 하기 때문에 Overhead 발생 -> 메모리 사용량이 많다.
    • 각 프로세스들이 독립적으로 동작하며 자원의 서로 다르게 할당된다.

     

    Multi Thread

    멀티 스레드란 하나의 애플리케이션을 여러 개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다.
    이러한 점 때문에 Web Server에서 주로 사용된다.

    MultiThread

    • 자원 공유가 쉽다. 스레드들은 부모 프로세스의 자원과 메모리를 공유 할 수 있다.
    • 응답성이 좋다. 프로그램의 일부분(자식 스레드)이 오류 또는 긴 작업으로 인해 중단되어도 프로그램이 계속 적으로 수행된다.
    • 구현 및 테스트, 디버깅이 어렵다
    • 동기화 그리고 교착상태가 발생하지 않도록 주의해야 한다.
    • 자식 스레드 중 하나에 문제가 생긴경우 전체 프로세스에 영향을 줄 수 있다.
    • 여러 개의 스레드가 동일한 데이터 공간(Critical Section)을 공유하면서 문제 발생 가능
    • CPU가 하나에서 여러 쓰레드가 스위칭에 의해 동시에 수행되는 효과를 concurrent
    • 여러 CPU에서 여러 쓰레드가 실제로 동시에 수행되는 것은 simultaneous라고 한다.

    * Critical Section: 임계 구역(critical section) 또는 공유변수 영역은 둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원(자료 구조 또는 장치)을 접근하는 코드의 일부를 말한다.

     

     

     

    Reference

    https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37

    'CS > OS' 카테고리의 다른 글

    XV6 - 이론 정리_1  (0) 2022.05.13
    3. Dual Mode / System Call / OS Service  (0) 2022.05.11
    2.OS 역사  (0) 2022.05.06
    1. 운영체제(OS)란?  (0) 2022.05.06
    4. Process  (0) 2022.04.27

    댓글

Designed by Tistory.