[운영체제[2]]Process 2 & Process3

이유정·2024년 2월 25일
0

운영체제

목록 보기
32/42

목차

  • 동기식 입출력과 비동기식 입출력
  • 프로세스 스케줄링 큐의 모습
  • Thread
  • Single and Multithreaded Processes
  • Benefits of Threads
  • Implemetation of Threads

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


동기식 입출력 : process가 i/o 요청을 한 후, i/o 작업이 끝날 때까지 놀고 있음.
비동기식 입출력 : process가 i/o 요청을 한 후, instruction을 실행하고 있음.

  • 구현 방법1은 동기식 입출력으로 cpu 가지고 있으면서 노는 것.
  • 구현 방법2는 동기식 입출력으로 놀거니까 cpu 다른 process한테 주는 것. (일반적임)

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

Threads

  • thread는 프로세스 내부의 cpu 수행단위가 여러개 있는 것.

  • process마다 주소공간(code, data, stack)이 만들어진다.

  • process 하나를 관리하기 위해서 운영체제 내부에 PCB를 두고 있다.
    PCB

  • process state: 해당 프로세스 상태

  • process number: 프로세스 id

  • program counter: 메모리의 어디를 실행하고 있는가를 가리키고 있음

동일한 일을 하는 process가 여러개가 있다고 하면 별도의 주소공간이 여러개가 만들어진다. 같은 일을 하는 프로세스를 여러개 띄우고 싶다 그러면, 주소공간을 하나만 띄우고, 현재 각 프로세스마다 다른 부분의 코드를 실행할 수 있게 하면 된다 . => thread

  • PC만 여러개를 둔다. 즉, process 하나에 cpu 수행단위만 여러개 두고 있는 것을 thread라고 부른다.
  • instrunction 실행하려면 code의 어느 부분을 가리키고 있는지 PC, 그 CPU에서 실행되면서 메모리에 어떤 레지스터 값을 세팅
  • thread 하나가 code 어느 부분을 실행하다가 함수 호출을 하면, return 하는 정보 같은 건 stack에 쌓아야 한다.
    결론) thread라는 건 process 하나에서 공유할 수 있는건 최대한으로, 별도로 가지는 건 최소화하기 !

  • thread라는건 cpu를 구성하는 단위

  • 응답시간이 빠르다는 장점 : 하나의 스레드가 blocked일 때, 다른 스레드가 running
  • 자원을 절약: 같은 일을 하는 process를 여러개 띄어놓게 되면 각각의 메모리에 올라가야 하기 때문에 메모리 낭비 심함. (웹 브라우저 여러개, 아래 한글 파일 여러개 띄운다고 했을 때 각각 서로 다른 process로 만들면 메모리 낭비 심함 ) 하나의 process안에 thread를 여러개 두게 되면 성능 향상, 자원절약 !

thread가 공유하는 것:code, data, files(여러 자원들)
thread각각 : cpu 관련 정보 (register set과 stack 정보)

Benefits of Threads


thread 장점 4가지

  • 응답성 : 사용자 입장에서 빠름
  • 자원 공유
  • 성능이 좋음 : process 하나를 만드는건 overhead가 크다. thread하나 만드는 건 숟가락 하나 언지는 것. context switch가 일어날 때 하나의 프로세스에서 또다른 프로세스로 넘어가는 건 overhead가 상당히 크다. thread간 cpu switch가 일어나는 것은 대단히 간단함.
  • 멀티 프로세서 환경에서 효율적(cpu가 여러개 있는 상황에서 얻을 수 있는 장점): 다른 cpu에서 병렬적으로 thread가 각각 실행


thread의 실행

  • 운영체제의 지원을 받는 thread => kernel threads : thread가 여러개 있다는 사실을 운영체제 커널이 안다. 그래서 하나의 thread에서 다른 thread로 cpu가 넘어가는 것도 커널이 cpu 스케줄링을 하듯이 넘겨준다.
  • 라이브러리의 지원을 받는 thread => user threads : process 안에 thread가 여러개 있다는 사실을 운영체제는 모른다. user program이 스스로 여러개의 thread를 관리한다.
  • real time을 지원하는 thread가 생성될 수도 있음
profile
팀에 기여하고, 개발자 생태계에 기여하는 엔지니어로

0개의 댓글