CS/OS 43

[운영체제] 스케줄링 알고리즘 : SPN, SRTF

오늘은 이전 글에 이어서 스케줄링 알고리즘 중 SPN, SRTF에 대해서 알아봅시다. 이전 글을 보고 오시지 않았다면 읽고 오시는 것을 추천드립니다! 2023.12.10 - [Computer Science/운영체제] - [운영체제] 스케줄링 알고리즘 Shortest Process Next(SPN) 프로세스가 ready의 프로세스 목록 중 service Time이 가장 짧은 것부터 실행하는 방법을 의미합니다. 이전 글의 예시와 같이 진행해봅시다. 아래와 같은 루틴을 갖게 될 것입니다. 9초까지는 동일하지만, SPN은 9초에서 다르게 작동합니다. 9초에 B의 작업을 모두 마치고 스케줄링 과정을 진행해야합니다. 현재 메모리에는 C, D, E가 로드되어 있고 우리는 이 중에서 어떤 것을 실행할 지 정해야합니다...

CS/OS 2023.12.10

[운영체제] 스케줄링 알고리즘 : Priority, FCFS, RR

오늘은 스케줄링 알고리즘 Priority, FIFO, RR에 대해서 알아보겠습니다. 개요 지난 글에서 다룬 Scheduling의 종류 중에서 Short-Term Scheduling은 어떤 방법이 효율적이라고 할 수 있을까요?? 사용자의 관점에서 본다면 response time. 즉, 내가 프로그램을 실행했을 때 실행되는 반응 속도가 빨라야할 것입니다. 하지만 시스템 적으로 바라본다면 CPU utilization. 즉, CPU를 얼마나 효율적으로 사용하는 지가 관건일 것입니다. 스케줄링 판단 기준 그렇다면 스케쥴링을 판단하기 위한 몇가지 기준과 용어에 대해서 다뤄보겠습니다. CPU utilization : CPU가 user의 프로세스들을 실행하기 위해 차지하는 시간의 비율 Throughput : 단위 시간..

CS/OS 2023.12.10

[운영체제] 프로세스 스케줄링

오늘은 프로세스 스케줄링에 대해서 다뤄보겠습니다. 프로세스 스케줄링의 종류 우리는 지금까지 어떠한 프로세스가 ready에서 run으로 변경될 지, 어떤 run 상태의 프로세스를 block시킬지, 어떤 프로세스를 swap out, swap in 할지와 같은 프로세스를 선택하는 과정을 프로세스 스케줄링이라고 하였습니다. 하지만 엄밀히 따지면 프로세스 스케줄링은 크게 3가지로 분류할 수 있으며, 여기에 I/O 장치가 받은 입출력 명령에 대해서 어떤 것을 우선 실행할지 결정하는 I/O 스케줄링까지 합해서 총 4가지의 스케줄링이 있습니다. 프로세스의 스케줄링은 스케줄러가 실행되는 주기의 길이에 따라 Long-term, Medium-term, Short-term으로 나뉘게 됩니다. Long-term Scheduli..

CS/OS 2023.12.10

[운영체제] Trashing

오늘은 Demand Paging의 부작용으로 발생하는 Trashing에 대해서 알아보겠습니다. Trashing Demand Paging을 사용하면 메모리에 많은 프로세스를 올릴 수 있다는 장점이 있습니다. 하지만 메모리에 공간이 없으면 페이지를 swap하는 과정이 필요하였고, 이 과정에서 불필요하다고 판단되는 페이지는 swap out되는 것을 알고 있습니다. 만약, 이러한 page replacement 과정으로 인해서 다음 단계에 필요한 페이지가 page fault를 일으켰다면 다시 page를 load해야할 것이고, 이 과정에서 CPU는 I/O device에게 load 명령을 내린 뒤 다른 작업을 처리할 것입니다. 하지만 너무도 많은 프로세스들이 I/O에 의해서 load되는 과정에 있다면 결국 CPU는 ..

CS/OS 2023.12.09

[운영체제] 페이지 교체

오늘은 페이지 교체가 발생하는 원인과 페이지 교체의 방법들을 알아보도록 하겠습니다. 페이지 교체 메모리는 한정적입니다. 아무리 가상 주소 공간을 이용하여 많은 수의 프로세스를 메모리 상에 올린다고 하더라도, 메모리에 프로세스를 로드할 수 없는 상황은 필연적으로 발생합니다. 이 때, 우리는 어떠한 프로세스를 swap할 것인지를 정해야합니다. 자주 쓰는 프로세스보다는 덜 쓰는 프로세스를, 또는 최근에 사용됐던 프로세스 보다는 예전에 사용했던 프로세스를 swap out해야할 지도 모릅니다. 여기서는 이러한 페이지 교체를 하는 방법론에 대해서 알아보겠습니다. FIFO(First-In, First-Out) 말 그대로, 가장 먼저 들어온 것을 가장 먼저 밖으로 내보내는. 그러니까 가장 예전에 쓰인 프로세스를 내쫓는..

