본문 바로가기

OS8

19. Paging: Faster Translations (TLBs) 1. TLBs : Making Paging Faster (1) Page table : 프로세스 당 데이터 구조체, 메인 메모리에 상주 (2) 모든 데이터/instruction 액세스는 2개의 메모리 액세스가 필요함 : 하나는 페이지 테이블, 하나는 data/instruction을 위한 액세스 (3) 2개의 메모리 액세스 문제는 associative memory 혹은 translation look-aside buffers(TLBs)라고 불리는 MMU 안에 있는 특별한 fast-lookup hardware 캐시를 사용하여 해결할 수 있음 - 일반적인 TLBsms 32, 64, 128 개의 엔트리를 가짐 (작고 replacement policy 필요함) - TLB는 full associative의 방식으로 관.. 2022. 11. 1.
7. Multiprocessor Scheduling 1. Multiprocessor Scheduling (1) 멀티 코어 프로세서의 발생은 멀티프로세서 스케줄링의 확산의 원인 - Multicore : 여러 개의 cpu 코어는 하나의 칩으로 감싸짐 (2) 더 많은 cpu를 추가하는 것은 싱글 애플리케이션을 빠르게 만들 수 없음 -> 스레드를 사용하여 병렬 상태에서 수행하도록 애플리케이션을 다시 작성 **core의 개수가 늘어나는 이유 : cpu의 속도를 빠르게 하기 위해선 clock speed를 높여야됨 -> cpu에서 열이 많이 나고 power wall problem => core의 개수를 늘리거나 multi-threading 2. Background : Single CPU with cache (1) cache - 작고 빠른 메모리 - 메인 메모리에서 발.. 2022. 10. 14.
6. Scheduling : The Multi-level feedback Queue 1. Need a new and efficient algorithm (1) FIFO : 단순하지만 convoy effect로 부터 고통받음 -> 낮은 cpu와 device utilization이 원인 (2) SJF scheduling : 평균 turnaround time과 waiting time을 감소시키기에 좋음 : 문제점 - 어떻게 job length을 앎? estimation이 항상 좋음? (3) RR scheduling : response time을 줄이는 데에는 좋지만 turnaround time을 줄이는 데에는 좋지 않음 (4) 새로운 알고리즘이 필요 - turnaround time을 최적화 -> 더 짧은 작업을 먼저 수행 - response time을 최소화 -> 가능한 많이 프로세스를 RR.. 2022. 10. 14.
5. Scheduling : Introduction 1. Scheduling (1) Workload assumtions : 1. 각 작업은 같은 시간동안 수행됨 2. 모든 작업은 같은 시간에 도착함 3. 모든 작업은 오직 cpu를 사용 (즉, I/O를 수행하지 않음) 4. 각 작업에 대한 런타임은 알려져 있음 (2) 성능 측정항목 : Turnaround time - 들어가서 나올 때까지의 시간 : Waiting time - 프로세스가 준비상태인 큐에서 waiting하는 시간 (3) fairness : 성능과 fairness는 스케듈링에서 tradeoff가 있음 ** interactive한 operation일 경우 fairness가 중요함 2. Algorithm 1 : FIFO (1) First Come, First Served (FCFS) - ex. 도착.. 2022. 10. 14.
4. Mechanism: Limited Direct Execution 1. How to efficiently virtualize the cpu with control? (1) OS는 time sharing으로 physical CPU를 공유할 필요가 있음 (2) Issue - Performance : 어떻게 시스템에 대한 초과 오버헤드없이 virtualization을 구현할까 - Control : CPU에 대한 제어권을 얻는 동안 어떻게 효율적으로 프로세스를 실행할까 -> 제어권없이, 프로세스는 단순하게 영원히 실행되어 기계를 인수하거나(?), 접근이 허용되지 않는 정보에 접근할 수 있음 2. Direct Execution (1) performance의 이유로 프로그램은 CPU에서 바로 수행됨 - OS : - Program 1. 프로세스 리스트에 대한 entry를 생성 2... 2022. 10. 13.
3. Process API 1. Process ID (1) 프로세스는 pid(process identifier)를 통해 관리되고 식별됨 (2) 부모 프로세스는 자식 프로세스를 만들고 이 자식 프로세스가 다시 부모 프로세스가 돼서 자식 프로세스를 만들면서 프로세스 트리를 생성 pid = 1 -> 조상 프로세스 2. Create a process (1) fork() : 부모 프로세스는 자식 프로세스를 생성하기 위해 fork() 시스템 콜을 사용 : 자식 프로세스는 부모의 address space의 복사본을 가짐 : 두 프로세스 모두 fork 이후에 한 가지 차이점으로 계속 실행됨 -> 차이점 : 리턴 값 (부모는 child pid, 자식은 0을 리턴) pid = 12345 를 가진 부모 프로세스가 fork를 통해 pid = 12346.. 2022. 10. 9.