Skip to content

Commit

Permalink
add old post '운영체제-3장-프로세스-연습문제-풀이'
Browse files Browse the repository at this point in the history
  • Loading branch information
dev-jonghoonpark committed Sep 30, 2023
1 parent 547b523 commit 63c2081
Show file tree
Hide file tree
Showing 3 changed files with 114 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
---
layout: post
title: 운영체제 3장 프로세스 - 연습문제 풀이
categories: [스터디-운영체제]
tags: [운영체제, Operating System, 공룡책, 연습문제, 프로세스]
date: 2023-05-09 12:00:00 +0900
---

공룡책 (Operating System Concepts) 10th

개인적인 생각이므로 틀린 답변일 수 있습니다.

---

## 3.1 아래 표시된 프로그램을 이용하여 LINE A에서 출력되는 내용을 설명하라.

```c
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int value = 5;

int main()
{
pid_t pid;

pid = fork();

if (pid == 0) { /* child process */
value += 15;
return 0;
}
else if (pid > 0) { /* parent process */
wait(NULL);
printf("PARENT: value = %d", value); /* LINE A */
return 0;
}
}
```

> 20
## 3.2 최초의 부모 프로세스를 포함하여 아래에 표시된 프로그램에 의해 몇 개의 프로세스가 생성되는가?

```c
#include <stdio.h>
#include <unistd.h>

int main()
{
/* fork a child process */
fork();

/* fork another child process */
fork();

/* and fork another */
fork();

return 0;
}
```

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

> - 프로세스 스케쥴러 (concurrent 하게 처리)
> - 프로세스간 통신
> - 공유 리소스 동시 접근 방지
## 3.4 일부 컴퓨터 시스템은 다수의 레지스터 집합을 사용한다. 새 문맥이 레지스터 집합 중 하나에 이미 적재된 경우 문맥 교환 시 어떤 일이 발생하는지 설명하라. 새 문맥이 레지스터 집합이 아닌 메모리에 있고 모든 레지스터 집합이 사용중이면 어떤 일이 발생하는가?

**( \* 문맥 : context )**

> 새 문맥이 이미 적재되어 있는경우, PC 레지스터 값만 변경하여 새 문맥을 가리키게 함.
> 모든 레지스터 집합이 사용중이고 새 문맥이 메모리에 있다면, 현재 있는 문맥 중 하나를 메모리로 보내고 필요한 문맥을 레지스터로 로드.
## 3.5 프로세스가 fork() 연산을 사용하여 새로운 프로세스를 생성할 때 다음 중 어떤 상태가 부모 프로세스와 자식 프로세스 간에 공유되는가?

**A. 스택**
**B. 힙**
**C. 공유 메모리 세그먼트**

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

> 서버로 부터 ACK가 오지 않았다면 클라이언트는 다시 전송해야 한다.
>
> ACK는 요청이 수신되었고 실행이 되었다는 의미이다.
> ACK가 손상 되었다는 것은. 일단 수신되었고 실행도 되었다는 뜻이다.
>
> 따라서 다시 전송한다면 server 입장에서는 이미 처리한 메시지가 다시 온 것이므로 요청은 다시 처리하지 않는다.
>
> 서버는 이미 처리한 요청이라는 메시지를 반환해줘야 한다.
## 3.7 분산 시스템이 서버 장애에 취약하다고 가정하자. RPC 실행을 위한 “정확히 한 번” 시맨틱을 보장하기 위해 어떤 기법이 필요한가?

> 서버 장애 발생 전과 후의 요청에 대해서 이미 실행한 요청인지 아닌지 체크할 수 있는 방법이 필요하다. (로그 등)
9 changes: 9 additions & 0 deletions _redirects/operating-system-concepts-3-process.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!DOCTYPE html>
<html>
<head>
<meta
http-equiv="refresh"
content="0; url=/2023/05/09/운영체제-3장-프로세스-연습문제-풀이"
/>
</head>
</html>
4 changes: 4 additions & 0 deletions category/스터디-운영체제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
layout: category
title: 스터디-운영체제
---

0 comments on commit 63c2081

Please sign in to comment.