ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Process & Thread
    CS/OS 2022. 3. 4. 15:24
    728x90

     Program

        - 실행되기 전 상태의 명령어, 코드 및 정적인 데이터의 묶음

     

    Process

        - 실행 중인 Program

        - 운영체제로부터 시스템 자원을 할당 받는 작업의 단위

    Stack (매개변수, 지역 변수 등 임시적인 자료: return 값)
    .
    .
    .
    Heap (동적으로 할당되는 메모리: new 등)
    Data (전역 변수: Static 등)
    Text (Program의 코드)

     

    운영체제는 process를 관리하기 위해 각 process에 대한 PCB를 갖는다.

     

    PCB (Process Control Block)

    - 특정한 프로세스를 관리할 필요가 있는 정보를 포함하는, 운영체제 커널의 자료구조

    - 각 프로세스는 운영체제에서 PCB로 표현

    - 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB도 함께 제거

    - CB는 프로세스 상태 관리와 문맥 교환(Context switch)을 위해서 필요

     

    PCB구조

    Pointer
    Process State
    Process Number(PID)
    Program Counter
    Registers
    Memory Limits
    ...

    - Pointer : 부모/자식 프로세스에 대한 포인터, 자원에 대한 포인터 등 

    - PID: 프로세스 식별자

    - 프로세스 상태 : new, ready, running, waiting, halted 등

    - 프로그램 카운터 : 다음 실행할 명령어의 주소

    - 스케줄링 정보 : 우선순위 등

     

    Thread

    스레드 구조

        - 프로세스 내에서 실행되는 흐름의 단위

        - 각 프로세스는 한 개 혹은 그 이상이 있음

     

        - CPU 이용의 기본 단위

        - Text, data, heap 영역을 공유

        - 각 thread는 별도의 stack 영역을 가짐 (그래서 독립적으로 일처리 가능)

     

     

    Multi Thread (Thread가 2개 이상)

     - 프로세스의 자원을 공유

     - 향상된 응답성

     - Context switching 비용이 적음

     - 자원을 공유하는 만큼, 충돌을 주의 (Thread-safe)

     

    Multi Process (Process가 2개 이상)

     - 하나의 작업을 여러 개의 프로세스가 처리

     - 프로세스간 통신(IPC, Interprocess communication)

     - Context switching 비용이 큼

     - 자식 프로세스 중 하나가 문제가 생겨도 다른 프로세스에 영향이 없음

     

     + 멀티 프로그래밍과 멀티 프로세싱의 차이??

     -> https://sorjfkrh5078.tistory.com/56

    728x90

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

    macOS shell을 bash에서 ZSH로 바꾸기  (0) 2022.04.11
    가상메모리  (0) 2022.03.20
    Blocking & Non-Blocking 그리고 Sync & Async  (0) 2022.03.05
    OS 운영체제: 스케줄링(Scheduling)  (0) 2022.02.27

    댓글

oguuk Tistory.