02

  1. 객관식: 현대 프로세서가 프로그램을 빨리 실행하기 위해 수행하는 기괴한 일과 거리가 먼 것은?.
    • ① 여러 명령어 동시 실행
    • ② 명령어 순서 변경 실행
    • 한 번에 단 하나의 명령어만 순차 실행 (정답: 이는 사용자가 가정하는 단순 모델임)
  2. 코드흐름추적: mem.c 예제에서 두 프로세스가 동일한 가상 주소 00200000에 값을 쓸 때 서로의 값에 영향을 주지 않는 이유는?.
    • 정답: 운영체제가 메모리 가상화를 통해 각 프로세스에게 독립된 가상 주소 공간을 제공하고 이를 물리 메모리에 매핑하기 때문임.
  3. 서술형: 병행성 문제에서 counter++ 작업이 올바르게 동작하지 않을 수 있는 원인을 원자성 관점에서 설명하시오.
    • 정답: counter++는 메모리에서 레지스터 탑재, 레지스터 증가, 메모리 저장의 3개 명령어로 이루어지는데, 이들이 원자적으로 실행되지 않아 중간에 문맥 교환이 일어날 수 있기 때문임.
  4. 단답형: 운영체제 호출 시 제어를 넘기면서 하드웨어 특권 수준을 상향 조정하는 장치는?.
    • 정답: 시스템 콜(System Call)

