[OS] 추첨 스케줄링 (비례배분)
·
OS
이번에는 비례배분 스케줄링에 대해 공부하였다. 비례 배분의 개념은 간단한데, 반환 시간이나 응답 시간을 최적화하는 대신 스케줄러가 각 작업에게 CPU의 일정 비율을 보장하는 것이 목적이다. 비례 배분 스케줄링의 좋은 예가 추첨 스케줄링으로 알려져있다.이 스케줄링의 간단한 아이디어는 다음 실행될 프로세스를 추첨을 통해 결정하고, 더 자주 수행되야하는 프로세스에게 당첨기회를 더 많이 주는 것이다. 여기서의 핵심 질문은, 어떻게 CPU를 정해진 비율로 배분할 수 있는가? 와 그렇게 하기 위한 중요한 기법은 무엇인가? 이다. 기본 개념추첨권이라는 기본적 개념이 추첨 스케줄링의 근간을 이룬다. 추첨권은 받아야할 자원의 몫을 나타내는데 사용되며, 프로세스가 소유한 티켓의 개수와 전체 티켓의 비율이 자신의 몫이 될 ..
[OS] MLFQ
·
OS
스케줄링 기법 중 멀티 레벨 피드백 큐 (MLFQ) 스케줄링 기법에 대해 공부하였다.MLFQ가 해결하고자 하는 기본적인 문제는 다음과 같다.- 짧은 작업을 먼저 실행시켜 반환 시간을 최적화- 응답이 빠른 시스템이라는 느낌을 주기 위한 응답 시간 최적화운영체제가 프로세스에 대한 정보를 가지고 있지 않은데 어떻게 이러한 스케줄러를 만들 수 있을까 ?MLFQ는 여러 개의 큐로 구성되며, 각각 다른 우선순위가 배정된다. 실행 준비가 된 프로세스는 이중 하나의 큐에 존재한다.한 큐에는 둘 이상의 작업이 존재할 수 있으며, 이들은 모두 같은 우선순위를 가진다.이 작업들 사이에는 타임슬라이싱 스케줄링이 사용된다.MLFQ 스케줄링의 핵심은 작업의 우선순위를 정하는 방식이며, 작업의 특성에 따라 동적으로 우선순위를 부여..
[Java] 자바 스레드와 운영체제 스레드의 관계
·
JAVA
최근 교내 대회를 준비하던 중,그저 이론으로만 알던 자바 멀티 스레딩이니 비동기 처리니 하는 방식에 대한 필요성을 실제로 느끼게 되었다. 이 부분에 대해 공부하던중, Java에서의 Parallelism 과 Concurrency(논리적 동시성)에 대해 알아보게 되었고, 자바에서 이를 구현하기 위한 여러 방식들이 있지만,  그 전에 먼저 자바 스레드와 운영체제 스레드의 관계에 대해 서핑해본 내용을 정리해보았다.JVM이 대강 어떤 방식으로 운영체제와 상호작용하고, 스레드들을 스케줄링하는지에 관한 내용이다. 먼저 간단하게 유저 레벨 스레드와 커널 레벨 스레드에 대한 이해가 필요하다. 유저 레벨 스레드는, 사용자 프로그램에서 관리되는 스레드로, 커널은 이를 인식하지 못한다.커널 레벨 스레드는, 운영체제의 커널에서..