운영체제 - 면접 질문 정리 (5)

코난·2025년 4월 28일
0

CS 면접 정리

목록 보기
72/76

Thrashing(쓰레싱)에 대해 설명해주세요.

쓰레싱은 메모리 영역에 접근할 때 메모리에 페이지 부재(Page fault)율이 높은 것을 의미하며 이는 심각한 성능 저하를 초래합니다.
다중 프로그래밍 정도가 높아짐에 따라 CPU 이용률이 높아지게 되고, CPU 이용률이 최댓값에 도달했을 때 쓰레싱이 일어납니다.


스케쥴러가 CPU 이용률만 보고 계속해서 새로운 프로세스를 더 많이 실행하려고 하는데, 새로운 프로세스에 할당할 수 있는 메모리 공간이 부족해 Page Fault가 더 많이 발생해 오히려 CPU 이용률이 떨어지는 현상을 쓰레싱이라고 할 수 있습니다.

쓰레싱을 해결하기 위하여 지역성을 활용한 Working Set과 Page Fault Requency 알고리즘을 활용합니다.

메모리가 고갈되면 일어나는 현상에 대해 설명해주세요.

메모리가 고갈되었으나 사용자가 원하는 프로세스는 실행해야하므로 SWAP 활동이 활발해집니다. 따라서 CPU 이용률이 떨어지고 또 CPU 이용률이 떨어지므로 프로세스를 추가하게 되는 쓰레싱 현상이 발생합니다. 이를 해결하지 못한다면 Out Of Memory 상태로 판단해 중요도가 낮은 프로세스를 강제로 종료합니다.

캐시(cache) 메모리를 왜 사용하는지, CPU의 적중률을 높이기 위해 어떤 원리를 사용하는지에 대해 설명해주세요.

CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 만들어졌습니다. CPU가 매번 메모리에 왔다갔다 하는 것은 시간이 오래걸리기에 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가져와 활용합니다.

캐시 적중률(캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수))을 높이기 위해서 참조 지역성의 원리를 사용하는데 최근에 접근했던 메모리 공간에 다시 접근하려는 경향인 시간 지역성, 접근한 메모리 공간 근처를 접근하려는 경향인 공간 지역성을 활용합니다.

DMA(Direct Memory Access)에 대해 설명해주세요.

DMA는 CPU의 개입 없이 주변 장치와 주기억장치와의 데이터를 직접 전송하여 데이터의 전송 효율을 높이고 CPU의 작업 부하를 줄이는 데에 중요한 역할을 합니다. 전송 속도가 빨라지며 대량의 데이터를 처리할 때 유용하고, 병렬 처리가 가능해 전체 시스템의 성능을 높여줍니다.

메모리 할당 중, 연속(Contiguous) 방식과 불연속(Non-Contiguous) 방식에 대해 설명해주세요.

  • 연속 메모리 할당
    • 고정 분할
    • 가변 분할
  • 불연속 메모리 할당
    • 고정 분할 : 페이징
    • 가변 분할 : 세그먼테이션

연속 방식은 프로그램 전체가 주소 공간에 연속적으로 할당되는 방식으로, 그 중 고정 분할은 고정된 크기, 개수의 파티션으로 주기억장치를 구분합니다. 또한 동적 분할은 프로세스가 요구한 크기만큼 메모리만을 할당합니다.

반면에 불연속 방식은 프로그램 일부가 서로 다른 주소 공간에 나누어져 할당되는 방식으로, 페이징 방식은 고정 크기로 공간을 나누고, 세그먼테이션은 가변 크기로 공간을 나눕니다.
이 불연속 방식은 연속적이지 않기에 각 조각들이 실제 메모리의 어떤 위치에 있는지 알아야하기에 페이지/세그먼트 테이블이 필요합니다.


참고

https://charles098.tistory.com/117
https://velog.io/@ouk/DMADirect-Memory-Access%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EC%96%B4%EB%96%A4-%EC%97%AD%ED%95%A0%EC%9D%84-%ED%95%98%EB%82%98%EC%9A%94
https://hoons-dev.tistory.com/95

profile
몸은 커졌어도, 머리는 그대로... 하지만 불가능을 모르는 명탐정 현아! 진실은 언제나 하나!

0개의 댓글