CS/OS 2023.12.09

[운영체제] TLB(Translation Lookaside Buffer)

오늘은 page table에서 주소를 읽어오는데 걸리는 시간을 줄이기 위한 수단인 TLB를 알아보겠습니다. Translation Lookaside Buffer Logical Address를 읽고 실제 해당 주소로 접근하기 위해서는 2~3회의 메모리 접근이 필요합니다. 단지 하나의 instruction을 수행하기 위해서 이러한 많은 연산이 필요하고, instruction은 굉장히 빠른 속도로 진행되므로 불필요한 접근들 또는 이러한 접근을 효율적으로 진행해볼 방식을 고안하고자 하였습니다. 그렇게 해서 하드웨어의 자원인 레지스터를 이용하여 해당 방법의 시소요 시간을 줄여보기로 하였습니다. 그렇게 해서 나온 것이 TLB 즉, Translation Lookaside Buffer입니다. TLB는 Logical Ad..

CS/OS 2023.12.09

[운영체제] 다계층 페이지 테이블

오늘은 다계층 페이지 테이블. Multi-level Page Table에 대해서 알아보겠습니다. Multi-level Page Table 프로세스의 크기가 커지게 되면서 page table을 저장하기 위해 많은 저장 공간이 필요해지게 되었습니다. 이러한 문제를 해결하고자 다계층 페이지 테이블이 도입되게 되었습니다. 4G의 주소공간을 갖는 컴퓨터가 있다고 해봅시다. 하나의 페이지는 통상 4Kb이니 우리의 메모리에는 페이지가 총 1M개 들어갈 수 있습니다. 페이지 테이블 1개는 4K이고, 페이지 엔트리는 4byte입니다. 따라서 페이지 테이블은 1K개의 페이지를 나타낼 수 있습니다. 즉, 페이지 테이블 한개로는 4G에 있는 모든 페이지를 저장할 수 없습니다. 따라서 이러한 여러 페이지테이블을 관리하기 위한 ..

CS/OS 2023.12.09

[운영체제] Demand Paging

오늘은 Virtual Memory를 활용한 Paging 기법인 Demand Paging에 대해서 알아봅시다. Demand Paging 이전 시간에 다룬 Virtual Memory와 Paging 기법을 동시에 활용한 방법입니다. 즉, 필요한 페이지만을 메모리에 로드하고 그 때, 그 때 교체하는 방식입니다. Demand Paging에서는 Logical Address를 Logical Address로 변환하기 위해 아래와 같은 메커니즘으로 작동합니다. Logical Address에 해당하는 페이지를 먼저 찾아야합니다. 그러기 위해서 PCB에 저장되어 있는 Page Table의 주소를 알아야합니다. 그래야 해당 프로세스의 Page table을 찾아가서 Logical Address에서 나타내는 page의 index..

CS/OS 2023.12.08

[운영체제] Virtual Memory

오늘은 메모리를 효율적으로 관리할 수 있도록 해주는 아주 중요한 개념인 가상 메모리. Virtual Memory에 대해서 다뤄보겠습니다. Virtual Memory 가상 메모리 방법이란 프로세스가 메모리와 디스크를 하나의 장치로 인식하여 필요할 때, 메모리에 로드하고, 그렇지 않을 때는 보조 기억 장치에 저장하는 방식입니다. 이러한 기법을 메모리를 조금 더 효율적이게 사용할 수 있습니다. 우리가 정말 예전에 들었던 우체국 예시를 들어보려고 합니다. 우체국 직원은 프로세서 즉 CPU를 의미합니다. 우체국에서 자신의 차례가 되길 기다리거나, 현재 서비스를 받고 있는 고객을 프로세스라고 합시다. (a)에서는 가상 메모리를 사용하지 않는 환경입니다. (b)는 가상메모리를 활용합니다. 고객들이 자신의 머리만 내밀..

CS/OS 2023.12.08

[운영체제] Paging

오늘은 메모리 관리 기술 중 대표적으로 쓰이고있는 기술인 Paging 기법에 대해서 다뤄봅니다. Paging 예전에 배웠던 Memory Partitioning 기법에 대해서 떠올려봅시다. 간혹 이런 메모리 파티셔닝에서 발생하는 fragmentation 문제는 아래와 같은 아이디어로 해결해볼 수 있을 것입니다. fragmentation 부분만큼 프로세스를 쪼개갠 후에 해당 구역에 나눠서 배정하는 것은 어떨까?? 말을 좀 어렵게 한건데, 쉽게 말해서 여러 fragmentation에 프로세스를 나눠서 분배한다는 아이디어입니다. 이 아이디어에서 나온 기법이 Paging입니다. 여기서 메모리를 조각냈을 때의 1 조각을 frame이라고 하고, 프로세스를 메모리 조각에 맞춰서 나눈 것을 page라고 합니다. Pagi..

CS/OS 2023.12.08