boostcamp

Day09 학습 정리

daykim 2023. 7. 20. 14:19

피어세션

  • 삼항연산자 : a ?? b
  • ?? 와  || 비교해보

 

운영체제 스터디에서 정리했던 것

 

스레드


  • 프로세스 :  OS로부터 자원을 할당 받는 작업의 단위

스레드

프로세스가 할당받은 자원을 이용하는 실행의 단위

  • 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.
  • 모든 프로세스는 한 개 이상의 스레드가 존재해 작업을 수행한다.
  • 두 개 이상의 스레드를 가지는 프로세스를 멀티 스레드 프로세스라고 한다.

 

특징

  • 스레드는 같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 열린 파일이나 신호와 같은 OS 자원을 공유한다.
  • 프로세스가 다수의 제어 스레드를 가지면, 동시에 하나 이상의 작업을 수행할 수 있다.

 

PCB (Process Control Block)


프로세스 생성시 생성되고, 프로세스들에 대한 정보를 관리하는 운영체제의 자료구조다.

  • 운영체제 마다 관리하는 정보가 다르다.
  • PCB 참조 및 갱신 속도는 운영체제 성능을 결정 짓는 요소 중 하나다.

 

PCB 관리 정보

  • PID : 프로세스 고유 식별 번호
  • Pointer : 프로세스 현재 위치를 저장하는 정
  • 스케줄링 정보 : 우선순위와 같은 스케줄링 관련 정보
  • 프로그램 카운터 (PC) : 프로세스를 위해 실행될 다음 명령어의 주소를 포함하는 카운터 정보
  • 프로세스 상태 
  • 메모리 관리 정보 : page table, segment table 등
  • 입출력 상태 정보 : 할당 받은 입출력 장치, 파일 등에 대한 정보
  • Context Save Area : 프로세스 레지스터 상태를 저장하는 공간
  • 계정 정보 : 자원 사용 시간 등을 관리

 

프로세스 관리를 위한 자료구조


 

 

 

OS 작업 스케줄링 알고리


기한부 스케줄링 (Deadline Scheduling)

  • 이름처럼 작업 동작 시간을, 주어진 마감 시간까지 완성하도록 계획한 스케줄링이다.
  • 즉, 프로세스가 사용할 수 있는 CPU 시간을 정해주고, 그 시간 안에 프로세스를 완료하도록 하는 기법이다.
  • 주어진 시간 내에 완료 X -> 제거 되거나, 처음부터 다시 실행된다. 따라서 부담이 매우 크다.
  • 시스템은 프로세스에 정확한 시간을 할당해주어야 하고, 사용자는 시스템이 요구한 프로세스에 대해 정확한 정보를 제공해줘야 한다.

 

Priority 스케줄링

  • 프로세스 실행 중에 우선순위가 높은 프로세스를 먼저 실행하는 방식으로, 낮은 우선순위가 계속 밀릴 수 있다.
  • 우선순위는 고정, 동적 모두 설정 가능하다.

 

Round Robin 스케줄링

  • 각 프로세스들이 할당된 시간만큼만 CPU를 사용할 수 있는 스케줄링 기법이다.
  • CPU 사용시간이 랜덤한 프로세스들이 섞여 있을 때, 효율적인 기법이다.
  • 응답 시간이 매우 최적화된 공정한 스케줄링 기법이다.
  • 그러나, CPU 시간이 너무 길면 FIFO와 같은 현상이 발생하고, CPU 시간이 너무 짧으면, Context-Switching이 자주 일어나 오버헤드가 발생할 수 있다.
    • context switching 과정에서, CPU는 아무 작업도 할 수 없어 오버헤드 발생한다.
    • 오버헤드 : 어떤 처리를 하기 위해 들어가는 간접적인 처리시간, 메모리 등을 말한다.

 

Node.js 웹 워커, 워커 스레드


Node.js 실행되면

  • 하나의 프로세스 실행
  • 하나의 스레드 실행
  • 하나의 이벤트루프 실행
    • Event Loof : Call Stack이 빈 상태가 되면, CallBack Event Queue의 첫 번째 콜백을 Call Stack으로 옮긴다. 이걸 Loop
    • CallBack Event Qeueu : 비동기적으로 실행된 콜백 함수가 보관되는 영역이다.
    • 자바스크립트는 이벤트 루프를 통해 비동기 방식으로 동시성을 지원한다. (브라우저나 node.js에서 지원)
  • 하나의 js 엔진, node.js 인스턴스 실행

즉, 한 번에 하나의 작업만 처리한다. (병렬 x)

  • CPU 자원을 많이 사용해야 할 경우, 다른 프로세스 실행 되는 것 또는 이벤트 루프를 차단할 수 있다.
  • 오직 I/O 작업만 비동기 작업이다.

따라서 I/O 작업이 아닌, CPU 집약적인 퍼포먼스를 향상 시키기 위해 워커 스레드를 사용한다.

 

워커 스레드 특징

  • 하나의 프로세스
  • 여러개의 스레드
  • 스레드 별 하나의 이벤트 루프
  • 스레드 별 하나의 js 엔진 인스턴스
  • 스레드 별 하나의 node.js 인스턴스

 

 

참고자료

'boostcamp' 카테고리의 다른 글

Day13 학습정리  (0) 2023.07.26
Day11 학습 정리  (0) 2023.07.24
Day08 학습 정리  (0) 2023.07.19
Day07 학습정리  (0) 2023.07.18
Day06 학습 정리  (0) 2023.07.18