SMALL

페이지 교체

페이지 부재 발생 시 어떤 페이지를 교체할 것인지 여러 개의 알고리즘이 있음

 

FIFO 알고리즘

  • First in First out인 알고리즘이며 말그대로 선입선출로 페이지 교체를 한다.
  • 페이지 프레임이 증가하면 오히려 더 많은 부재가 발생(벨레이디의 모순)

LRU 알고리즘

  • 가장 오랫동안 사용되지 않은 페이지를 교체한다.
  • 일반 lru는 하드웨어 오버헤드가 매우 큰 문제를 가지고 있어, 참조비트를 사용한 lru 근사를 사용한다.
  • 가장 많이 사용되는 알고리즘

OPT 알고리즘

  • 가장 오랫동안 사용되지 않을 페이지를 교체한다.
  • 실질적으로 구현 불가능.. 미래를 모르니

LFU 알고리즘

  • 가장 빈도가 적은 페이지를 교체한다.
  • 구현 비용이 비싸며, 구현하기가 어려워 잘 사용하지 않음
LIST

'전공 > 운영체제' 카테고리의 다른 글

내부단편화, 외부단편화  (0) 2021.07.11
TLB(Translaction-lookaside buffer)  (0) 2021.07.08
가상메모리  (0) 2021.07.08
Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
SMALL

내부단편화

프로세스가 필요한 크기보다 메모리가 더 커서 메모리가 남아서 메모리 공간이 낭비되는 현상

 

외부단편화

메모리 할당 및 해제가 반복적으로 일어나서 중간 중간에 메모리가 남아서 실제로 사용하지 못해서 메모리 공간이 낭비되는 현상

 

예시

영역 메모리 크기 프로세스 크기
A 30 20
B 45 50
C 90 60
D 100 120
E 150 200
F 200 150

 

A : 내부단편화 10 발생

B : 외부단편화 45 발생

C : 내부단편화 30 발생

D : 외부단편화 100 발생

E : 외부단편화 150 발생

F : 내부단편화 50 발생

LIST

'전공 > 운영체제' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2021.07.14
TLB(Translaction-lookaside buffer)  (0) 2021.07.08
가상메모리  (0) 2021.07.08
Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
SMALL

TLB?

  • 가장 최근에 참조된 페이지테이블 항목을 저장하고 있는 고속 캐시
  • 가상 주소로 데이터 접근 시, TLB 접근하여 있으면(TLB 히트) 변환 없으면(TLB 미스) 페이지 테이블에 접근하여 TLB 갱신
  • LRU 정책, RANDOM 정책 사용
  • TLB를 사용하면 한번에 물리주소를 변환할수 있어서 좋음(그림보고이해)

 

 

LIST

'전공 > 운영체제' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2021.07.14
내부단편화, 외부단편화  (0) 2021.07.11
가상메모리  (0) 2021.07.08
Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
SMALL

가상메모리?

주기억장치의 부족한 물리적 저장공간을 보조기억장치를 이용해서 가상으로 늘려주는 것을 의미(HDD나 SSD를 RAM처럼 사용 하는 것)

 

장단점

  • 메모리 크기 제약으로부터 자유로워짐
  • 병행성 및 CPU 이용률 증가
  • 전반적으로 속도가 느려질 수 있음
  • 저장장치 수명이 짧아짐

 

페이징 폴트 발생 시에 작업완료 시간에 영향을 미치는 요인

페이지 교체 정책(알고리즘)이 잘못 선택되어 질 경우 크게 성능이 떨어진다.

LIST

'전공 > 운영체제' 카테고리의 다른 글

내부단편화, 외부단편화  (0) 2021.07.11
TLB(Translaction-lookaside buffer)  (0) 2021.07.08
Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
Thread Pool(스레드 풀)  (0) 2020.09.17
SMALL

동기화 기법에 Mutex와 Semaphore가 있습니다.


Mutex(뮤텍스)

  • 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것
  • 문맥 교환이 필요 없음
  • 프로세스들이 짧게 lock을 소유하는 경우 사용
  • ex) 화장실 안에 변기가 3개가 있다고 쳐보자.. 뮤텍스 같은 경우는 각자 변기 앞에 줄을 서고 있음,, 근데 옆에 변기가 비어도,, 옆에 칸에 이동 안하고 자기가 선 줄에서 기다려야 한다고 생각하면 된다.

Semaphore(세마포어)

  • 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것
  • Mutex보다 더 정교한 동기화 장치
  • Mutext와 달리 가용 자원 개수가 여러 개 일수 있음
  • ex) 화장실 안에 변기가 3개가 있는데, 세마포어 같은 경우는 화장실 입구에서 줄을 서서, 변기 비는 칸에 들어간다고 생각하면 뮤텍스랑 구분이 된다는 걸 알 수있음. 

세마포어 문제점

상호 배제 보장이 안되며(모니터는 상호 배제 보장), 데드락 발생가능


LIST

'전공 > 운영체제' 카테고리의 다른 글

