전에 멀티태스킹과 멀티프로세스를 알아보며, 프로세스와 스레드에 대해서 알아보았다.
실제 운영체제에서는 멀티태스킹을 위한 스케줄링을 어떻게 진행하는지 알아보자.
스택 프레임
이라고 부른다.스케줄링(scheduling)은 다중 프로그래밍을 가능하게 하는 운영 체제의 동작 기법이다. 운영 체제는 프로세스들에게 CPU 등의 자원 배정을 적절히 함으로써 시스템의 성능을 개선할 수 있다
https://ko.wikipedia.org/wiki/%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81_(%EC%BB%B4%ED%93%A8%ED%8C%85)
새로운 큐
(New Queue
): 새로 생성된 프로세스나 스레드가 초기화 대기 중 목록.레디 큐
(Ready Queue
): CPU를 사용하기 위해 준비가 완료된 프로세스나 스레드의 목록.실행 상태
(Running State
): CPU에서 현재 실행 중인 프로세스나 스레드 목록.블록 큐
(Blocked Queue
): I/O 작업이나 자원 요청으로 인해 실행이 지연되고 있는 프로세스나 스레드의 목록.종료 큐
(Terminated Queue
): 실행이 완료되거나 종료된 프로세스나 스레드의 목록.실제로 스케줄링 큐는 다양한 알고리즘에 의해서 최적화 되고있다. (라운드 로빈, FIFO, 우선순위 등등)
해당 설명은 FIFO 관점에서의 간단한 설명이며, 실제 FIFO의 동작 원리와 맞지 않을 수 있다.
스레드 A
, 스레드 B
가 있고, 이 작업을 멀티테스킹
을 진행한다면, 중지된 시점에서 진행중이던 스레드의 작업 진행 위치를 저장할 필요가 있다.컨텍스트 스위칭
이라고 한다.쓰레드가 하는 작업은 크게 2가지 이다
웹 어플리케이션 서버
최대 스레드 수 (maxThreads): 200
, 최소 스레드 수 (minSpareThreads): 10
이라는 Default 설정 값을 가지고 있다.Thread
는 동시 접속자 수
와 밀접한 관계가 있다. 기본적으로 1가지의 요청을 처리하는데 Thread가 하나
가 필요한데, Thread가 4로
되어있다면, 최대 4명의 동시 요청만 처리 가능하다는 뜻이다.