OS - Process - 2/3, 3/3

YOOJUN·2023년 2월 4일

CS

목록 보기
5/18
post-thumbnail

동기식 입출력 : 입출력을 요청한 프로세스가 입출력이 끝날 때까지 아무것도 안한다
비동기식 입출력 : 입출력이 진행되는 동안에 프로세스가 CPU를 잡아서 인스트럭션을 실행하면

프로세스

Thread

  • 쓰레드(light process) : CPU를 수행하는 단위. 프로세스 하나에 CPU수행(인스트럭션) 단위를 여러개 두고 있는 것

  • 구성

    1. program counter
    2. register set
    3. stack space
  • 동료 thread와 공유하는 부분(task)

    1. code section
    2. data section
    3. OS resouces
  • 전통적인 개념의 프로세스(heavy weight)는 하나의 thread를 갖는다.

  • 장점

    1. 응답성 : 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting)상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
    2. 리소스 쉐어 : 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다.
    3. 경제성 : 프로세스를 하나 만드는것은 오버헤드가 심하지만, 스레드를 하나 더 추가하는 것은 오버헤드가 심하지 않다. 문맥교환 또한 오버헤드가 심하지만, 스레드끼리의 CPU스위칭은 오버헤드가 적다.
    4. 병렬성 : 스레드를 사용하면 병렬성을 높일 수 있다(CPU가 여러개 있는 경우).

싱글스레드 / 멀티스레드

구현 방법

  1. Kernel Threads : 스레드가 여러개 있다는 사실을 운영체제커널이 알고, 하나의 쓰레드에서 다른 쓰레드로 CPU가 넘어가는 것을 커널이 스케줄 스케줄링 하듯이 넘겨준다.
  2. User Threads : 라이브러리를 통해 지원되며, 프로세스 안에 스레드가 여러개 있다는 사실을 운영체제는 모르고 유저프로그램이 스스로 여러 스레드를 라이브러리의 지원을 받아 관리한다.
  3. Real-time Threads

profile
거북이 개발자

0개의 댓글