250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- JVM
- JPA
- 프로세스
- 백준 장학금
- 완전이진트리
- AVL트리
- 연결리스트 종류
- 최대 힙
- 강화학습
- 스케줄링
- 힙트리
- 이분탐색이란
- 멀티프로세서
- Kruskal
- 알고리즘
- python
- 백준장학금
- 자료구조
- 연결리스트
- MSA
- HTTP
- 엔티티 그래프
- spring
- 최소힙
- heapq
- SpringSecurity
- jpa n+1 문제
- 점근적 표기법
- 운영체제
- posix
Archives
- Today
- Total
KKanging
[운영체제] 멀티프로세서 스케줄링(고급) 본문
멀티프로세서란
요즘 cpu 코어가 여러개인 멀티 코어 cpu가 많이 나온다.
멀티 코어이므로 여러개의 멀티 프로세스를 ㄹㅇ 병렬적으로 실행할 수 있게되었다.
작업을 병렬적으로 여러개를 할 수 있다는 건 동시에 여러작업을 여러개의 cpu로 작업을 할 수 있다는
의미이다.
그렇다면 응용프로그램의 여러 작업은 스케줄은 ? -> 쓰레드를 스케줄 하는것
그렇다면 os 의 여러 작업 스케줄은? 프로세스를 어떻게 스케줄링하는 것이다
우리는 이때까지 단 하나의 cpu에서의 스케줄링을 공부했다.
그렇다면 여러개의 멀티 프로세서 구조의 스케줄링은 어떻게 해야할까?
싱글 프로세스와 멀티 프로세스의 구조적인 차이
싱글 프로세스의 구조
cpu에는 캐시가 존재한다
캐시는 지역성의 기반하여 (시간적 지역성 + 공간적 지역성) 메모리에 자주 쓰는 데이터를
cpu에 가까운 메모리 공간에 저장한다.
멀티 프로세스의 캐시 일관성 문제
CPU 0 에서 작업을 하다가 D를 읽고 D를 수정했다(CPU 0 과 1 둘다 캐시에 D가 없는 순간에서 시작)
그리고 CPU 0 은 D를 수정했지만 아직 메모리에 반영은 안하고 캐시에 저장하고 있다.
여기서 CPU1 이 D를 읽을 때 오래된 D를 읽게 된다.
이런 문제를 캐시 일관성 문제라고 한다.
멀티 프로세스의 캐시 일관성 문제
CPU 0 에서 작업을 하다가 D를 읽고 D를 수정했다(CPU 0 과 1 둘다 캐시에 D가 없는 순간에서 시작)
그리고 CPU 0 은 D를 수정했지만 아직 메모리에 반영은 안하고 캐시에 저장하고 있다.
여기서 CPU1 이 D를 읽을 때 오래된 D를 읽게 된다.
이런 문제를 캐시 일관성 문제라고 한다.
캐시 일관성 해결하는 방법

추가적인 구조에 따른 문제
동기화 : 공유된 자원을 접근하였을 때 생기는 문제
보통 공유된 자원 접근은 락을 걸고 함
캐시 친화성 : 한번 수행한 CPu의 캐시에 많은 정보가 기록된다.
그래서 스케줄링 시에는 수행했던 CPU를 선택하는 편이 유리하다/
단일 큐 스케줄링 (SQMS)

단순하게 구현이 된다.
여러 CPU가 하나의 큐를 공유한다.
이때 확장성 즉 다수의 CPU에서 잘 돌아가기 하기 위해 큐에 락을 거는데
이는 성능 저하의 원인이다.
그리고 캐시 친화성도 오른쪽 처럼하면 구현할 순 있지만 완벽하진 않다
멀티 큐 멀티프로세서 스케쥴링
캐시 친화성 용이 , 동기화 부담 감소
단점 : 부하 불균등
CPU 마다 독립적인 큐를 가지고 있음
부하 불균등 해결책

큐를 너무 자주 검사하게 되면 높은 오버헤드로 확장성에 문제가 생기게 된다.
확장성은 멀티 큐 스케줄링의 가장 중요한 목적이다.
반면 너무 큐를 검사하지 않으면 부하 불균등이 올 것이다.
'cs > 운영체제' 카테고리의 다른 글
[운영체제] 스케줄링 : 비례 배분 (0) | 2024.05.02 |
---|---|
[운영체제] MULTI-LEVEL FEEDBACK QUEUE (4) | 2024.05.01 |
[운영체제] 스케줄링과 Basic Algorithms (0) | 2024.04.30 |
[운영체제] 제한적 직접 실행 원리 (0) | 2024.04.29 |
[운영체제] Process API in POSIX (기초) (0) | 2024.04.29 |