TLB(Translaction-lookaside buffer)  (0) 2021.07.08
가상메모리  (0) 2021.07.08
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
Thread Pool(스레드 풀)  (0) 2020.09.17
페이지 테이블  (0) 2020.09.14
SMALL

Starvation(기아현상)

자신보다 우선순위 높은 프로세스 때문에 오랫동안 cpu 할당을 받지 못하는것 (결국 실행되거나 소멸)

Aging(노화)

오랫동안 ready 상태인 프로세스의 우선순위를 주기적으로 올려주는 것을 의미


LIST

'전공 > 운영체제' 카테고리의 다른 글

가상메모리  (0) 2021.07.08
Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Thread Pool(스레드 풀)  (0) 2020.09.17
페이지 테이블  (0) 2020.09.14
Segmentation, Paging  (0) 2020.09.14
SMALL

Thread Pool

Thread를 미리 여러개 만들어 두고, 요청 시 가용한 Thread 할당

사용이유

  • 프로그램 성능 저하 방지(Thread 사용시마다 생성하면 느려지겠지?)
  • 다수의 사용자 요청을 처리하기 위해
  • 군대 병력 요청이라고 생각하면 쉬움.(군대 병력 미리 훈련 안시키면, 막상 전쟁나서 필요할 때마다 훈련 시키면 지연되는거나 마찬가지)

주의사항 및 장점

  • Thread 수는 cpu 개수, 메모리 용량, 동시 요청 고객 수 등을 고려하여 생성
  • 빠르고 안정감이 있음


LIST

'전공 > 운영체제' 카테고리의 다른 글

Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
페이지 테이블  (0) 2020.09.14
Segmentation, Paging  (0) 2020.09.14
커널 레벨 쓰레드, 유저 레벨 쓰레드  (0) 2018.05.04
SMALL

페이지 테이블

  • 각 페이지가 실제 메모리에는 어떤 프레임(물리메모리의 블록)에 저장이 되어있는지 매핑 정보 담고 있음

해시 페이지 테이블

  • 논리 주소의 페이지 번호를 해시 값으로 사용
  • 주소공간이 32bit보다 큰 경우에 많이 사용

계층적 페이지 테이블

  • 페이지 테이블 자체를 또 페이지화 하는 것

역 페이지 테이블

  • 물리 메모리의 프레임 번호로 인덱스되는 테이블
  • 메모리 공유 어려움
  • 최악의 경우 페이지 테이블 전체 탐색해야 함으로써 성능이 저하가 발생(성능저하 보완하기 위해 고성능/고비용 TLB 사용)


LIST

'전공 > 운영체제' 카테고리의 다른 글

Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
Thread Pool(스레드 풀)  (0) 2020.09.17
Segmentation, Paging  (0) 2020.09.14
커널 레벨 쓰레드, 유저 레벨 쓰레드  (0) 2018.05.04
SMALL

Segmentation

  • 하나의 프로세스를 논리적(가변) 단위로 분할
  • 외부단편화(O), 내부단편화(X)

Paging

  • 하나의 프로세스를 물리적(고정) 단위로 분할
  • 외부단편화(X), 내부단편화(O)


LIST

'전공 > 운영체제' 카테고리의 다른 글

Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
Thread Pool(스레드 풀)  (0) 2020.09.17
페이지 테이블  (0) 2020.09.14
커널 레벨 쓰레드, 유저 레벨 쓰레드  (0) 2018.05.04
SMALL

커널 레벨 쓰레드


커널 레벨 쓰레드는 운영체제가 제공하는 시스템 함수 호출을 통해서 쓰레드 생성을 요구해야 한다. 쉽게 말하면 사용자 요청에 따라 쓰레드 생성 및 관리를 하는 것이 커널을 말한다.


장점

커널에서 직접 제공해주므로 안정성과 다양한 기능이 제공된다.


단점

유저 모드에서 커널 모드로의 전환이 빈번하게 이루어 지기 때문에 성능 저하가 있다.


유저 레벨 쓰레드


유저 레벨 쓰레드는 커널에서 쓰레드 기능을 지원하지 않을 때, 쓰레드 기능을 가진 라이브러리를 활용하는 방식을 말한다.


장점

커널은 쓰레드의 존재를 모르기 때문에 유저 모드에서 커널 모드로 전환이 없기 때문에 성능이 좋다.


단점

운영체제는 프로세스의 존재만 알고, 쓰레드의 존재를 모르기 때문에 쓰레드 문제가 발생하지 않게 프로그래밍을 해야 하는데, 프로그래밍이 어렵고, 커널 레벨 쓰레드에 비해 결과 예측이 어려워진다.

LIST

'전공 > 운영체제' 카테고리의 다른 글

Mutex(뮤텍스), Semaphore(세마포어)  (0) 2020.09.17
Starvation(기아현상), Aging(노화)  (0) 2020.09.17
Thread Pool(스레드 풀)  (0) 2020.09.17
페이지 테이블  (0) 2020.09.14
Segmentation, Paging  (0) 2020.09.14

+ Recent posts