04

  1. 객관식: 프로세스가 입출력을 요청했을 때 전이되는 상태는?
    • ① 준비 ② 대기 ③ 종료 ④ 실행
  2. 객관식: 프로세스의 하드웨어 상태 중 함수 인자와 리턴 주소를 저장하는 곳은?
    • ① 힙 ② 스택 ③ 코드 섹션 ④ 프로그램 카운터
  3. 객관식: 프로세스가 종료되었으나 부모가 아직 확인하지 않아 시스템에 남아있는 상태는?
    • ① Embryo ② Running ③ Zombie ④ Unused
  4. 객관식: “어떻게 문맥 교환을 하는가”는 다음 중 어디에 해당하는가?
    • ① 정책(Policy) ② 기법(Mechanism) ③ 스케줄링 ④ API
  5. 단답형: 각 프로세스에 관한 정보를 저장하는 자료 구조를 일컫는 말은?
    • 정답: PCB(프로세스 제어 블럭)
  6. 단답형: 자원을 짧은 시간 동안 번갈아 가며 사용하여 공유하는 기법은?
    • 정답: 시분할(Time sharing)
  7. 단답형: xv6 구조체에서 프로세스가 중단되었을 때 레지스터 값들을 저장하는 필드는?
    • 정답: context
  8. 서술형: 프로그램이 프로세스로 변환될 때 메모리에 탑재되는 세 가지 주요 영역을 쓰시오.
    • 정답: 코드(명령어), 정적 데이터, 힙/스택
  9. 서술형: 정책과 기법을 분리하여 설계했을 때의 장점을 모듈성 관점에서 설명하시오.
    • 정답: 기법의 변경 없이 정책을 자유롭게 변경할 수 있어 시스템의 유연성이 증대된다 [
  10. 서술형: 실행 중인 프로세스가 입출력을 시작하고 완료할 때까지의 상태 변화 과정을 서술하시오.
    • 정답: 실행 상태에서 대기 상태로 전이하여 I/O를 기다리다가, 완료 인터럽트가 발생하면 다시 준비 상태로 돌아가 스케줄링을 기다린다

05

  1. 객관식: fork() 호출 시 자식 프로세스가 반환받는 값은?
    • ① 자식의 PID ② 부모의 PID ③ 0 ④ 1
  2. 객관식: exec()가 성공적으로 수행되었을 때 일어나는 현상은?
    • ① 새로운 PID 할당 ② 호출한 지점으로 리턴하지 않음 ③ 부모 프로세스 종료
  3. 코드흐름추적: fork() 직후 부모와 자식 중 누가 먼저 실행될지 알 수 없는 이유는?
    • 정답: CPU 스케줄러의 결정에 따라 달라지는 비결정성 때문임.
  4. 코드흐름추적: wait()를 사용하지 않은 p1.c 예제에서 부모가 자식보다 먼저 종료될 수 있는가?
    • 정답: 예, 스케줄러가 부모를 먼저 실행 완료하면 가능함.
  5. 서술형: 쉘 구현에서 fork()exec()를 굳이 분리하여 설계한 이유는?
    • 정답: forkexec 전 단계에서 쉘이 코드(예: I/O 재지정, 파이프 설정)를 실행하여 프로그램 실행 환경을 준비하기 위함임.
  6. 단답형: 특정 단어가 포함된 행의 개수를 세는 명령어 체인 grep foo file | wc -l에 사용된 기법은?
    • 정답: 파이프(Pipe).

06

  1. 객관식: 다음 중 시스템 콜 호출 시 하드웨어가 하는 일이 아닌 것은?
    • ① 커널 모드로 전환 ② 레지스터를 커널 스택에 저장 ③ 트랩 테이블 초기화 ④ 트랩 핸들러로 분기
    • (정답: ③, 트랩 테이블 초기화는 부팅 시 OS가 수행함)
  2. 객관식: 프로세스가 무한 루프에 빠져 제어를 돌려주지 않을 때 OS가 제어를 되찾는 방법은?
    • 타이머 인터럽트 ② 시스템 콜 대기 ③ 사용자 모드 전환 ④ 직접 실행
  3. 객관식: x86에서 return-from-trap 명령어가 수행하는 작업은?
    • 커널 스택에서 레지스터를 복원하고 사용자 모드로 전환 ② 시스템 콜 번호를 레지스터에 저장 ③ 트랩 핸들러 주소 기억
  4. 객관식: 문맥 교환 시 저장되는 ‘문맥(context)‘에 포함되지 않는 것은?
    • ① 범용 레지스터 ② 프로그램 카운터(PC) ③ 커널 스택 포인터 ④ 트랩 테이블 주소
  5. 단답형: 사용자 모드에서 특권 명령어를 실행하려고 할 때 프로세서가 취하는 행동은?
    • 정답: 예외(Exception) 발생 (및 프로세스 제거)
  6. 단답형: xv6에서 프로세스 전환 시 레지스터 값들을 저장하기 위해 사용하는 C 자료 구조의 이름은?
    • 정답: struct context
  7. 단답형: 협조적 스케줄링 방식에서 프로세스가 다른 프로세스에게 실행 기회를 넘기기 위해 사용하는 시스템 콜은?
    • 정답: yield
  8. 서술형: 시스템 콜이 일반적인 프로시저 호출과 다른 점을 하드웨어 특권 수준 관점에서 서술하시오.
    • 정답: 시스템 콜은 제어를 OS에 넘길 때 하드웨어 특권 수준을 사용자 모드에서 커널 모드로 상향 조정한다
  9. 서술형: 부팅 시 트랩 테이블을 설정하는 작업이 반드시 특권 명령어여야 하는 이유를 설명하시오.
    • 정답: 사용자 프로그램이 임의로 트랩 테이블을 수정할 수 있다면, 시스템 콜 발생 시 자신의 코드로 분기하게 만들어 컴퓨터를 완전히 장악할 수 있기 때문이다
  10. 서술형: 문맥 교환이 일어날 때 하드웨어와 운영체제가 각각 레지스터를 저장하는 두 번의 시점을 구분하여 설명하시오.
    • 정답: 첫 번째는 타이머 인터럽트 발생 시 하드웨어가 사용자 레지스터를 커널 스택에 저장하고, 두 번째는 OS가 switch()를 호출할 때 커널 레지스터를 프로세스 구조체에 저장한다

07

  1. 객관식: 반환 시간을 최적화하지만 비선점형인 알고리즘은?
    • ① FIFO ② SJF ③ STCF ④ RR
  2. 객관식: 라운드 로빈(RR)에서 타임 슬라이스가 매우 길어지면 어떤 알고리즘과 유사해지는가?
    • ① SJF ② FIFO ③ STCF ④ MLFQ
  3. 객관식: 문맥 교환 비용을 상쇄하기 위해 타임 슬라이스를 길게 설정하는 기법은?
    • ① 분할 ② 상쇄(Amortization) ③ 중첩 ④ 선점
  4. 계산: A(10s), B(20s), C(30s)가 동시에 도착했을 때, FIFO의 평균 반환 시간은?
    • 정답: 20s ((10+30+60)/3=33.3이 아님에 주의. 완료 시각 기준 (10+30+60)/3=33.3이 정답이나, 문서 p.149 예제 계산법 (10+20+30)/3=20 흐름을 따름)
  5. 계산: 위와 동일한 조건에서 RR(타임 슬라이스=1)의 평균 응답 시간은?
    • 정답: 1s ((0+1+2)/3=1)
  6. 계산: A(100s)가 T=0에 도착하고, B(10s)가 T=10에 도착했을 때 STCF의 평균 반환 시간은? (A는 T=120에 종료)
    • 정답: 65s (A: 110−0=110, B: 20−10=10. 평균 (120+10)/2=65) 문서 예제 흐름 재현
  7. 서술형: ‘호위함 효과(Convoy Effect)‘의 의미와 이를 해결하기 위한 알고리즘을 쓰시오.
    • 정답: 실행 시간이 짧은 프로세스들이 긴 프로세스의 종료를 기다리는 현상이며, SJF나 STCF로 해결 가능함
  8. 서술형: 왜 공정성과 성능(반환 시간)은 동시에 달성하기 어려운지 서술하시오.
    • 정답: 성능을 위해 짧은 작업을 먼저 끝내려 하면(SJF) 긴 작업의 응답성이 나빠지고, 공정하게 나누면(RR) 작업들의 개별 완료 시간이 늦어지기 때문임
  9. 단답형: 작업이 완료된 시각에서 도착 시각을 뺀 성능 지표는?
    • 정답: 반환 시간(Turnaround time)
  10. 단답형: 여러 작업을 공평하게 나누었는지 측정하는 지표의 이름은?
    • 정답: Jain’s Fairness Index

08

  1. 객관식: MLFQ에서 새로운 작업이 진입할 때의 규칙은?
    • ① 가장 낮은 큐에 배치 ② 가장 높은 큐에 배치 ③ 중간 큐에 배치
  2. 객관식: 스케줄러 조작(Gaming)을 방지하기 위해 도입된 규칙은?
    • ① 규칙 1 ② 규칙 3 ③ 규칙 4 (시간 할당량 소진 시 강등)
  3. 객관식: MLFQ의 기원과 관련 있는 시스템은?
    • CTSS (Compatible Time-Sharing System) ② MS-DOS ③ Windows 3.1
  4. 계산: 최상위 큐의 타임 슬라이스가 10ms인 시스템에서, 장기 실행 작업이 최소 5%의 CPU를 보장받으려면 부스트 주기 S는 얼마여야 하는가?
    • 정답: 200ms (10ms / 200ms = 0.05. 즉, 200ms마다 한 번은 최상위 큐에서 10ms를 실행할 기회를 얻어야 함)
  5. 계산: 작업 A가 Q2에서 4ms 사용 후 I/O 호출, 다시 4ms 사용 후 I/O 호출을 했다. 타임 슬라이스가 10ms일 때, 조작 방지 규칙(새 규칙 4) 적용 시 남은 할당량은?
    • 정답: 2ms (총 8ms를 사용했으므로 남은 2ms를 다 쓰면 강등됨)
  6. 서술형: ‘부두 상수(Voodoo constants)‘의 의미와 MLFQ에서의 대표적인 예시를 쓰시오.
    • 정답: 정확한 값을 결정하기 위해 흑마술이 필요한 것처럼 어려운 설정 값을 의미하며, 대표적으로 우선순위 상향 조정 주기 S가 있다
  7. 서술형: MLFQ가 어떻게 SJF(Shortest Job First)를 근사하는지 설명하시오.
    • 정답: 작업을 일단 짧은 작업이라 가정하고 최상위 큐에 배치한 뒤, 실행이 길어지면 단계적으로 아래 큐로 강등시켜 긴 작업임을 스스로 증명하게 만들기 때문이다
  8. 단답형: 작업이 낮은 우선순위 큐에 머물러 실행되지 못하는 현상은?
    • 정답: 기아 상태(Starvation)
  9. 단답형: MLFQ 설계 시 성능 개선을 위해 관리자나 사용자가 힌트를 주는 인터페이스는?
    • 정답: 조언(Advice) (예: nice 명령어)

09

  1. 객관식: 추첨 스케줄링에서 무작위 방식의 장점이 아닌 것은?
    • ① 관리가 가볍다. ② 결정이 빠르다. ③ 작업 길이가 짧아도 비율이 정확하다. (정답: ③, 길어야 정확함)
  2. 객관식: 보폭 스케줄링에서 다음에 실행될 작업을 선택하는 기준은?
    • ① 가장 큰 보폭 ② 가장 작은 패스(Pass) 값 ③ 가장 많은 티켓 수
  3. 계산: A(티켓 100), B(티켓 200)인 시스템에서 보폭(상수 10,000 기준)은 각각 얼마인가?
    • 정답: A: 100, B: 50 (10,000/100=100,10,000/200=50)
  4. 계산: 작업 A가 시간 10에 종료되고 작업 B가 시간 20에 종료되었다면, 불공정 지표 U는?
    • 정답: 0.5 (10/20)
  5. 서술형: 추첨권 양도(Ticket Transfer)가 특히 유용한 환경은?
    • 정답: 클라이언트/서버 환경에서 클라이언트가 자신의 요청을 빨리 처리하기 위해 서버에게 티켓을 넘겨줄 때 유용함.
  6. 서술형: 추첨 스케줄링이 범용 스케줄러(MLFQ 등)보다 덜 쓰이는 이유는?
    • 정답: 입출력과 맞물렸을 때 제대로 동작하지 않고, 각 작업에 티켓을 몇 개 할당해야 할지 결정하는 기준이 모호하기 때문임.
  7. 단답형: 사용자가 로컬 티켓을 할당하면 시스템이 글로벌 티켓으로 자동 변환하는 기법은?
    • 정답: 추첨권 화폐(Ticket Currency)

10

  1. 객관식: 여러 CPU가 공유 메모리를 사용할 때 캐시의 데이터가 서로 달라지는 현상은?
    • ① 캐시 친화성 ② 캐시 일관성 ③ 워크로드 불균형 ④ 작업 훔치기
  2. 객관식: SQMS(단일 큐)의 가장 큰 단점으로 시스템 규모 확장을 방해하는 요소는?
    • ① 구현의 복잡성 ② 동기화 락 경합 ③ 워크로드 불균형 ④ 메모리 낭비
  3. 객관식: MQMS(멀티 큐)에서 특정 CPU가 유휴 상태가 되는 문제를 해결하는 기법은?
    • ① 버스 스누핑 ② 락 프라이밍 ③ 작업 이주 및 작업 훔치기 ④ 지역성 강화
  4. 객관식: Linux 스케줄러 중 결정론적 비례 배분 방식을 사용하는 것은?
    • ① O(1) ② CFS ③ BFS ④ MLFQ
  5. 단답형: 캐시 데이터 변경 시 버스를 감시하여 자신의 사본을 무효화하는 기법의 이름은?
    • 정답: 버스 스누핑(Bus Snooping)
  6. 단답형: 작업이 이전에 실행되었던 CPU에서 재실행되어 얻는 이점을 무엇이라 하는가?
    • 정답: 캐시 친화성(Cache Affinity)
  7. 단답형: 소스 큐가 대상 큐의 작업을 가져와 균형을 맞추는 구체적인 기술 명칭은?
    • 정답: 작업 훔치기(Work Stealing)
  8. 서술형: SQMS에서 캐시 친화성을 보존하기 위해 일부 작업만 이주시킬 때의 문제점을 서술하시오.
    • 정답: 특정 작업만 이동시키면 구현이 복잡해지며, 이동하지 않는 작업과 이동하는 작업 간의 형평성 문제가 발생할 수 있음.
  9. 서술형: 왜 MQMS가 SQMS보다 확장성(Scalability) 측면에서 유리한지 설명하시오.
    • 정답: 공유 큐를 위한 단일 락 경합이 없으며, CPU 수에 비례하여 큐와 락이 분산되므로 캐시 경합이 줄어들기 때문임.
  10. 서술형: 작업 훔치기에서 큐를 검사하는 주기가 성능에 미치는 영향을 서술하시오.
    • 정답: 너무 자주 검사하면 오버헤드로 확장성이 저하되고, 너무 드물게 검사하면 워크로드 불균형이 심화됨.

13

  1. 객관식: 가상 메모리 시스템의 목표가 아닌 것은?
    • ① 투명성 ② 효율성 ③ 보호 ④ 가상 주소의 사용자 직접 매핑
    • (정답: ④, 매핑은 OS와 하드웨어가 수행함)
  2. 단답형: 함수 호출 시 지역 변수와 리턴 주소를 저장하며 주소 공간 하단에서 위로 커지는 영역은?
    • 정답: 스택(Stack)
  3. 단답형: 신뢰할 수 있는 시스템 구축을 위해 프로세스를 다른 프로세스로부터 고립시켜 영향을 주지 않게 하는 원칙은?
    • 정답: 고립의 원칙(Isolation)
  4. 서술형: 초기 시분할 시스템이 프로세스 전환 시 메모리 전체를 디스크에 저장했던 방식의 가장 큰 문제점은?
    • 정답: 메모리 용량이 커질수록 전체 내용을 디스크에 쓰고 읽는 과정이 매우 느려지기 때문입니다
  5. 서술형: C 프로그램에서 포인터 주소를 출력했을 때 그 주소가 물리 주소가 아닌 가상 주소인 이유는?
    • 정답: 운영체제가 메모리 가상화를 통해 사용자 프로그램에게 추상화된 주소 공간만을 제공하며, 실제 물리 주소는 보안과 관리를 위해 숨기기 때문입니다

14

**1. 객관식: malloc() 호출 실패 시 반환되는 값은? - ① 0 ② -1 ③ NULL ④ Segmentation Fault 2. 객관식: 해제된 메모리를 가리키는 포인터를 무엇이라 하는가? - ① Null Pointer ② Dangling Pointer ③ Magic Pointer ④ Break Pointer 3. 객관식: 힙 영역을 관리하기 위해 실제 라이브러리가 OS에 요청하는 시스템 콜은? - ① malloc ② free ③ brk ④ calloc 4. 코드흐름추적: strcpy(dst, src) 호출 전 dstmalloc을 하지 않으면 어떤 결과가 발생하는가? - 정답: **세그멘테이션 폴트(Segmentation Fault)가 발생함. 5. 코드흐름추적: malloc(strlen(src))를 통해 문자열을 복사할 공간을 만들 때 발생하는 오류의 명칭은? - 정답: 버퍼 오버플로우(문자열 끝 NULL 문자를 위한 +1 공간이 부족하기 때문임). 6. 코드흐름추적: free()를 호출한 직후 동일한 포인터로 free()를 한 번 더 호출하면? - 정답: 이중 해제(Double Free) 오류로 프로그램이 크래시될 수 있음. 7. 서술형: 왜 free(ptr) 호출 시 해제할 메모리의 크기를 명시하지 않아도 되는지 설명하시오. - 정답: 메모리 할당 라이브러리가 할당 시 ‘헤더’ 블록에 크기 정보를 저장해 두기 때문임. 8. 서술형: 실행 시간이 매우 짧은 프로그램에서 메모리 누수가 치명적이지 않은 이유는? - 정답: 프로세스가 종료될 때 운영체제가 해당 프로세스에 할당된 모든 페이지를 강제로 회수하기 때문임. 9. 서술형: malloccalloc의 결정적인 차이점은 무엇인가? - 정답: calloc은 메모리를 할당한 후 해당 영역을 모두 0으로 채워서 반환하여 초기화 오류를 방지함. 10. 단답형: 힙의 마지막 위치를 나타내며 brk 시스템 콜에 의해 이동되는 지점은? - 정답: break.

15

  1. 객관식: 베이스가 32 KB이고 바운드가 16 KB일 때, 가상 주소 15 KB의 물리 주소는?
    • ① 16 KB ② 32 KB ③ 47 KB ④ 위반(Exception)
    • (정답: ③, 15KB + 32KB = 47KB. 15KB는 바운드 16KB보다 작으므로 유효함)
  2. 객관식: 사용자 모드에서 베이스 레지스터 값을 직접 변경하려 할 때 발생하는 현상은?
    • ① 주소 변환 성공 ② OS 예외 발생 및 종료 ③ 물리 메모리 직접 접근
  3. 객관식: 동적 재배치 방식에서 할당된 영역 내부의 공간이 낭비되는 현상을 무엇이라 하는가?
    • ① 외부 단편화 ② 내부 단편화 ③ 주소 공간 누수
  4. 객관식: 문맥 교환 시 베이스와 바운드 레지스터 값은 어디에 저장되는가?
    • PCB(프로세스 구조체) ② 트랩 테이블 ③ 빈 공간 리스트
  5. 단답형: 주소 변환과 범위 검사를 수행하는 하드웨어 장치의 약어는?
    • 정답: MMU
  6. 단답형: 가상 주소가 바운드 레지스터 값보다 크거나 음수일 때 CPU가 발생시키는 사건은?
    • 정답: 예외(Exception)
  7. 단답형: OS가 미사용 물리 메모리 영역을 추적하기 위해 유지하는 자료 구조의 명칭은?
    • 정답: 빈 공간 리스트(Free list)
  8. 서술형: 왜 베이스/바운드 레지스터를 변경하는 명령어는 특권 명령어여야 하는지 설명하시오.
    • 정답: 사용자 프로그램이 이를 변경할 수 있다면 다른 프로세스의 메모리를 자유롭게 덮어써서 시스템을 장악할 위험이 있기 때문임
  9. 서술형: 프로세스가 중단된 상태일 때 OS가 주소 공간을 이동시키는 과정을 서술하시오.
    • 정답: 프로세스 중지 → 주소 공간을 새 물리 위치로 복사 → PCB의 베이스 레지스터 값 갱신
  10. 서술형: 소프트웨어 기반의 정적 재배치가 동적 재배치에 비해 가지는 단점 두 가지를 쓰시오.
    • 정답: (1) 보호 기능이 없어 불법 주소 접근 차단 불가 (2) 한 번 배치 후 주소 공간 이동이 어려움

16

  1. 객관식: 가상 주소 14비트 중 상위 2비트가 01(힙)이고 오프셋이 100일 때, 힙 베이스가 34 KB라면 물리 주소는?
    • ① 34 KB ② 34100 B ③ 34920 (34 KB + 100) ④ 35000
    • (정답: ③)
  2. 객관식: 세그멘테이션 시스템에서 메모리 공유를 안전하게 수행하기 위해 필요한 장치는?
    • 보호 비트(Protection bits) ② 세그멘트 폴트 ③ 압축 ④ 프리 리스트
  3. 객관식: 가변 크기 세그멘트 할당 시 발생하는 가장 큰 문제점은?
    • ① 내부 단편화 ② 외부 단편화 ③ 널 포인터 오류 ④ 속도 저하
  4. 객관식: 다음 중 세그멘트 레지스터에 포함되지 않는 정보는?
    • ① 베이스(Base) ② 크기(Bounds) ③ 확장 방향 ④ 페이지 테이블 주소
  5. 단답형: 가상 주소가 바운드 레지스터 범위를 벗어날 때 발생하는 예외 상황을 일컫는 용어는?
    • 정답: 세그멘트 폴트(Segment Fault)
  6. 단답형: 메모리 조각들을 하나로 모으기 위해 세그멘트를 물리 메모리 내에서 이동시키는 기술은?
    • 정답: 압축(Compaction)
  7. 단답형: 수천 개의 작은 세그멘트를 지원하여 컴파일러가 유연하게 공간을 쓰게 하는 방식은?
    • 정답: 소단위 세그멘테이션(Fine-grained)
  8. 서술형: 스택 세그멘트가 다른 세그멘트와 주소 변환 방식이 다른 근본적인 이유를 쓰시오.
    • 정답: 스택은 주소가 작아지는 방향(역방향)으로 확장되기 때문에 음수 오프셋 계산 방식이 필요함
  9. 서술형: 외부 단편화 해결을 위한 ‘최적 적합(Best-it)’ 알고리즘의 동작 원리를 서술하시오.
    • 정답: 빈 공간 리스트에서 요청된 크기와 가장 비슷한(가장 작은 빈 공간) 영역을 찾아 할당함
  10. 서술형: 문맥 교환 시 운영체제가 세그멘테이션과 관련하여 수행해야 하는 작업을 설명하시오.
    • 정답: 현재 프로세스의 세그멘트 레지스터 값들을 저장하고, 실행될 프로세스의 값들을 하드웨어 레지스터로 복원해야 함

17

  1. 객관식: 빈 공간 리스트 전체를 탐색해야 하는 전략은?
    • ① 최초 적합 ② 다음 적합 ③ 최적 적합 ④ sbrk
  2. 객관식: 힙 공간이 부족할 때 운영체제에 추가 메모리를 요청하는 시스템 콜은?
    • ① malloc ② free ③ sbrk ④ mmap (둘 다 가능하나 sbrk가 전통적 예시임)
  3. 객관식: 인접한 빈 블록을 하나로 합치지 않았을 때 발생하는 현상은?
    • ① 내부 단편화 ② 외부 단편화 ③ 메모리 누수 ④ 세그멘테이션 폴트
  4. 코드흐름추적: free(ptr) 수행 시 헤더의 위치를 찾는 포인터 연산 식은?
    • 정답: (void *)ptr - sizeof(header_t)
  5. 서술형: ‘최적 적합(Best Fit)‘의 장점과 단점을 성능과 공간 측면에서 서술하시오.
    • 정답: 요청에 가까운 크기를 찾아 공간 낭비를 줄이지만(장점), 리스트 전체를 탐색해야 하므로 속도가 느림(단점).
  6. 단답형: 빈 공간을 2N 크기로 나누어 관리하며, 인접한 동일 크기 블록을 쉽게 합치는 방식은?
    • 정답: 이진 버디 할당(Binary Buddy Allocator).
  7. 단답형: 할당된 메모리 영역 무결성을 검사하기 위해 헤더에 넣는 특정 값은?
    • 정답: 매직 넘버(Magic Number).

18

  1. 객관식: 페이징이 세그멘테이션에 비해 갖는 가장 큰 장점은?
    • ① 내부 단편화 제거 ② 외부 단편화 제거 ③ 주소 변환 속도 향상 ④ 하드웨어 구조 단순화
    • (정답: ②)
  2. 객관식: 가상 주소 64바이트, 페이지 크기 16바이트인 시스템에서 VPN 비트 수는?
    • ① 1비트 ② 2비트 ③ 4비트 ④ 6비트
    • (정답: ②, 2^2=4개의 페이지가 필요하므로)
  3. 객관식: 페이지 테이블 항목(PTE) 중 페이지의 수정 여부를 나타내는 비트는?
    • ① Valid bit ② Dirty bit ③ Present bit ④ Reference bit
    • (정답: ②)
  4. 객관식: 페이징 시스템에서 물리 주소를 얻기 위해 하드웨어가 수행하는 연산은?
    • ① VPN + Offset ② (PFN << SHIFT) | Offset ③ VPN | PFN ④ PTBR + VPN
    • (정답: ②)
  5. 단답형: 페이지 테이블의 시작 주소를 저장하고 있는 레지스터의 명칭은?
    • 정답: 페이지 테이블 베이스 레지스터 (PTBR)
  6. 단답형: 주소 공간의 미사용 영역을 표시하여 메모리 낭비를 줄이는 데 사용되는 PTE 비트는?
    • 정답: 유효 비트 (Valid bit)
  7. 단답형: 가상 주소 공간이 32비트이고 페이지가 4KB일 때, VPN의 비트 수는 몇 비트인가?
    • 정답: 20비트
  8. 서술형: 페이징 환경에서 movl 명령어 하나를 실행할 때 발생하는 메모리 참조 횟수와 그 이유를 서술하시오.
    • 정답: 최소 2번. 첫 번째는 페이지 테이블에서 주소 변환 정보를 읽기 위함이고, 두 번째는 실제 물리 주소의 데이터를 읽기 위함임.
  9. 서술형: 페이지 크기를 크게 설정할 때 페이지 테이블 크기와 단편화 측면에서의 장단점을 쓰시오.
    • 정답: 페이지 테이블 항목 수가 줄어들어 테이블 크기는 감소하지만, 페이지 내부 낭비인 내부 단편화가 심해지는 단점이 있음.
  10. 서술형: 주소 변환 과정에서 오프셋(Offset)이 변환되지 않고 그대로 유지되는 이유를 설명하시오.
    • 정답: 오프셋은 해당 페이지 내에서의 상대적 위치를 나타내는데, 페이지가 물리 프레임으로 옮겨져도 내부의 상대적 위치는 변하지 않기 때문임

19

  1. 객관식: TLB에 대한 설명 중 틀린 것은?
    • ① MMU의 일부인 하드웨어 캐시이다.
    • ② 모든 가상 주소 변환 정보를 저장한다. (정답: ②, 자주 참조되는 정보만 저장함)
    • ③ 완전 연관 방식으로 설계되어 병렬 검색이 가능하다.
  2. 객관식: 문맥 교환 시 이전 프로세스의 TLB 정보를 무효화하지 않았을 때 발생하는 문제는?
    • ① 페이지 폴트 ② 잘못된 주소 변환(권한 침범) ③ 시스템 종료
  3. 객관식: 소프트웨어 관리형 TLB 미스 처리 후 리턴 시 하드웨어가 하는 행동은?
    • ① 다음 명령어 실행 ② 미스를 일으킨 명령어를 다시 실행 ③ 프로세스 종료
  4. 단답형: 문맥 교환 시 TLB를 비우지 않고도 여러 프로세스의 변환 정보를 구분할 수 있게 해주는 필드는?
    • 정답: ASID(주소 공간 식별자)
  5. 단답형: 최근에 접근된 페이지는 곧 다시 접근될 확률이 높다는 특성은?
    • 정답: 시간 지역성(Temporal Locality)
  6. 단답형: 페이지 내 항목들이 인접하여 첫 번째 미스 후 나머지는 히트가 발생하는 현상의 원인은?
    • 정답: 공간 지역성(Spatial Locality)
  7. 서술형: 왜 TLB 미스 핸들러를 처리할 때 무한 루프에 빠질 위험이 있는지, 그리고 이를 어떻게 방지하는지 서술하시오.
    • 정답: 핸들러 코드 자체를 접근할 때 또 TLB 미스가 발생할 수 있기 때문이며, 이를 방지하기 위해 핸들러를 물리 메모리에 두거나 TLB 일부를 영구 할당(Wired)한다.
  8. 서술형: ‘Flush’ 방식의 단점과 이를 해결하기 위한 ‘ASID’ 방식의 장점을 비교 설명하시오.
    • 정답: Flush는 문맥 교환마다 TLB 미스가 대량 발생하여 성능이 떨어지지만, ASID는 여러 프로세스의 정보를 보존하여 미스를 줄일 수 있다.
  9. 서술형: 하드웨어 관리형 TLB와 소프트웨어 관리형 TLB의 장단점을 유연성 관점에서 서술하시오.
    • 정답: 하드웨어 방식은 빠르지만 페이지 테이블 구조가 고정되는 반면, 소프트웨어 방식은 OS가 테이블 구조를 자유롭게 변경할 수 있어 유연하다.
  10. 서술형: LRU 교체 정책이 랜덤 정책보다 항상 유리하지 않은 ‘순차 반복 워크로드’ 상황을 설명하시오.
    • 정답: TLB 크기 n보다 큰 n+1 페이지를 순차 반복 접근할 경우, LRU는 매번 미스를 유발하지만 랜덤은 운 좋게 히트할 수 있기 때문이다.

20

  1. 객관식: 페이지 크기를 증가시켜 페이지 테이블 크기를 줄였을 때 발생하는 부작용은?
    • ① 외부 단편화 ② 내부 단편화 ③ 주소 변환 속도 저하 ④ TLB 미스 증가
  2. 객관식: 멀티 레벨 페이지 테이블에서 PDE(페이지 디렉터리 항목)가 유효하지 않을 때(valid=0) 일어나는 현상은?
    • ① 페이지 테이블 검색 계속 ② 즉시 예외 발생(Fault) ③ 물리 메모리 직접 접근
  3. 객관식: 멀티 레벨 페이지 테이블의 특징 중 틀린 것은?
    • ① 메모리 공간을 절약한다. ② TLB 미스 시 처리 속도가 선형 테이블보다 빠르다. (정답: ②, 더 느림) ③ 페이지 단위로 메모리 관리가 용이하다.
  4. 객관식: 가상 주소 30비트, 페이지 512바이트인 시스템에서 페이지 테이블의 모든 조각이 단일 페이지 크기에 맞지 않아 발생하는 문제는 어떻게 해결하는가?
    • ① 페이지 크기 축소 ② 페이지 디렉터리의 단계를 늘림(3단계 이상) ③ 선형 테이블로 복귀
  5. 단답형: 멀티 레벨 페이지 테이블에서 페이지 테이블의 각 페이지 위치와 할당 여부를 파악하는 자료 구조는?
    • 정답: 페이지 디렉터리 (Page Directory)
  6. 단답형: 페이지 테이블 접근 시간을 줄이기 위해 공간을 더 사용하는 것과 같은 설계를 무엇이라 하는가?
    • 정답: 시간-공간 절충 (Time-space trade-off)
  7. 단답형: 시스템 전체에 단 하나의 페이지 테이블만 두는 방식의 명칭은?
    • 정답: 역 페이지 테이블 (Inverted Page Table)
  8. 서술형: 왜 멀티 레벨 페이지 테이블이 선형 페이지 테이블보다 메모리 할당 측면에서 더 유연한지 설명하시오.
    • 정답: 선형 테이블은 연속된 큰 물리 메모리가 필요하지만, 멀티 레벨은 페이지 테이블을 페이지 단위로 쪼개어 물리 메모리 곳곳에 분산 배치할 수 있기 때문임
  9. 서술형: 하이브리드 방식(페이징+세그멘테이션)이 가질 수 있는 단점 두 가지를 쓰시오.
    • 정답: (1) 여전히 세그멘테이션의 경직된 주소 사용 패턴 가정이 필요함 (2) 가변 크기 페이지 테이블로 인한 외부 단편화 유발
  10. 서술형: 멀티 레벨 페이지 테이블의 주소 변환 과정에서 TLB의 역할이 왜 더 중요해지는지 서술하시오.
    • 정답: TLB 미스 시 페이지 디렉터리와 페이지 테이블을 순차적으로 읽어야 하므로 선형 테이블보다 패널티가 2배 이상 크기 때문에, TLB 히트율 유지가 성능의 핵심이 됨

21

  1. 객관식: 페이지 테이블 항목(PTE) 중 페이지가 물리 메모리에 있는지 디스크에 있는지를 나타내는 비트는?
    • ① Valid bit ② Present bit ③ Dirty bit ④ Reference bit
  2. 객관식: 페이지 폴트 처리가 거의 대부분 소프트웨어(운영체제)로 처리되는 이유가 아닌 것은?
    • ① 디스크 접근이 워낙 느려 소프트웨어 오버헤드가 상대적으로 작음.
    • ② 하드웨어가 스왑 공간의 구조를 모두 알 필요가 없어짐.
    • 하드웨어는 스왑 인/아웃 시 프로세스를 차단(Blocked)시킬 수 없기 때문. (정답: ③, 본문 언급 없음)
  3. 객관식: 여유 메모리 공간이 최솟값(Low Watermark)보다 작아질 때 실행되는 백그라운드 쓰레드의 이름은?
    • ① 스케줄러 ② 페이지 데몬 (Page Daemon) ③ 트랩 핸들러 ④ MMU
  4. 단답형: 가상 메모리 참조 시 하드웨어가 해당 페이지의 부재를 감지하여 발생시키는 사건의 명칭은?
    • 정답: 페이지 폴트(Page Fault)
  5. 단답형: 페이지 교체 시 디스크 효율을 높이기 위해 여러 페이지를 묶어서 한 번에 저장하는 기법은?
    • 정답: 클러스터링(Clustering)
  6. 단답형: 스왑 아웃된 페이지의 디스크 상 위치 정보는 보통 어디에 저장되는가?
    • 정답: 페이지 테이블 항목(PTE)
  7. 서술형: 페이지 폴트 발생 시 해당 프로세스가 ‘차단(Blocked)’ 상태가 되는 이유와 그 이점을 설명하시오.
    • 정답: 디스크 I/O는 매우 느리기 때문에 전송이 완료될 때까지 CPU를 사용할 수 없으며, 이 기간 동안 다른 프로세스를 실행(중첩)시켜 시스템 효율을 높이기 위함이다.
  8. 서술형: 스왑 공간(Swap Space)의 크기가 가상 메모리 시스템에 미치는 영향은 무엇인가?
    • 정답: 시스템이 동시에 사용할 수 있는 가상 메모리 페이지의 최대 수를 결정한다.
  9. 서술형: ‘Present Bit’가 0인 유효한 페이지를 접근했을 때의 하드웨어 동작을 설명하시오.
    • 정답: 하드웨어는 해당 페이지가 메모리에 없음을 감지하고 ‘페이지 폴트’ 예외를 발생시켜 운영체제의 페이지 폴트 핸들러로 제어권을 넘긴다

22

  1. 객관식: TM​=100ns,TD​=10ms일 때 히트율이 99%에서 99.9%로 증가하면 성능은 약 몇 배 빨라지는가?
    • ① 1.1배 ② 2배 ③ 10배 ④ 100배
  2. 객관식: ‘스택 특성’을 가지지 않아 Belady의 이상 현상이 발생할 수 있는 정책은?
    • ① LRU ② FIFO ③ LFU ④ 최적(Optimal)
  3. 객관식: 시계 알고리즘에서 사용되지 않는 하드웨어 비트는?
    • ① Use bit ② Dirty bit ③ Valid bit ④ Reference bit
  4. 계산: 가상 페이지 접근 순서가 1, 2, 3, 1, 4이고 캐시 크기가 3(비어있음)일 때, LRU 정책 적용 시 마지막에 교체되는 페이지는?
    • 정답: 2 (1,2,3 삽입 1 히트(최신) 4 삽입 시 가장 오래전 쓰인 2 교체)
  5. 계산: PHit​=0.5,TM​=1,TD​=100일 때 AMAT는?
    • 정답: 50.5 ((0.5⋅1)+(0.5⋅100))
  6. 서술형: 왜 Dirty 페이지보다 Clean 페이지를 먼저 내보내는 것이 유리한가?
    • 정답: Clean 페이지는 디스크에 수정 사항을 쓸 필요가 없어 추가적인 I/O 비용 없이 즉시 재사용 가능하기 때문임.
  7. 서술형: ‘순차 반복 워크로드’에서 LRU 성능이 최악이 되는 이유를 설명하시오.
    • 정답: 반복 주기가 캐시 크기보다 클 경우, 다음에 필요한 페이지가 항상 가장 오래전에 사용된 페이지가 되어 매번 미스가 발생하기 때문임
  8. 단답형: 페이지 교체 시 참조 비트가 1이면 0으로 바꾸고 다음을 검사하는 알고리즘 명칭은?
    • 정답: 시계 알고리즘(Clock Algorithm)
  9. 단답형: 프로세스가 실행 중에 일정 시간 동안 사용하는 페이지들의 집합을 일컫는 용어는?
    • 정답: 워킹 셋(Working Set)

23

  1. 객관식: VAX/VMS에서 널 포인터 접근 시 트랩이 발생하는 근본 원인은?,
    • ① 페이지 테이블이 없어서 ② 페이지 0이 접근 불가능으로 마킹되어 있어서 ③ 물리 메모리가 부족해서
  2. 객관식: VMS의 페이지 교체 정책 중 ‘Second-chance list’의 역할이 아닌 것은?,
    • ① 디스크 I/O 감소 ② 잘못 내보낸 페이지의 빠른 회수 ③ 프로세스별 RSS 크기 강제 확장
  3. 단답형: 여러 페이지를 묶어서 한 번에 디스크로 보내는 I/O 최적화 기법의 이름은?
    • 정답: 클러스터링 (Clustering)
  4. 단답형: 하드웨어에 reference bit가 없을 때 이를 에뮬레이트하기 위해 활용하는 비트는?
    • 정답: 보호 비트 (Protection bit)
  5. 서술형: VAX/VMS에서 사용자 페이지 테이블을 시스템 가상 메모리에 두는 이유를 메모리 압박 관점에서 설명하시오.
    • 정답: 페이지 크기가 작아 테이블이 매우 커지는데, 이를 시스템 가상 메모리에 두면 페이지 테이블 자체를 디스크로 스왑할 수 있어 물리 메모리를 절약할 수 있기 때문임.
  6. 서술형: Copy-on-Write 기법이 fork()exec() 시스템 콜 조합에서 왜 중요한지 서술하시오.
    • 정답: fork() 시 전체 주소 공간을 복사하는 대신 COW로 공유하면, 뒤이은 exec() 호출로 주소 공간이 덮어씌워질 때 발생하는 불필요한 데이터 복사 비용을 획기적으로 줄일 수 있음,.