Process 2

zioo·2022년 9월 4일
0
post-thumbnail

[ 이화여대 운영체제 - 반효경 교수님 강의 ]

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

  • 프로세스 스케줄링 큐의 모습

  • Thread

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

동기식 입출력

  • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
  • 구현 1
    • I/O 가 끝날 때 까지 CPU를 낭비하면서 기다림
  • 구현2
    • I/O가 끝날 때 까지 해당 프로그램에서 CPU를 빼앗음

Thread

프로세스 내부에 CPU 수행 단위가 여러 개 있는 경우, 프로세스를 별도로 두는 것보다 프로세스 안에 thread를 여러개 두는 것이 더 가벼움

CPU 실행 단위

= lightweight process ↔ heavyweight process

  • Thread 구성 (공유하지 않는 것)
    • program counter
    • register set
    • stack space
  • Thread 가 동료 thread와 공유하는 부분 (task)
    • code section
    • data section
    • OS resources
  • 장점
    • 쓰레드 하나가 blocked 상태일 때 다른 쓰레드 실행 가능해서 응답 시간 빠르다
    • 자원 절약 : 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상
    • 병렬성을 높일 수 있음

PCB

  • 프로세스의 상태를 나타냄

※ CPU 수행 단위가 여러개 있게 되면, Stack도 별도로 가짐!

  • 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 올 수 있음
  • 위의 그림처럼, 프로세스는 하나만, 프로그램 카운터만 여러개 띄워놓음
  • 프로세스 하나에 CPU 수행단위만 여러개 두고 있는 것이 쓰레드
  • 다중 쓰레드로 구성된 태스크 구조에서는 하나의 서버 쓰레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있음
  • 동일한 일을 수행하는 다중 쓰레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있음
  • 스레드를 사용하면 병렬성을 높일 수 있음
    • 쓰레드를 이용하면 빠른 응답정 제공과 자원을 절약할 수 있는 장점이 있음
    • 같은 일을 하는 프로세스를 여러개 띄워놓게 되면, 각각의 메모리에 올라가야하므로 메모리 낭비가 심함
    • 하지만, 하나의 프로세스에 하나의 쓰레드만 놓게 되면, 성능 향상이나 자원 절약이 가능함
  • Process는 하나기 때문에 PCB도 하나로 생성
  • Process 안에 쓰레드가 여러개면, CPU 수행과 관련된 내용(program counter, registers)만 copy

Benefits of Threads

  • Responsiveness (응답성)
    • 홈페이지 접속할 때 이미지 넣어서 사용자에게 보여줌 → 속도 빨라짐
  • Resource Sharing
  • Economy
    • 프로세스 하나 내에 쓰레드 추가 하는 거 오버해드가 적다
    • 프로세스 내의 thread간의 cpu switch는 간단
    • 프로세스 스위치는 오버해드 큼
  • Utilization of MP Architectures
    • 멀티 프로세스 내에서 병렬 실행 가능

Implementation of Threads

  • Kernel Threads

  • User Threads

    • library 지원을 받음

0개의 댓글