공부방/운영체제

프로세스와 프로세스 관리 서술형 풀어보기

EVO. 2023. 6. 3. 00:41

1. 운영체제는 프로그램을 적재하여 프로세스를 만든다. 3장 전체를 공부한 결과 프로세스를 만든다는 의미가 무엇인지 나름대로 긴 3줄로 설명하라.

 

2. 다음과 같이 동적 할당받은 후 반환하지 않고 종료하는 응용프로그램을 작성하였다.

int main() {
char* p = (char*)malloc(100000);
.... // free(p);
exit(0);
}

(1) 이 프로그램이 실행 중에 malloc(100000)를 호출하면 물리 메모리에 100000 바이트가 할 당되는가? 가상 주소 공간에서 할당되는가?

(2) 포인터 변수 p의 값이 30000이다. 30000 번지는 가상주소인가 물리 주소인가?

(3) 만일 malloc(100000)가 메모리가 부족하다고 NULL을 리턴한다면 그것은 물리 메모리 (RAM)가 부족한 것일까? 어떤 상황이 벌어진 것인지 명확히 설명하라.

(4) 이 프로그램이 100000바이트의 메모리를 반환하지 않고 종료하였다. 그러면 100000바이 트의 메모리를 다른 응용프로그램이 사용하지 못하게 되는 ‘메모리 누수’가 발생하는가?

 

3. 프로세스의 상태 중에서

(1) 프로세스가 파일을 읽는 코드를 실행하면 프로세스는 어떤 상태로 바뀌게 되는가?

(2) 프로세스의 상태 중에서 스케줄링 대상이 되는 상태는 무엇인가?

(3) 프로세스가 현재 CPU에 의해 실행중인 상태에서 Ready 상태로 바뀌는 것은 어떤 경우인 가?

 

4. 운영체제 커널이 만드는 것으로 프로세스의 정보를 저장하는 구조체를 PCB라고 부른다. 어떤 정보들이 저장되는지 간단히 설명하라.

 

5. 종료 코드와 exit(), wait() 시스템 호출에 관해

(1) 종료 코드란 무엇인가?

(2) 부모 프로세스가 wait() 시스템 호출을 해야 하는 이유는 무엇인가?

 

6. 프로세스가 종료할 때,

(1) exit() 시스템 호출이 반드시 실행되어야 하는 이유는 무엇인가?

(2) exit() 시스템 호출이 하는 작업을 설명하라

 

7. 좀비프로세스에 대해

(1) 좀비프로세스의 정의는 무엇인가?

(2) 좀비프로세스가 발생하는 원인은 무엇인가?

(3) 좀비프로세스는 시스템에 해를 끼치는가?

 

8. 탐구 3-2를 참고하여 이 프로그램을 실행하면 현재 프로세스의 번호와 부모 프로세스의 번호가 출력된다. 현재 프로세스는 pinfo인데, pinfo의 부모프로세스는 누구인가? 이것에 답을 하기 위해 탐구 3-2를 작성하여 실행해보고, 리눅스에서 ps –eal 명령를 실행하 여 pinfo의 부모가 누구인지 찾아서 보여라. 프로그램의 실행 결과와 ps –eal 명령의 실행 결과를 첨부하라

 

9. 탐구 3-1을 참고하여 복합문제 4번의 소스 코드에 대해, 실행과정에서 사용자 주소 공간의 변화를 알아보려 한다. 아래 4개의 문제를 옆으로 그려 주소 공간의 변화를 쉽게 보도록하라.

 

 

10. 탐구 3-7을 작성하여 실행해보고, 실행되는 과정을 fork()와 execlp() 그리고 wait()가 실 행되는 상황을 나름대로 그림으로 그리면서 설명하라. 실행한 코드와 실행 화면도 캡쳐하여 제출하라.

 

11. fork()를 이용하여 부모와 자식이 각각 동시에 실행되는 다음과 같은 멀티태스킹 프로그 램 multi.c를 작성하라. 부모 프로세스는 fork()를 사용하여 자식프로세스를 생성한다. 자식 프로세스는 1에서 10까지 홀수 합을 계산하고 이 값을 종료 코드로 리턴한다. 부모 프로세스 는 자식 프로세스를 생성 한 후 1에서 10까지 짝수 합을 구하고 자식 프로세스가 종료할 때 까지 기다려 자식의 종료 코드와 합쳐 1에서 10까지의 합을 출력한다. multi.c를 작성할 때, 부모와 자식을 동시에 실행시키는 멀티태스킹을 목표로 한다는 점을 잊지말고 프로그램을 작 성하라. 소스 코드에 주석을 달고, 소스 코드와 컴파일, 실행 과정을 모두 캡쳐하여 제출하라.

 

 

예상답: