본문 바로가기
KraftonJungle2기/Today I Learned

[TIL] OS 용어 정리

by SooooooooS 2023. 5. 26.
728x90

1. 아침 문제 풀이

1. 1049번 - 기타줄

import sys

N, M = map(int, sys.stdin.readline().split())

min_six = sys.maxsize
min_one = sys.maxsize
# 가장 작은 가격 구하기
for _ in range(M) :
    six, one =  map(int, sys.stdin.readline().split())
    if min_six > six :
        min_six = six
    if min_one > one :
        min_one = one

count = N // 6 + 1 #6의 배수가 되도록하면서 적어도 N보다 큰 몫 구하기 

a = min_six * count # 묶음으로만 구매할 경우
b = min_one * N #낱개로만 구매할 경우
c = min_six * (count-1) + min_one * (N - (count - 1) * 6) #섞어서 구매할 경우
print(min(a,b,c))
필요한 돈의 최솟값을 구해야하므로 가장 싸게 파는 가격을 낱개, 패키지 모두 저장했다.
그 후 경우의 수는 총 3가지로
1. 낱개로만 구매한 경우
2. 패키지로만 구매한 경우
3. 낱개 + 패키지 구매한 경우

주의할 점은 다른 브랜드에서 살 수 있다는 것이다.
문제를 잘 이해하고 풀어야지!

2. preemptive thread scheduling

preemtive = 선점
: 스케줄러에 의해 한 스레드가 비자발적으로 중지되는 것
더 높은 우선 순위 프로세스가 발생 되었음을 알았을 때, 현 실행 프로세스로부터 강제로 CPU를 회수

< 참고 > https://ko.wikipedia.org/wiki/선점_스케줄링
  • 현재 수행되고 있는 프로세스는 언제든지 다른 프로세스로 전환될 수 있다.
    • 이유 : 인터럽트가 언제든지 발생할 수 있기 때문이다.
  • PCS(Process-contention scope) : 사용자 수준 스레드를 LWP에 스케줄링한다.
    • LWP = 사용자 스레드와 커널 스레드의 중간
    • 커널과 사용자 프로세스를 연결하는 인터페이스
    • 스케줄링은 커널 스레드마다 실행되므로 사용자 스레드는 LWP에 스케줄링이 되어야 한다.
  • SCS(System-contention scope) : 커널 스레드를 CPU에 스케줄링한다.

사용자 스레드와 커널 스레드

< 참고 >

🔗 https://velog.io/@hoyeon94/운영체제-4.-Thread#lwp

🔗 https://www.crocus.co.kr/1404

🔗 https://m.blog.naver.com/sageleaf/40002063994

🔗 https://pinelover.tistory.com/159


3. Busy Waiting

busy wating  = spinning
  : 어떠한 특정 공유자원에 대하여 두 개 이상의 프로세스나 스레드가 그 이용 권한을 획득하고자 하는 동기화 상황에서 그 권한 획득을 위한 과정에서 일어나는 현상

< 참고 > https://ko.wikipedia.org/wiki/바쁜_대기
  • 원하는 자원을 얻기 위해 기다리는 것이 아니라 권한을 얻을 때까지 확인
  • 즉, CPU를 차지하면서 계속해서 확인
    • 자원의 권한을 얻는데 많은 시간이 소요되지 않을 경우
    • 문맥 전환 비용보다 성능적으로 우수한 경우

4. Sleeping

권한을 얻기 위해 기다리는 시간을 wait queue에 실행 중인 Thread 정보를 담고 다른 Thread에게 CPU를 양보
커널은 권한 이벤트가 발생하면 wait queue에 담긴 Thread를 깨워 CPU를 부여
  • 원하는 자원을 얻기 위해 대기열에 들어가서 기다린다.
  • 기다리는 시간이 예측이 불가능한 상황일 경우 유리

< 참고 >

🔗 https://nesoy.github.io/articles/2019-06/OS-Busy-Waiting

🔗 https://soundness.tistory.com/4

 

728x90

'KraftonJungle2기 > Today I Learned' 카테고리의 다른 글

[TIL] 1377번 - 버블 정렬  (0) 2023.06.07
[TIL] OS - System Call  (0) 2023.06.07
[TIL] Thread 개념 정리  (0) 2023.05.25
[TIL] 7주차 - 넘겼던 부분 동료학습 정리  (1) 2023.05.24
[TIL] Proxy 개념 정리  (0) 2023.05.24