본문 바로가기

Tech/운영체제

[개발 한 스푼] CPU 스케줄링 알고리즘의 종류와 각각에 대해 아는대로 설명해주세요 (2023.01.08) 개발 한 스푼 adevspoon.com 본 글은 에 올라오는 "오늘의 질문"에 대한 학습 결과물을 정리한 내용입니다. CPU 스케줄링? 메모리에 올라온 프로세스들 중 어떤 프로세스를 먼저 처리할 지 일들의 순서를 정하는 것을 CPU 스케줄링이라고 한다. 다르게 말하면, Ready Queue에 있는 프로세스들의 실행 순서를 정하는 것이다. 효과적인 스케줄링은 다중 프로그래밍을 가능하게 하고 CPU 이용률을 극대화시킬 수 있다. CPU 스케줄링 종류 CPU 스케줄링 알고리즘은 선점과 비선점으로 구분할 수 있다. - 선점(preemptive) : 다른 프로세스가 현재 CPU를 할당받아 실행중인 프로세스를 중지시키고 CPU를 강제적으로 뺏을 수 있는 방식 - 비선점(non-preemptive) : 다른 프로세스..
[운영체제] Blocking&Non-Blocking와 Sync&Async 블로킹&논블로킹과 동기&비동기라는 두 개념의 차이에 대해 정리해봤다. 사실 두 개념을 조합해서 사용되기 때문에 비교되는 것이지, 동기와 비동기는 프로세스 수행 순서 보장에 대한 매커니즘이고, 블록과 논블록킹은 프로세세의 유휴 상태에 대한 개념으로 완전한 별개의 개념으로 관련이 없다고 한다. 블록킹(Blocking)과 논블록킹(Non-Blocking) 제어권을 어떻게 처리하느냐에 따라 달라진다. 제어권이란 자신(함수)의 코드를 실행할 권리같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다. Blocking 블로킹은 A함수가 B함수를 호출하면, 제어권을 A가 호출한 B 함수에게 넘겨주는 것이다. A는 B에게 제어권을 넘겨줬기 때문에 B함수의 실행이 끝날 때까..
[운영체제] 가상 메모리 가상 메모리란 어떤 프로세스를 실행할 때 프로세스 전체가 메모리에 적재되지 않고도 실행이 가능하도록 하는 기법이다. 어떤 프로세스가 차지하는 메모리가 전체 메모리 용량보다 크더라도, 지금 현재 필요한 부분만 메모리에 적재하여 메모리에 올라가는 프로세스의 크기를 줄일 수 있기 때문에 물리 메모리 용량을 초과하는 프로그램도 동작시킬 수 있다. 파일이나 메모리가 둘 이상의 프로세스들에 의해 공유되는 것을 가능하게 한다. 어떤 프로세스나 파일이 메모리 주소를 참조할 때 특정 물리주소가 아닌 가상 주소를 참조하기 때문. 요구 페이징(Demand Paging) 가상 메모리는 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 올리는 것이라고 했다. 이때 프로세스의 일부분은 페이지 단위일 수도 있고, 세그먼트 단위..
[운영체제] 페이징과 세그멘테이션 페이징과 세그멘테이션은 가상 메모리를 관리하는 기법으로 프로세스가 사용하는 메모리 공간을 잘게 나누어 비연속적으로 실제 메모리에 할당하는 메모리 관리 기법이다. 페이징(Paging) 프로세스의 주소 공간을 페이지(page)란 단위의 고정된 사이즈로 나누어 물리적 메모리에 불연속으로 저장하는 방식 페이징 방식으로 메모리를 할당하게 되면 실제 프로세스가 실행될 때는 각각의 페이지들이 실제 메모리의 어디에 위치하고 있는지를 빠르게 알 수 있어야 함 프로세스의 입장에선 자신이 사용하고 있는 메모리 공간이 흩어져있는 페이지들이 아니라 하나의 연속된 메모리 공간으로 이해할 수 있어야지 프로그램 실행이 효율적이게 됨 → 페이징은 프로세스가 바라보는 메모리 주소 공간(논리 주소)와 실제 메모리 주소 공간(물리 주소)를..
[운영체제] 메모리 관리 메모리 관리가 필요한 이유 프로그램의 실행(프로세스)를 위해서는 메모리를 할당해야 함 메모리는 한정된 자원이기 때문에 멀티 프로그래밍 시스템에서는 여러 프로세스들이 메모리를 효율적으로 이용할 수 있도록 관리가 필요함 효율적인 메모리 참조(논리 - 물리 주소 변환) - 프로세스가 메모리 주소를 직접 참조하는 것이 아니라 프로세스의 주소 공간이란 것과 메모리의 주소 공간이란 것을 구분하고 있기 때문에 좀 더 빠르게 메모리 주소를 참조할 수 있는 관리 방법도 추가적으로 필요함. 스와핑(Swapping) CPU에서 실행되지 않는 프로세스 중 일부를 메모리가 아닌 디스크에 저장하는 기법 swap in : 디스크 → 메모리 swap out : 메모리 → 디스크 가상 메모리 기법의 핵심으로 디스크를 활용하여 큰 메모..