day 11. 멀티프로세스, 멀티스레드, 우선순위
강의/부캠 안드로이드 학습정리

day 11. 멀티프로세스, 멀티스레드, 우선순위

https://wonit.tistory.com/108

 

[운영체제] 17. 우선순위 스케줄링(Priority 스케줄링) 알고리즘

운영체제의 스케줄링 알고리즘을 평가하기 위해서는 다음과 같은 특성을 충분히 이해해야 한다. 프로세서 사용률 프로세서를 항상 실행상태로 유지하여 유휴 상태가 되지 않도록 한다. 처리율

wonit.tistory.com

실제 os에서 우선순위 처리는 프로그램이 들어올 때 현재 실행되고있는 우선순위보다 높은게 들어오면 바로 그걸 실행하고 아니면 FIFO 스택에 넣어서 실행한다. 학교에서 배운게 조금씩 기억이 난다..

하지만 이런내용이 과제엔 없으니 나름 해석해서 구현해야 한다. 우선순위 높은건 더 자주 실행하라고 했으니까..

그래서 둘 다 구현해봄.

 

스레드는 싱글스레드, 멀티스레드. 멀티스레드는 하나의 프로세스에서 여러개의 스레드로 공간을 공유해서 시간단축의 장점이 있는 듯.

https://en.wikipedia.org/wiki/Thread_%28computing%29

 


프로세스 상태

https://wiki.kldp.org/wiki.php/ProcessManagement


스케쥴링 방식엔

FCFS (First Come First Service)
Round Robin - 일정 시간동안 실행하고 못끝내면 다음 프로세스로 넘어감
Priority Scheduling

등등..

 


list size는 element 제거할 때마다 달라지는걸 반영해서 random int 범위 설정

enum class는 약간 dictionary 비슷하게 사용하는 듯.

나도 인터넷에서 봤다고 그렇구나~ 하고 끝나지 말고 이런데다가 어떤걸 봤는지 정리하는게 좋을 것 같다.

set으로 한다음에 toList

linkedlist에서 poll 한다음 add

for (e in priorityPQ) {
                    e.ageUp()
                    e.aging()
                }

 

만약 cpu코어 갯수보다 프로세스 갯수가 더 많으면? 코어마다 하나의 프로세스가 들어가고 이 프로세스 내에 쓰레드가 실행되고 그 안에서 쓰레드 스케줄링이 일어나는 듯.

윈도우는 쓰레드를 스케쥴링, 리눅스는 프로세스를 스케쥴링 하는 듯. 이런거 보면 os마다 다른듯.

하나의 프로세스에서 여러개의 쓰레드로 나눠야 context switching에서 유리할 테니까 쓰레드 단위로 실행하는게 유리한 듯.

환경에 따라서 같은 프로그램을 돌려도 실행속도가 차이가 나는듯.

쓰레드 만드는 개수? 막 10만개 생성되고 하는거 들어보면 자원이 허용하는 내에선 얼마든지 가능한 듯.

interval, import kotlin.system.exitProcess; exitProcess(1)

 

semaphore는 아얘 하나의 단위동작으로 묶어서 context switching이 일어나지 않도록 모든 interrupt를 다 막아넣고 실생한다.

https://worthpreading.tistory.com/90

 

뮤텍스(Mutex)와 세마포어(Semaphore)의 차이

이 글은 Medium에 개시된 글입니다. Medium에서 보시면 좀 더 유쾌한 환경에서 글을 보실 수 있습니다. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 Toilet problem 동시성 프로그래밍의 가장 큰 숙제는 ‘공

worthpreading.tistory.com

관련해서 banker's 알고리즘 알면 좋을 듯.

 

데드락이 발생하는 조건 4개와 회피하는 조건 4개. 아는게 좋을 듯.

 

폰 노이만 구조, 하버드 구조. 버스 병목현상. 현재는 둘 다 쓰이고 있다고 한다.

https://velog.io/@ckstn0777/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0

 

폰 노이만 구조와 하버드 구조

Von Neumann architecture. 존 폰노이만이 제시한 컴퓨터 구조. 프로그램 내장 방식이라고도 불립니다. 그 이전의 컴퓨터들은 스위치를 설치하고 전선을 연결하여 데이터를 전송하고 신호를 처리하는

velog.io