운영체제 3-2

이창훈·2022년 2월 3일
0

운영체제스터디

목록 보기
4/19

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

동기식 입출력(synchronous I/O)

  • I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 사용자 프로그램에 넘어감

구현 방법 1

  • I/O가 끝날 때까지 CPU를 낭비시킴
  • 매시점 라나의 I/O만 일어날 수 있음

구현 방법 2

  • I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음
  • I/O 처리를 기다리는 줄에 그 프로그램을 줄 세움
  • 다른 프로그램에게 CPU를 줌
    비동기식 입출력 (asynchronous I/O)
  • I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

*두 경우 모두 I/O의 완료는 인터럽트로 알려줌

입출력이 끊나는걸 보고나서 인터럽트를 실행하면 동기식 입출력
입출력을 요청을 해놓고 나서 바로 인터럽트를 실행하면 비동기식 입출력

Thread

쓰레드의 구성

  • program counter 프로그램카운터
  • register set 레지스터
  • stack space 스택

쓰레드가 동료 쓰레드와 공유하는 부분(=task)

  • code section 코드
  • data section 데이터
  • OS resources

전통적인 개념의 heavyweight process는 하나의 쓰레드를 가지고 있는 task로 볼 수 있다.

프로세스 하나에 CPU수행 단위만 여러 개 두는게 쓰레드다.

쓰레드는 프로세스 하나에서 공유 할 수 있는건 최대한 공유하고 별도로 가지고 있는것은 CPU수행에 관련된 프로그램 카운터, 레지스터, 스택이다.

다중 쓰레드로 구성된 테스크 구조에서는 하나의 서버 스레드가 blocked(waiting)상태인 동안에도 동일한 테스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.

동일한 일을 수행하는 다중 쓰레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다.

스레드를 사용하면 병렬성을 높일 수 있다.

웹페이지를 읽어오는 작업도 I/O작업이다.

웹페이즈를 읽어오는 동안에는 오래 걸리기 때문에 웹브라우저는 blocked상태이므로 아무것도 못하게된다. (사용자는 답답함, 만약에 웹브라우저를 여러개 쓰레드를 사용해서 프로그램을 만들어 놓게 되면 하나의 쓰레드가 멀리 네이버 웹서버에서 그림을 불러오는 동안에 이 프로세스를 블럭 시키지 않고 또다른 쓰레드가 이미 읽어온 텍스트라도 화면에 디스플레이를 해주면 사용자 입장에서는 결과를 빨리 볼 수 있기 때문에 답답함이 덜하다.)

쓰레드의 장점

  1. 응답성
    빠르다. 웹 브라우저라는 하나의 프로그램이 쓰레드를 여러개 가지고 있게 되면 하나의 쓰레드가 블럭이 되더라도 다른 쓰레드가 데이터를 가져온다.

  2. 자원을 공유함.
    똑같은 일을 하는 프로그램이 여러개 있는데 그것을 별도의 프로세스로 사용하기 보다는 하나의 프로세스를 만들고 그 안에 CPU수행단위만 여러 개를 두 개 된다면 자원을 효율적으로 사용 할 수 있게 된다.

  3. 경제성(빠르다.)
    프로세스를 하나 만드는 것은 오버헤드가 크지만 쓰레드를 하나 추가 하는 것은 간단하다(그렇게 오버헤드가 크지 않다).
    프로세스를 생성하고 CPU스위칭을 하는 거 보다 쓰레드를 생성하고 CPU스위칭을 하는게 더 오버헤드가 적다.

  4. Utilization of MP Architectures

  • each thread may be running in parallel on a different processor
    각각의 쓰레드가 서로다른 CPU에서 병렬적으로 일을 할 수 있다. (결과를 더 빨리 얻을 수 있다.)
profile
실패를 두려워하지 않고 배우고 기록하여 내일의 밑거름 삼아 다음 단계로 성장하겠습니다.

0개의 댓글