728x90

Computer 120

페이지 교체 정책(Page Replacement Policy)

Page Replacement Policy evict할 페이지를 고르는 여러가지 알고리즘 OPT(Belady’s Algorithm) 앞으로 가장 오랫동안 사용되지 않을 페이지를 빼는 알고리즘 page fault가 나면, 가장 나중에 참조될 페이지를 빼는 방식이다. 대신 이 방식은 어느 페이지가 참조될 지 알아야 한다는 단점이 있다. 대부분의 현실 컴퓨팅의 경우 미래에 어느 페이지가 참조될 지 아는 것은 불가능하다. 따라서 belady’s algorithm은 다른 알고리즘의 효율성을 따지는 평가기준으로 많이 쓰인다. FIFO 가장 먼저 들어온 페이지를 가장 먼저 빼는 알고리즘 가장 직관적이고 일반적인 방법이다. 하지만 이 알고리즘에는 치명적인 문제점이 있는데, 이를 belady’s anomaly라고 부른다..

Computer/CS 2024.03.22

Lazy Loading

Lazy Loading 프로그램이 실제로 해당 데이터를 필요로 할 때까지 데이터의 로딩을 지연시키는 기법이다. 이는 주로 메모리 관리에 사용되며, 프로그램이 시작할 때 필요한 모든 데이터를 메모리에 즉시 로드하지 않고, 필요한 순간에만 해당 부분을 로드한다. 메모리 사용의 효율성을 높이고 시스템의 전반적인 성능을 개선한다. 메모리는 한정된 자원이므로, 모든 데이터를 미리 로드하면 불필요한 메모리 사용으로 이어질 수 있다. Lazy Loading의 작동 방식 Demand Paging : 프로세스가 페이지에 접근하려 할 때마다 해당 페이지가 메모리에 없으면 페이지 폴트가 발생한다. 이후 운영체제는 필요한 페이지를 디스크에서 메모리로 로드한다. 리소스 사용 최적화 : 프로세스가 실제로 사용하지 않는 페이지는 ..

Computer/CS 2024.03.22

페이지 폴트(Page Fault)

Page Fault CPU가 접근하려는 페이지가 메모리에 없는 경우이다. 즉, 페이지 테이블의 valid bit 값이 0인 경우이다. 페이지 폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서 마치 페이지 폴트가 전혀 발생하지 않은것처럼 프로그램이 계속적으로 작동하게 해준다. 동작 page table을 통해 필요한 page가 없다면 (invalid) 즉, page fault 운영체제에 page fault trap을 발생시킨다. 동작하고 있던 프로세스의 PCB를 메모리에 저장한다. 운영체제는 다른 page table을 확인한다. 그리고 뭔가 이상하다면 프로세스를 중지시키고 그냥 메모리에 없는 것이라면 backing store에서 찾는다. 필요한 페이지를 찾아서 물리 메모리에서 빈 frame을 찾는다...

Computer/CS 2024.03.22

TLB(Translation Lookaside Buffer)

TLB(Translation Lookaside Buffer) 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시이다. 최근에 일어난 가상 메모리 주소와 물리 주소의 변환 테이블을 저장한다. CPU가 가상 주소로 메모리에 접근하려고 할 대, 우선 TLB에 접근하여 가상 주소에 해당되는 물리 주소를 찾고 TLB에 매핑이 존재하지 않으면 MMU가 페이지 테이블에서 해당되는 물리 주소로 변환한 후 메모리에 접근한다. 프로세스가 바뀔 경우, TLB를 모두 flush 해줘야 한다는 문제가 있다.

Computer/CS 2024.03.22

페이지 테이블(Page Table)

Page Table Paging address space를 연속적으로 할당하지 말고, 페이지라는 단위로 쪼개서 사용하는 것이다. 먼저, 프로세스의 메모리를 page 단위로 자르고, 실제 physical 메모리도 page 단위로 쪼갠다. 이 때 쪼개진 physical memory를 page나 page frame이라고 부른다. 그리고 이 virtual address의 page를 physical memory의 frame으로 mapping하는 방법이다. Page Table VPN(Virtual Page Number)를 PFN(Physical Frame Number)로 매핑해주는 table 각각의 프로세스는 자신만의 page table을 독립적으로 가지고 있으며, 각 프로세스의 page table이 저장되어 있는..

Computer/CS 2024.03.22

가상 메모리(Virtual Memory)

