operation-system
[운영체제] 페이지 교체 알고리즘 - FIFO, OPT, LRU, NRU, LFU, MFU
페이지 교체 알고리즘 필요한 페이지가 메모리에 없을 때 페이지 부재(page fault)가 발생하면 요청된 페이지를 디스크에서 메모리로 읽어와야 한다. 이때, 물리 메모리에 빈 프레임이 존재하지 않는다면 물리 매모리 내 페이지 중 하나를 선택해서 디스크의 스왑 영역을 보내야 한다.(Swapping) 이를 페이지 교체라고 한다. 메모리 내 페이지 부재율을 최소하하기 위한 목적으로 디스크의 스왑 영역으로 보낼 페이지를 결정하는 알고리즘을 페이지 교체 알고리즘이라고 한다. FIFO(First In First Out) 가장 먼저 메모리에 올라온 페이지를 가장 먼저 내보내는 알고리즘 구현이 간단하지만 페이지의 향후 참조 가능성을 고려하지 않기 때문에 비효율적인 상황이 발생할 수 있음 들어온 시간을 저장하거나 올라..
[운영체제] 메모리 할당, 페이징(Paging)과 세그멘테이션(Segmentation)
메모리 할당 시작 메모리 위치, 메모리 할당 크기를 기반으로 메모리에 프로그램 할당 연속 할당과 불연속 할당으로 나뉨 1. 연속 할당 메모리에 연속적으로 공간 할당 물리 메모리를 다수의 공간으로 분할하여 하나의 분할 공간에 하나의 프로세스가 적재되도록 함 고정 분할 방식과 가변 분할 방식으로 나뉨 1-1) 고정 분할 방식(Fixed Partition Allocation) 메모리 공간을 미리 분할하여 고정된 크기로 나누어 관리하는 방식 분할 크기는 모두 동일할 수도 있고 다를 수도 있음 분할된 공간은 영구적으로 고정되기 때문에 메모리에 올릴 수 있는 프로그램의 수 및 크기가 제한적이고 융통성이 떨어짐 내부 단편화(내부 조각)와 외부 단편화(외부 조각) 문제가 발생할 수 있음 1-2) 가변 분할 방식(Va..
[운영체제] 임계 영역(Critical Section)과 경쟁 상태(Race Condition)
임계 영역(Critical Section) 둘 이상의 프로세스 또는 스레드가 공유 자원에 접근할 때 순서 등의 이유로 결과가 달라질 수 있는 코드 영역 한 번에 하나의 프로세스나 스레드만 접근할 수 있는 코드 영역 한 프로세스가 critical section에 접근하고자 했지만 다른 프로세스가 이미 해당 영역에서 작업을 하고 있다면 entry section에서 대기하고 있다가 exit section으로부터 작업 종료 신호를 받으면 critical section에 진입하도록 동기화 필요 상호 배제(Mutual Exclusion): 한 프로세스가 임계 영역에서 작업 중이라면 다른 프로세스가 접근하지 못하도록 통제가 필요함 진행(Progress): 아무도 임계 영역에 진입하지 못하면 안되며 아무도 임계영역에 ..
[운영체제] 교착 상태 (Dead Lock, 데드락)
교착 상태(Dead Lock, 데드락) 두 개 이상의 프로세스들이 서로가 가진 자원을 무한정 기다리며 멈추어 있는 상태 프로세스 A는 자원 1을 가지고서 자원 2를 요구, 프로세스 B는 자원 2를 가지면서 자원 1을 요구 교착 상태 발생 조건 상호 배제(Mutual Exclusion) 한번에 하나의 프로세스만이 공유 자원을 사용할 수 있어야 함 점유와 대기(Hold and Wait) 모든 프로세스는 최소 하나의 자원을 점유하면서 다른 프로세스가 가지고 있는 자원을 기다리고 있어야 함 비선점(Non Preemption) 다른 프로세스가 자신에게 할당된 자원을 모두 사용해 반환할 때까지 강제로 뺏어올 수 없어야 함 환형 대기(Circular Wait) 공유 자원과 해당 자원을 사용하기 위해 대기하는 프로세스..
[운영체제] 프로세스 메모리 구조 - Code, Data, Heap, Stack
프로세스 메모리 구조 Code(Text) 사용자가 작성한 프로그램 코드가 저장되는 공간 수행할 수 있는 기계어 명령의 형태로 변환되어 저장 변경이 불가능한 Read-Only Data 전역 변수나 static 변수 등 프로그램이 사용하는 데이터를 저장하는 공간 전역 변수나 static 변수를 참조한 코드 부분은 컴파일이 완료되면 data 영역 내의 해당 주소값을 가리키도록 변경됨 전역 변수가 저장되는 공간은 Data 영역과 BSS 영역으로 나뉨 Data: 초기화 된 전역 변수 BSS: 초기화 되지 않은 전역 변수 컴파일 시 데이터가 저장되며 프로그램 종료 시 삭제됨 전역 변수의 값이 변경될 수 있으므로 Read-Write Heap 프로그래머가 필요할 때마다 사용할 수 있는 메모리 공간 동적으로 메모리를 할..