본문 바로가기
컴퓨터 공학·과학 이론/운영체제(Operating System)

[운영체제] 3장 프로세스 - 연습문제 해답

by 연구자 공학코드 2022. 6. 6.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

본 글의 해답은 저자가 홈페이지에서 제공하는 해답 위주로 적었고 내용 보충이 필요하다고 생각한 경우 내가 생각하는 답을 추가하였다.

 

1. 그림 3.30에 표시된 프로그램을 사용하여 LINE A에서 출력되는 내용을 설명하라.

자식이 값 복사본을 업데이트하므로 결과는 여전히 5입니다. 컨트롤이 부모에게 반환되면 그 값은 5로 유지됩니다.

 

2. 최초의 부모 프로세스를 포함하여 그림 3.31에 표시된 프로그램에 의해 몇 개의 프로세스가 생성되는가?

8개

 

프로세스 생성 순서도

 

3. Apple 모바일 iOS 운영체제의 원래 버전은 병행 처리 기법을 제공하지 않았다. 병행 처리로 인해 운영체제에 추가되는 세 가지 주요 문제에 대해 논의하라.

CPU 스케줄러는 서로 다른 동시 프로세스를 인식해야 하며 동시 프로세스를 스케줄링하는 적절한 알고리즘을 선택해야 합니다.

동시 프로세스는 서로 통신해야 할 수 있으므로 운영 체제는 프로세스 간 통신을 제공하기 위한 하나 이상의 방법을 개발해야 합니다.

모바일 장치는 메모리가 제한된 경우가 많기 때문에 메모리를 제대로 관리하지 않는 프로세스는 다른 동시 프로세스에 전반적으로 부정적인 영향을 미칩니다. 따라서 운영 체제는 여러 동시 프로세스를 지원하기 위해 메모리를 관리해야 합니다.

 

4. 일부 컴퓨터 시스템은 다수의 레지스터 집합을 제공한다. 새 문맥이 레지스터 집합 중 하나에 이미 적재된 경우 문맥 교환 시 어떤 일이 발생하는지 설명하라. 새 문맥이 레지스터 집합 아닌 메모리에 있고 모든 레지스터 집합이 사용 중이면 어떤 일이 발생하는가?

CPU 현재 레지스터 집합 포인터는 새로운 컨텍스트를 포함하는 집합을 가리키도록 변경되며, 이는 시간이 거의 걸리지 않습니다. 

컨텍스트가 메모리에 있는 경우 레지스터 세트의 컨텍스트 중 하나를 선택하여 메모리로 이동하고 새 문맥을 메모리에서 집합으로 적재해야 합니다. 이 프로세스는 대체 희생자를 선택하는 방법에 따라 레지스터 세트가 하나인 시스템보다 시간이 조금 더 걸립니다.

 

5. 프로세스가 fork() 연산을 사용하여 새로운 프로세스를 생성할 때 다음 중 어떤 상태가 부모 프로세스와 자식 프로세스 간에 공유 되는가?

 A. 스택

 B. 힙

 C. 공유 메모리 세그먼트

부모 프로세스와 새로 분기된 자식 프로세스 간에 공유 메모리 세그먼트만 공유됩니다. 스택과 힙의 복사본은 새로 생성된 프로세스에 대해 만들어집니다.

 

6. RPC 메커니즘과 관련하여 "정확히 한 번" 시맨틱을 고려하자. 네트워크 문제로 인해 클라이언트로 전송된 ACK 메시지가 손실된 경우에도 이 시맨틱을 구현한 알고리즘이 올바르게 실행되는가? 메시지 전달 순서를 설명하고 "정확한 한 번"이 여전히 보존되는지 여부를 논의하라.

"정확히 한 번" 의미는 원격 프로시저가 정확히 한 번만 실행되도록 합니다. 이를 보장하기 위한 일반 알고리즘은 타임스탬프(또는 서버가 중복 메시지를 구별할 수 있도록 하는 다른 증분 카운터)와 결합된 승인(ACK) 체계를 결합합니다.

일반적인 전략은 클라이언트가 타임스탬프와 함께 RPC를 서버로 보내는 것입니다. 클라이언트는 타임아웃 시계도 시작합니다. 그런 다음 클라이언트는 (1) 원격 프로시저가 수행되었음을 나타내는 서버로부터 ACK를 수신하거나 (2) 시간 초과되는 두 가지 경우 중 하나를 기다립니다. 클라이언트가 시간 초과되면 서버가 원격 프로시저를 수행할 수 없다고 가정하므로 클라이언트는 RPC를 두 번째로 호출하여 이후 타임스탬프를 보냅니다. 클라이언트는 두 가지 이유 중 하나로 ACK를 수신하지 못할 수 있습니다. (1) 원래 RPC가 서버에서 수신되지 않았거나 (2) RPC가 서버에서 올바르게 수신되고 수행되었지만 ACK가 손실되었습니다. 상황 (1)에서 ACK를 사용하면 서버가 궁극적으로 RPC를 수신하고 수행할 수 있습니다. 상황 (2)에서는 서버가 중복 RPC를 수신하고 RPC를 두 번 수행하지 않도록 타임스탬프를 사용하여 중복으로 식별합니다. 서버는 RPC가 수행되었음을 클라이언트에 알리기 위해 두 번째 ACK를 클라이언트에 다시 보내야 한다는 점에 유의하는 것이 중요합니다.

 

7. 분산 시스템이 서버 장애에 취약하다고 가정하자. RPC 실행을 위한 "정확히 한 번" 시맨틱을 보장하기 위해 어떤 기법이 필요한가?

서버는 수신된 RPC 작업, 성공적으로 수행되었는지 여부 및 작업과 관련된 결과에 대한 정보의 안정적인 저장소(예: 디스크 로그)를 추적해야 합니다. 서버 충돌이 발생하고 RPC 메시지가 수신되면 서버는 RPC가 이전에 수행되었는지 여부를 확인할 수 있으므로 RPC 실행에 대해 "정확히 한 번" 의미 체계를 보장할 수 있습니다.

 

728x90
반응형

댓글