피어세션
- 삼항연산자 : 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 |