본문 바로가기
운영체제/문제풀이

Operationg System Concepts Chapter 3. 프로세스 문제풀이

by 미네밍 2017. 1. 4.

chapter 3. 연습문제 풀기 숙제


3.1 장단점


a. 동기 / 비동기 통신


이 부분은 아무래도 동기와 비동기 방식이 가진 장단점이 그냥 그대로 적용되는 것 같다.

-> 동기적 통신 : 동기화가 이루어지면, 반드시 정해진 사람에게 주고받을 수 있다는 장점이 있지만, 메세지 수신 혹은 송신할 수 있을 때까지 봉쇄가 되어 효율이 떨어진다.

-> 비동기적 통신 : 빠르게 작업이 이루어지지만 계속해서 메세지를 보내므로 CPU 에 부하가 올 수 있다.


b. 자동 / 명시적 버퍼링 


-> 자동 버퍼링(무한 용량?)은 송신자가 메세지를 보내기 위해 대기해야 할 일이 없다는 점이 장점같다. 반면 메모리가 많이 들 것 같다. 

-> 명시적 버퍼링(유한 용량이라고 이해했음...) : 유한한 길이를 가져 큐에 공간이 없으면 송신자가 대기해야 한다는 점이 단점이지만, 메모리가 절약될 것 같다. (내 생각)


c. 복사 / 참조에 의한 송신


-> 이건 생각해봤는데, 잘 모르겠어서 구글링 해서 복사해왔당...

Send by copy does not allow the receiver to alter the state of the parameter; send by reference does allow it. A benefit of send by reference is that it allows the programmer to write a distributed version of a centralized application. Java’s RMI provides both; however, passing a parameter by reference requires declaring the parameter as a remote object as well. 


대략 복사에 의한 송신은 수신자가 매개변수 상태를 바꿀 수 없게 하지만, 참조에 의한 송신은 그게 가능하다는 게 장점이고, 참조에 의한 송신의 장점은 Centralized application 의 분산버전을 프로그래머가 쓸 수 있게 한다는 것(?) 이건 무슨 말인지...모르겠고

참조에 의한 송신같은 경우 매개변수를 선언하는 것을 요구한다는 것이 단점이다.


d. 고정 / 가변 크기 메시지


-> 고정크기 : 시스템 수준의 구현은 간단하지만, 프로그래밍 작업이 힘들다.

-> 가변크기 : 시스템 수준의 구현은 복잡하나, 프로그래밍 작업이 간단해진다.


3.2. RPC 기법 "최대 한 번" 이나 "정확히 한 번", 필요없는 경우 


-> 1. 같은 메세지를 여러번 받거나 2. 서버가 메세지를 받지 못하는 결과를 초래할 수 있다.

    보장이 필요없는 예는 단순히 데이터를 요구하거나? 여러 번 메세지를 보낸다고 하더라도 문제가 되지 않는 상황같은 경우 상관없을 것       같다.


3.5. 문맥을 교환 시 커널의 작업


-> 문맥 교환이 일어날 때, 커널은 과거 프로세스의 문맥을 PCB에 저장하고, 스케쥴된 새로운 프로세스의 저장된 문맥을 복구한다.


3.9. 단기, 중기, 장기 스케쥴링 차이점


-> 이 질문의 답을 고민하다가 어떤 블로그에서 봤다. 디스크에서 메모리에 적재하는 작업. 새로운 프로세스가 생성되거나 종료되는 시점에서 장기 스케쥴러가 역할을 하는 것이고, 그 다음 CPU를 할당하는 작업은 단기 스케쥴러가 하는 것이다.



-단기: 메인 메모리에서 실행 준비가 완료되어 있는 프로세스들 중 선택해 이들 중 하나에 CPU를 할당하는 작업을 한다.

-장기: job pool 에 저장된 프로세스들을 선택하여 실행하기 위해 메인 메모리로 적재하는 역할을 한다.


1. 단기 스케쥴링같은 경우, cpu 를 위해 자주 새로운 프로세스를 선택해야 한다. 실행빈도가 높다. 그리고 빨라야만 한다.

2. 반면 장기 스케쥴러는 다중 프로그램의 정도를 제어하는 역할을 한다. 프로세스가 시스템을 떠날 때만 호출되는 것이 바람직하다. (생성되는 프로세스, 끝난 프로세스의 확률이 같은 것이 다중프로그래밍 정도가 안정적이라고 볼 수 있다. 저 그림을 보기 전에 잘 이해가 안갔었는데, 일단 내 나름대로 끝난 프로세스를 메모리로부터 제거해주기 위해 호출된다는 뜻 같다고 이해했다.) 따라서 실행빈도가 적다.


-중기: 단기,장기의 중간 수준의 스케쥴링. 메모리에서 프로세스들을 제거해 다중 프로그래밍의 정도를 완화한다. 차후에 다시 프로세스를 메로리로 불러와 중단됐던 시점부터 실행을 재개한다. 이것을 스와핑 기법이라고 한다.



3.10. 최초의 부모 프로세스 포함 생성하는 프로세스?


-> 3개


3.11. 3.29의 A,B,C,D행 pid 값


-> A : 0, B : 2603, C : 2603, D : 2600


**그냥 공부한 내용 정리하려고 쓴 거라서 정답인지 아닌지 모릅니당**

댓글