동기식 입출력과 비동기식 입출력

  • 동기식 입출력
    • 프로세스가 입출력이 진행될때, instruction이 실행이 안될때
    • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
    • 구현 방법1
      • I/O 끝날때까지 CPU를 낭비시킴
      • 매시점 하나의 I/O만 일어날수 있음
    • 구현 방법2
      • I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
      • I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
      • 다른 프로그램에게 CPU를 줌
  • 비동기식 입출력
    • 프로세스가 입출력이 진행될때 instruction이 실행이 될 수 있을때
    • I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감
  • 두 종류 모두 I/O의 완료는 인터럽트로 알려줌

Thread

  • Thread is basic unit of CPU utilization
  • 프로세스에서 CPU의 수행단위
  • Thread의 구성
    • program counter
    • register set
    • stack space
  • Thread가 동료 thread와 공유하는 부분(=task)
    • code section
    • data section
    • OS resources
  • 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.
  • Process 하나에 프로세스 실행단위를 여러개를 두는게 Thread, 각 Thread마다 Program Counter와 register를 별도로 유지
  • Thread는 Stack은 별도, Process가 사용하는 state(상태), 자원은 공유하지만, PC와 register는 별도로 유지
  • 다중 스레드로 구성된 태스크 구조에서는 하나의 서버스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처리를 할 수 있다.
  • 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다.
  • 스레드를 사용하면 병렬성을 높일 수 있다.(CPU가 여러개일때 가능)
  • 프로세스는 한개이기 때문에 PCB는 1개이고, Thread마다 별도의 PC와 Register를 따로 가지고 있다.
  • 스레드의 장점
    • 응답성 : Responsiveness
    • 리소스 공유 : Resource Sharing
    • 경제성 : Economy → createing & CPU switching thread
      • Solaris의 경우 2가지 overhead가 각각 30배, 5배
    • Utilization of MP Architectures
      • each thread may be running in parallel on diffrent processor

Implementation of Treads

  • Kernal Threads
    • 커널 스레드는 운영체제 커널이 스레드가 여러개인 것을 인지하고 있고, 스레드 변환시, CPU 스케쥴링과 컨텍스트 스위칭에 의해 작동된다.
      • Windows 95/98/NT
      • Solaris
      • Digital UNIX, Mach
  • User Threads
    • 라이브러리로 지원되는 스레드
    • 프로세스 내에 스레드가 여러개인걸 운영체제가 모르는 상황
    • 구현상의 제약점이 있다.

+ Recent posts