[운영 체제] Chapter 3 | Process 2&3

피망이·2024년 2월 11일

Q&A

  • 동기식 입출력(Synchronous I/O) vs 비동기식 입출력(asynchronous I/O)의 차이?

    • 동기식은 사용자 입출력(I/O)가 완료될 때까지 CPU를 가지고 있으며 매 시점 하나의 I/O만 처리한다.
    • 비동기식은 사용자 입출력(I/O)이 수행되는 동시에 다른 프로그램에게 CPU를 넘겨주는 방식이다.

Thread

  • Process 내부에 CPU 수행 단위가 여러개 있는 경우

    • 보통 Code-Data-Stack을 띄워놓고 실행하는데, 각 Thread마다 program counter가 가리키는 값을 나눠가진다.

    • Thread의 구성(=light weight process)

      • program counter
      • register set
      • stack space
    • Thread가 공유하는 부분(=task)

      • Code section
      • Data section
      • OS resources

  • 다중 스레드로 구성된 구조에서는 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.

    • ex. 웹 페이지를 읽어오는 경우

      • 웹 브라우저 여는 동안에는 blocked(waiting) 상태가 되며, 이미 읽어온 text라도 사용자에게 보여준다면 빠른 응답성을 얻게 된다.
  • 동일한 일을 수행하는 다중 스레드가 협력한다면 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.

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

    • 1000 by 1000 행렬을 곱하는 작업이라면, 각 행과 열을 각각 곱하여 합쳐주는 작업을 진행한다면 훨씬 빠른 결과를 얻을 수 있다.
  • 하나의 Process에 하나의 PCB가 만들어진다.

Single and Multithread Processes

  • 주소 공간의 Code와 Data는 공유하며 CPU 수행과 관련된 정보는 Thread마다 별도로 가진다.

Benefits of Threads

  • Responsiveness(응답성)

    • ex. 웹 서버에서 HTML을 불러오고 그 안에 존재하는 이미지나 텍스트를 다시 요청하는 상황

    • Multi-threaded Web - Thread를 여러개 두어 읽어오는 작업은 blocked, 이미 읽어온 다른 결과물들을 display하는 과정으로 빠른 응답성을 갖게 된다.

      • I/O 작업을 비동기식으로 관리하는 것과 같은 맥락
  • Resource Sharing(자원 공유)

    • n개의 thread들은 binary code, data, resource of the process를 공유한다.
  • Economy

    • 동일한 주소 공간을 쓰고 있기 때문에, 기존 CPU Context switching과 같은 작업에 비해 훨씬 경제적이다.

      • overhead가 일어날 가능성이 적다.
  • Utilization of MP Architectures

    • Thread로 Process를 나눠 실행하면 Multi-processor 환경에서 이루어지는 효과를 낸다.

Implementation of Threads

  • Kernel이 thread의 존재를 알면 Kernel Threads

    • 일반적인 Window나 UNIX 운영 체제에서 지원된다.
  • User에 의한 thread는 kernel이 thread의 존재를 모른다.

    • libaray에 의해 지원된다.


profile
물리학 전공자의 프로그래밍 도전기

0개의 댓글