본문 바로가기

학교 수업/운영체제9

운영체제 || 10. Process Scheduling III 1. Real Time System a) Hard real time system > 어떤 task가 주어진 시간안에 반드시 완료되어야 함 > 자동차 에어백, 자율주행 등등 b) Sort real time system > 데드라인이 중요하긴 하나 못맞춰도 기능적 문제는 없음 > 실시간 스트리밍, 온라인게임같은거 > RealTime CPU scheduling은? > Preemption이 가능한 우선순위 기반으로 스케쥴링함 > 왜냐면 non-preemptive 알고리즘을 채용하게 되면 데드라인을 만족하기 어렵기 때문 + Real Time에서는 Task(Process)가 주기적임을 가정함 t는 한번 수행시 t만큼의 시간이 걸리는 것 d는 데드라인 p는 주기 2. RMS - Rate Monotonic Schedu.. 2021. 4. 17.
운영체제 || 9. Process Scheduling II 1. Priority Scheduling > 우선순위를 어떻게 할당하냐에 의해 알고리즘이 달라짐. > preemptive, non-preemptive 둘 다 디자인 가능 > 이 우선순위 알고리즘에 몇가지 문제가 존재함 a) Starvation 문제 >> 높은 우선순위가 계속 들어오게되면 낮은 우선순위를 가진 프로세스는 실행되지 못함 >> 해결방법으로는 ready queue에 있는 시간이 길어지면 일시적으로 우선순위를 높여주는 방법이 있음 b) Priority inversion problem >> 우선순위 역전 문제 >> 순위 높은순으로 진행해야하는데, 경우에따라 낮은 프로세스가 먼저 실행될 때가 있음. >> 가장 유명한 예시로 PathFinder > Low 프로세스에서 LOCK을 걸어서 HIGH 프로세스.. 2021. 4. 17.
운영체제 7 || thread (2 현대의 컴퓨터들은 코어의 개수가 올라강메 따라서 멀티스레딩을 좀 쉽게 할 수 있는 여러 방법이 고안됨 1. Implicit Threading 스레드를 만들고 관리하는걸 개발자가 직접 하는게 아닌 컴파일러와 런타임 라이브러리를 통해 OS의 도움을 받아서 관리하는것. 즉 개발자는 멀티스레딩을 고려하지 않아도 백그라운드에서 멀티 스레딩으로 변환됨 1-1. Thread Pools > 개발자가 스레드를 직접 만들긴 함, 하지만 라이브러리나 OS가 공간을 할당받고, 미리 정해진 개수의 스레드를 만듦 이러한 공간을 스레드 풀이라고 함. > 스레드 풀에서 만들어진 스레드들은 Sleep상태로 대기함 1-2. Fork Join > 멀티 스레딩은 결국 연산속도를 빠르게 하기 위함. > 분할 정복과 비슷한 매커니즘 > 메인 .. 2021. 4. 17.
운영체제 6 || 스레드(threads) 멀티프로세서 구조는 기본적으로 cost가 높음 -개발이 어렵다. -속도에 있어서 오버헤드가 있다. 위와 같은 문제들을 스레드가 해결해 줌 1. What is Thread? - 스레드는 CPU이용의 기본 단위 - 스레드는 프로그램에서 일련의 명령들을 실행함. 이 스레드는 두 가지 형태로 나뉘는데 a. 싱글 스레드 프로세스 - 스레드가 단일이라서 thread state가 하나만 존재함. - 이 싱글 스레드가 하나에 코어에만 매핑이 됨 b. 멀티 스레드 프로세스 - 스레드 여러개가 별도의 실행 흐름을 가짐 1-1. 스레드끼리 공유하는 것 - Code - Global variable - Opened files - Heap 1-2. 스레드 각자 가지고 있는 것 - Set of registers (Program C.. 2021. 4. 17.
운영체제 || 5. Inter Process Communication 시스템 안에 있는 프로세스는, 각자 독립적이거나 상호 협력적일 수 있어. 독립적인 프로세스는 당연히, 다른 프로세스에 영향을 줄 수 없지만, 협력적인 프로세스들은 영향을 줄 수 있지, 예를 들자면 이제 공유하는 데이터 같은게 있을테니까. 이 프로세스들이 독립적인 것 보다, 상호 협력적인게 장점이 많아. 첫번째, Information sharing : 데이터를 상호교환하기 떄문에 서비스의 품질이 올라가고 두번째, Computation speedup : 연산 속도가 당연히 올라갈 거고 세번째, Modularity : 프로세스에게 각각의 역할을 정해준다면, 프로세스는 각자가 필요한 코드만 들고 있을거고, 결국 유지보수에 장점이 있지. 마지막으로 Convenience : 한 Task를 한 프로세스로 할 떄 보다.. 2021. 3. 29.