CS/OS
-
💻 [OS 오퍼레이팅시스템] #15 | Virtual Memory IssueCS/OS 2022. 6. 13. 12:36
💻 Page Size - page size 증가 offset 비트 수 증가 -> # page 비트 수 감소 -> page table entry 수 감소 page table 크기 감소 - 문제 내부 단편화발생(각 페이지 크기가 커서 낭비 발생) entry수 작아서 메모리 금방 다 씀 💻 Faster Translation - TLB 사용 추가적인 메모리 접근을 줄일 수 있다. 페이지 테이블을 위한 캐시 - TLB의 문제 context switch 할 때, 각 프로세스마다 가상 주소 다른데 같은 TLB사용하면 의미 X - Sol1) Flush context switch할 때마다 TLB 초기화 (valid bits=0) 단점 : 초기 TLB 미스 많고, 모든 switch마다 해줘야해서 high cost - So..
-
💻 [OS 오퍼레이팅시스템] #13 | Deadlocks | 데드락, 뱅커스 알고리즘, 교착상태CS/OS 2022. 6. 13. 11:02
💻 데드락 (교착상태) - 데드락 - 시스템 자원을 두고 경쟁하거나 서로 통신하는 프로세스의 집합의 영구적 차단 - 집합의 각 프로세스가 다른 block된 프로세스에 의해서만 발생될 수 있는 이벤트를 대기하면서 block되면 프로세스 집합은 데드락 - 더이상 이벤트들이 발생할 수 없는 상태여서 두 개 이상의 프로세스가 더이상 진행될 수 없는 상황 두 개 이상의 프로세스에 의한 자원 요구의 충돌을 수반한다. - Resources (자원) [ 비선점 자원(non preemtable) ] - 빼앗을 수 없는 자원 - 보통 데드락이 비선점자원을 수반한다. - 비선점 자원 종류 2가지 : reusable and consumable [ 1) 재사용 자원(reusable) ] - 사용해서 사라지지 않고, 한번에 한 ..
-
💻 [OS 오퍼레이팅시스템] #14 | 메모리 관리 | 메모리 관리 요구사항, 주소 종류, Buddy System, Paging, SegmentationCS/OS 2022. 6. 13. 10:51
💻 용어 정리 - 정적 static 할당 컴파일 타임에 실행되어 실행 전에 미리 할당 된다. static 변수, 전역 변수 - 동적 dynamic 할당 런타임에 실행되어 요청 시에 할당된다. 실행 시점에야 메모리를 얼마나 사용할지 알 수 있는 상황이 있기 때문에 쓰인다(ex. 사용자의 입력으로 메모리 크기 알 수 있다던지) new, malloc - 메모리 관리 2부분으로 나뉜다. 1) OS(monitor, kernel) 2) User part : 다수의 프로세스로 나뉜다. 나뉘는 일은 OS가 하며 멀티프로그래밍 시스템의 핵심이다 -> memory management 💻 메모리 관리 요구사항 - 1) Relocation 재배치 다수의 프로세스 간 메인 메모리는 공유된다. - 프로그램이 어디에 배치될지 실행..
-
💻 [OS 오퍼레이팅시스템] #12 | Synchronization (조건 동기) | CV, Monitor, 생산자 소비자 문제, Reader와 Writer 문제CS/OS 2022. 6. 13. 04:54
💻 조건 동기 Condition Synchronization - 상호배제와 조건동기 1) Mutual Exclusion 상호배제 : 한 번에 하나의 쓰레드만 공유 자원에 접근 가능 2) Condition Synchronization 조건 동기 : 다수 쓰레드의 접근 동기화, 다수 쓰레드의 실행을 순서화 (특정 조건 만족할 때까지 대기, 조건 만족하면 재기시킴) 💻 Condition Variables 멀티쓰레드 프로그램에서, 스레드가 실행을 계속(재기)하기 전에 조건을 기다리는 경우가 많다. - Condition Variables (CV) 조건이 만족되기를 기다리는 공유변수 - 어떤 이벤트가 일어나기 전까지 쓰레드를 블락하는 방식에 쓰인다. - 조건에 따른 waiting queue(대기 장소)이다. - m..
-
💻 [OS 오퍼레이팅시스템] #11 | Synchronization (상호배제) | 동기화, 세마포어, 스핀락CS/OS 2022. 6. 12. 23:06
💻 Race Condition - Synchronization 쓰레드가 멀티쓰레딩 프로그램에서 같이 일할 때 공유 자원에 접근하는 것. -> 동기화 문제 발생 이 때, 올바르지 못한 결과가 나오는 문제 -> race condition - Race Condition 다수의 프로세스나 쓰레드가 동시에 공유 자원에 접근하고 변경하려고 할 때 발생하는 버그 문제. 공유 자원에 접근할 결과가 다음과 같다. - Non-deterministic한 Incorrect한 결과 - Non-Reproducible (재생산 불가능) 실행 시간에 달려있다. (실행 속도와 스케쥴링 타임 조절 불가능) - 멀티쓰레딩 : CPU 스케쥴러에 의해 '끼어들기(interleaving)'가 발생할 수 있다. -> 예측 불가능 - 멀티프로세서..
-
💻 [OS 오퍼레이팅시스템] #10 | Thread & Synchronization | 멀티쓰레딩, 프로세스와 쓰레드, ULT, KLTCS/OS 2022. 6. 12. 18:49
💻 프로세스와 쓰레드 - 프로세스 실행되고 있는 프로그램 일련의 명령 및 관련 시스템 리소스 집합의 실행으로 특정 지어지는 실행 단위 - 특성 1. 자원 소유권의 단위 2. 실행(프로세스 관점) 단위 또는 스케쥴링(커널 관점) 단위 - 쓰레드 한 프로세스는 단일 실행 순서를 갖는다. 실행 단위는 thread라고 부른다. 또는 LWP(Light Weight Process)라고 하며, 자원 소유 단위는 여전히 프로세스(또는 task)라고 한다. * 프로세스 세분화 -> 실행 단위, 자원 소유 단위 -> '쓰레드' 💻 멀티쓰레딩 - 멀티쓰레딩 한 프로세스에는 한 개 또는 다수의 쓰레드가 존재한다. 단일 프로세스 내에서 다수의 동시 실행 경로를 지원할 수 있는 OS의 능력이다. 쓰레드는 같은 프로세스의 다른 쓰..
-
💻 [OS 오퍼레이팅시스템] #9 | Process Scheduling 3 | 다중프로세서 스케쥴링, SQMS, MQMSCS/OS 2022. 6. 12. 00:34
💻 다중 프로세서 스케쥴링 - 단일 프로세서 스케쥴링 언제(when) 어떤(which) 작업이 실행될지 결정한다. - 다중 프로세서 스케쥴링 언제(when)뿐만 아니라 어디(where)에서 작업이 실행될지 결정 -> 어떤 CPU에게 작업을 할당할지 결정한다. - Issue ready queue를 어떻게 유지할 것인지 affinity를 어떻게 정의하고 활용할 것인지 applications를 어떻게 다중 프로세서에게 할당할 것인지 이질적 조합의 프로세서를 어떻게 관리할 것인지 프로세서들 간의 workload를 어떻게 균형을 맞출 것인지 - HW Issue : Cache Affinity 캐시 친화적 - SW Issue : Concurrency 병행성 캐시 효과로 인해(Memory에서 필요한 정보를 Cache로..
-
💻 [OS 오퍼레이팅시스템] #8 | Process Scheduling 2 | scheduling기준, Virtual Round Robin, 스케쥴링 알고리즘 비교, 다단계 피드백 큐 스케쥴링, MFQSCS/OS 2022. 4. 17. 23:39
💻 용어 정리 - Burst (time) CPU Burst : CPU가 실행한 소요시간 I/O Burst : CPU가 I/O기다리는 시간 cycle : CPU Burst와 I/O Burst 사이클을 반복하다가 언젠가 종료 - Bound I/O Bound : CPU burst가 더 작은 프로세스 또는 프로그램 CPU Bound (CPU intensive) : CPU burst가 더 큰 프로세스 또는 프로그램으로, CPU process, CPU task로도 불림 2개 믹스된 프로세스도 있다. 💻 스케쥴링 기준(Criteria) - 최적화(Optimization) 기준 CPU utilization : 얼마나 CPU를 활용해서 idle한 상태를 줄이는가 Throughput : 시간당 프로세스 처리량으로, 클수롤..
-
💻 [OS 오퍼레이팅시스템] #7 | Process Scheduling 1 | Long-Term, Medium-Term, Short-Term, FCFS, SJF, SPN, Rount-Robin, SRT, HRRNCS/OS 2022. 4. 17. 18:50
💻 프로세스 스케쥴링의 종류 - Long-Term Scheduling (job scheduler) 장기 스케줄러. 프로세스가 처음 생성됐을 때 제일 처음으로 관여. 어떤 프로그램이 프로세싱을 위해 시스템에 추가될지 말지 결정. (큐 적재) 어떤 직업이 시스템의 자원을 차지할 것인지 결정 (New에서 ready 큐로 들어갈지 말지, Exit) - Medium-Term Scheduling (swapper) 중기 스케줄러. 어떤 프로세스들이 CPU를 할당받을 것인지 결정. 메인 메모리에 올라갈 프로세스의 수를 결정. 멀티프로그래밍 정도를 결정 (Blocked할지 말지) - Short-Term Scheduling (CPU scheduler) 단기 스케줄러. 프로세서에 의해 실행될 프로세스를 결정. 프로세스에 C..
-
💻 [OS 오퍼레이팅시스템] #6 | Process Description and Control 2 | Mode Switch, Process Switch, Kernel Stack, Process Creation, Termination, Zombie, OrphanCS/OS 2022. 4. 15. 21:47
💻 모드 스위치 vs 프로세스 스위치 - 모드 스위치 프로세서를 user mode와 kernel mode사이에서 전환. Running 상태인 프로세스의 상태 변화없이 일어날 수 있다. context를 저장하고 불러오는데 약간의 overhead를 수반한다. - 프로세스 스위치 (context switch) 프로세서를 한 프로세스에서 다른 프로세스로 전환. 1. 현재 프로세스의 프로세서 상태를 저장 2. 현재 프로세스의 PCB를 수정(ready, blocked, other) 3. 프로세스의 PCB를 적절한 queue로 옮김 4. 실행을 위한 다른 프로세스를 선택(schedule()함수 호출) 5. 선택된 프로세스로 PCB 수정(Running) 6. 메모리 관리를 위한 TLB 수정 7. 선택된 프로세스의 프로..