Virtual Memory 운영체제는 메모리가 실제 메모리보다 많아 보이게 하는 기술인 가상 메모리를 제공한다. 가상 메모리는 시스템이 프로그램을 실행시키는데 최소한 얼마만큼의 메모리가 필요한가에 대한 접근 방식으로, 실행에 필요한 일부분만 메모리에 로드하고 나머지는 디스크에 두고서 필요할 때마다 교체하면서 쓰는 방식으로 구현된다. Demand Paging 현재 필요한(요구되어지는) 페이지만 메모리에 올리는 것을 Demanding Paging(요구 페이징)이라고 한다. CPU 이용률과 처리율이 높아지고, 더 많은 사용자를 수요할 수 있다. Page table에서 해당 page가 메모리에 있는지를 나타내는 valid-invalid bit를 사용한다. bit가 invalid인 경우 페이지가 물리적 메모리에 ..

Computer/CS 2024.03.22

블로킹/논블로킹(Blocking/Non-Blocking)

블로킹/논블로킹 블로킹(Blocking, 타 작업 수행 차단) 특정 작업이 실행 요청을 받아서 실행하는 동안 다른 작업은 진행하지 못하고 대기하는 방식을 의미한다. 제어권이 호출된 함수에게 넘어가서 호출된 함수 내에서 작업이 모두 끝난 후 값이 리턴되고, 호출한 함수에게 다시 제어권이 넘어온다. 작업이 순차적으로 이루어지므로 작업 흐름을 쉽게 이해할 수 있다는 장점이 있다. 블로킹이 이루어지는 동안 하드웨어 리소스를 효율적으로 이용하지 못한다는 단점이 있고, 특히 블로킹이 일어나는 작업이 오래 걸리는 작업인 경우에 이러한 단점은 더욱 부각된다. 논블로킹(Non-Blocking, 타 작업 수행 허용) 특정 작업이 이미 수행중이여도, 그것과 상관없이 바로 다른 작업을 수행 시키는 방식을 의미한다. 제어권은 ..

Computer/CS 2024.03.12

동기/비동기

동기/비동기 동기(Synchronous, 동시에 발생) 동시에 일어난다는 의미이다. 즉, 요청과 그 결과가 동시에 일어난다는 약속을 의미한다. 요청을 하면, 시간이 얼마나 걸리든 상관없이 요청한 자리에서 결과가 주어져야 한다. 요청과 결과가 모두 한 자리에서 동시에 일어나게 된다. 여러 노드 사이의 작업 처리 단위를 동시에 맞추겠다는 의도를 포함하고 있다. 설계가 매우 간단하고 직관적이지만 결과가 주어질 때까지 아무것도 못하고 대기해야 한다는 단점이 존재한다. 비동기(Asynchronous, 동시에 발생하지 않는) 동시에 일어나지 않음을 의미한다. 즉, 요청과 결과가 동시에 일어나지 않는다는 약속을 의미한다. 요청한 그 자리에서 결과가 주어지지 않는다 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 ..

Computer/CS 2024.03.12

32 bit OS vs 64 bit OS

32bit / 64 bit OS의 차이 컴퓨터의 워드 사이즈(Word size) word는 컴퓨터의 데이터 기본 처리 단위다. 32비트, 64비트는 워드 사이즈를 의미한다. 32비트 머신(CPU)라면 그 머신의 기본 데이터 처리 단위는 32비트가 되고, 64비트 머신이면 그 머신의 기본 데이터 처리 단위는 64비트가 된다. 가능한 CPU와 운영체제 조합 32비트 65비트가 CPU에도 운영체제에도 있다. CPU는 하드웨어, 운영체제는 소프트웨어 32비트 시스템과 64비트 시스템의 차이 메모리 주소 공간 크기의 차이 기본처리 단위가 다르다보니 프로세서의 레지스터의 크기에서 부터 차이가난다. 32비트 프로세서의 범용 레지스터는 32비트, 4바이트이다. 64비트 프로세서의 범용 레지스터는 65비트, 8바이트이다..

Computer/CS 2024.03.11

Rax Register

Rax Register 운영체제와 하드웨어 아키텍처 관점에서 중요한 역할을하는 레지스터 중 하나이다. 기본 개념 정의 및 특성 x86-64 아키텍처에서 사용되는 범용 레지스터이다. 64비트 시스템에서는 rax라는 이름을 가지며, 32비트에서는 eax, 16비트에서는 ax로 알려져있다. 역할 함수의 반환 함수 호출의 결과값을 저장하는데 주로 사용된다. 즉, 함수가 값을 반환할 때 rax에 그 값이 저장된다. 산술 연산 산술 연산 및 다른 명령어의 결과값을 저장하는 데에도 사용된다. 호환성 이전 16비트 및 32비트 시스템과 호환성을 위해, rax는 부분적으로 ax및 eax로 사용될 수 있다. 운영체제에서의 rax 레지스터 사용 시스템 호출 시스템 호출을 수행할 때, rax는 호출되는 시스템 호출의 번호를 ..

Computer/CS 2024.03.11
728x90