본문 바로가기

CS16

[OS] 리눅스 스케줄링 리눅스 스케줄링 정책 실시간 정책 스케줄링(우선순위 높음) SCHED_FIFO : 선입 선처리 스케줄링 SCHED_RR : 라운드로빈 스케줄링 일반정책 스케줄링(우선순위 낮음) SCHED_OTHER / SCHED_NORMAL SCHED_BATCH SCHED_IDLE 리눅스의 CFS 스케줄러 비실시간 프로세스를 대상으로 하는 스케줄링 → linux kernel 2.6.23 버전부터 사용(그 전에는 O(1) 사용했음) vruntime(virtual runtime) 프로세스가 그동안 실행한 시간을 정규화한 정보 vruntime이 작은 프로세스를 다음 실행할 프로세스로 삼는다. vruntime 별 태스크를 고르는 과정에서 RBtree를 사용 타임 슬라이스 nice 값에 비례해서 가중치를 할당, 가중치를 바탕으로.. 2023. 9. 8.
[OS] CPU 스케줄링 알고리즘 CPU 스케줄링 알고리즘 선입 선처리 스케줄링 최단 작업 우선 스케줄링 라운드 로빈 스케줄링 최소 잔여 시간 우선 스케줄링 우선순위 스케줄링 다단계 큐 스케줄링 다단계 피드백 큐 스케줄링 선입 선처리 스케줄링(FIFO) CPU를 먼저 요청한 프로세스부터 CPU 할당 준비큐에 삽입된 순서되로 처리되는 비선점형 스케줄링이다. 부작용으로 호위효과가 있다. 호위효과 : 다른 프로세스들이 하나의 긴 프로세스가 CPU를 양도하기를 기다리는 것 최단 작업 우선 스케줄링(SJF 스케줄링) 준비 큐 프로세스 중 CPU 이용시간이 짧은 프로세스부터 실행 호위효과를 방지할 수 있다. 라운드 로빈 스케줄링 선입 선처리 스케줄링에 타임 슬라이스가 지정되어있는 방식이다. 레디 큐에 삽입된 순서로 실행하되 타임 슬라이스만큼 실행되.. 2023. 9. 8.
[OS] CPU 스케줄링 운영체제가 프로세스, 스레드에게 CPU 자원을 할당하는 방법에 대해서 알아본다. 스케줄링 모든 프로세스 및 스레드는 합리적으로 자원을 필요로 한다. 운영체제가 프로세스에 자원을 적절히 배분하는 방법을 스케줄링 이라고 한다. CPU 스케줄링 스케줄링 중 운영체제가 공정하고 합리적으로 CPU를 배분하는 방법 CPU 자원은 한정되어 있고 실행중인 프로세스는 여러 개 일때 프로세스는 우선순위에 따라 실행된다. 프로세스마다 우선순위가 다르다. 우선순위는 PCB에 명시된다. 우선순위는 명령어로 확인가능 $ ps -el : RI, NI가 낮을수록 높은 우선순위 $ top : PR, NI가 낮을수록 높은 우선순위 우선순위의 차이를 보이는 대표적인 프로세스 유형 CPU를 사용하는 구간을 CPU burst, 입출력 장치를.. 2023. 9. 8.
[OS] 스레드 스레드 프로세스 내에서 실행되는 실행 흐름의 단위 각각 다른 스레드 ID, 프로그램 카운터, 레지스터, 스택을 가질 수 있다. 멀티프로세스와 멀티스레드 멀티프로세스와 멀티스레드에 가장 주된 차이점은 자원 공유 여부이다. 프로세스간에는 기본적으로 자원을 공유하지 않음 스레드 간에는 프로세스의 자원(입출력장치, 열린 파일 등)을 공유 스레드 간에는 프로세스의 자원을 공유하기 때문에 문제가 발생했을 경우 모든 스레드에 문제가 발생한다. 멀티 프로세스와 멀티 스레드의 차이 예 웹브라우저의 새 탭 생성을 통해 만든 탭이 모두 개별 프로세스로 만들어졌다면 탭에서 문제가 생겼을 때 다른 탭에는 영향을 주지 않는다. 하지만 각 탭을 프로세스가 아니라 스레드로 만들어졌다면 하나의 탭에 문제가 생긴다면 모든 탭이 영향에 .. 2023. 9. 8.