ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] Process / Thread
    Computer Science/Operation System 2020. 4. 9. 12:22

    [OS] ✔️ 프로세스 ( process )

    ◾ 프로세스는 CPU가 수행 중인 프로그램을 말한다.

    ◾ 운영체제로부터 자원을 할당 받는 자원 소유권의 단위이다. 

    운영체제로부터 code, data, stack, heap, PC, register 등의 자원을 할당받는다.

    프로그램은 명령어 리스트를 지닌 실행 파일 클래스이고, 프로세스는 메모리에 적재되어 프로그램 카운터와 자원을 가진 인스턴스이다.

    1️⃣ 프로세스의 문맥 ( Context )

    ◾️ 프로그램은 실행이 되고 종료된다. 문맥이라는 것은 특정 시점에 프로세스가 어떤 상태인지 나타내기 위해서 사용되는 것이다.  

    ◾️ 즉, 프로세스의 문맥을 통해 특정 시점에서 프로세스가 어디까지 수행을 했는지를 알 수 있다.

    ◾️ 프로세스의 현재 상태를 나타내는데 필요한 모든 요소를 문맥 ( Context ) 이라고 한다. 

    2️⃣ 프로세스의 상태

    ◾️ New : 지금 막 생성되었지만, 실행 가능한 프로세스 풀(pool)로 진입이 허용되지 않는 상태

    ◾️ Ready : CPU 할당을 기다리는 상태 

    ◾️ Running : CPU를 할당받고 instruction을 실행중인 상태

    ◾️ Blocked : CPU를 할당해줘도 instruction 실행 할 수 없는 상태 ( I/O 대기 )

    ◾️ Suspend : 하드디스크에 보내진 프로세스의 상태 ( 메인 메모리 공간 확보를 위함 )

    ◾️ Exit : 실행이 종료된 상태

     

    프로세스 7-상태 모델

     

    3️⃣ PCB ( Process Control Block )

    ◾️ PCB는 운영체제가 각 프로세스를 관리하기 위해 각 프로세스가 유지하는 정보이다. PCB는 아래와 같이 구성된다.

        1. OS가 관리상 사용하는 정보 : Process state, Process ID, scheduling information, priority

        2. CPU 실행 관련 하드웨어 값 : Program counter, registers

        3. 메모리 관련 : code, data, stack의 메모리 위치 정보 ( 포인터 )

        4. 파일 관련:  open file descriptors ( 프로세스가 사용하는 파일이 어떤건지에 대한 정보 )

    ◾️ PCB는 역할은 인터럽트에 의해 실행이 중단된 프로세스가 다시 실행하려고 할 때 필요한 정보를 가지고 있는것이다.

     

    4️⃣ Context Switching ( 문맥 교환 )

    ◾️ CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정

    ◾️ CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행한다.

        1. 실행 중인 프로세스의 현재 상태를 PCB에 저장한다.

        2. 새롭게 실행되는 프로세스의 정보를 PCB에서 읽어온다. 

     


    ✔️ 쓰레드(thread)

    ◾️ 쓰레드는 프로세스가 할당 받은 자원을 이용하는 실행의 단위이다.

    ◾️ 쓰레드는 프로세스보다 생성/종료 시간이 짧다.

    ◾️ 프로세스의 쓰레드들은 프로세스의 자원과 메모리를 공유하므로 커널의 도움 없이 서로 효율적으로 통신이 가능하다.

    ◾️ 쓰레드는 프로세스의 code, data, heap 등의 자원을 공유한다.

    ◾️ CPU 수행과 관련된 독자적인 PC, regiser값, stack을 가지고 있다. (TCB)

     

    1️⃣ 멀티 쓰레딩

    ◾️ 프로세의 작업을 여러 개의 쓰레드로 나누어 병렬로 작업을 수행하는 것을 말한다.

    👍 멀티 쓰레딩 장점

    ◾️ Responsiveness : 프로세스 내의 하나의 쓰레드가 blocked 되더라도 다른 쓰레드가 실행되어 빠른 처리를 할 수 있다. (비동기 작업, 단일 프로세스인 경우 blocked 되면 모든 작업이 중단된다. )

    ◾️ Resource Sharing : 여러 쓰레드는 프로세스의 자원을 공유할 수 있기 때문에 자원을 효율적으로 사용할 수 있다. 

    ◾️ Economy : 쓰레드는 프로세스보다 생성/종료 시간이 짧다. 프로세스간 Switching보다 쓰레드간 Switching이 오버헤드가 적다. 

    ◾️ Utilization of MP Architectures : 멀티프로세서 구조에서 각각의 쓰레드가 서로 다른 프로세스에서 병렬로 동시에 수행될 수 있다.

    👎 멀티 쓰레딩 단점

    ◾️ 다수의 쓰레드는 하나의 프로세스 자원을 공유하기 때문에 race condition 발생 가능성이 있으므로 쓰레드간 동기화가 필요하다.

    ◾️ 프로그램 디버깅이 어려울 수 있다.

    2️⃣ User level thread

    ◾️ 사용자 프로세스가 직접 쓰레드를 관리한다.

    ◾️ 운영체제는 쓰레드의 존재를 알 수 없다.

     

    3️⃣ Kernel level thread

    ◾️ 운영체제가 쓰레드의 존재를 알고 있음

     

    'Computer Science > Operation System' 카테고리의 다른 글

    [OS] DeadLock  (0) 2020.04.23
    [OS] Process Synchronization  (0) 2020.04.14
    [OS] CPU Scheduling  (0) 2020.04.10
    [OS] Process Management  (0) 2020.04.09
    [OS] Operating System Introduction  (0) 2020.04.09

    댓글

Designed by Tistory.