티스토리 뷰

SoftWare/OS

OS - 3. Process 연습문제

White Whale 2016. 7. 5. 17:07
728x90

3.1 단기, 중기, 장기 스케줄링의 차이점을 설명하시오.

➀ 장기 스케줄러 : 프로세스의 상태 중 New-> Ready의 과정과 Running(or Ready) -> Terminated의 과정을 담당합니다. 즉 메모리와 디스크 사이의 스케줄링을 담당합니다. 그렇기 때문에 호출 빈도가 적습니다.


② 단기 스케줄러 : 프로세스의 상태 중 Ready->Running->waiting->Ready의 주기를 관리합니다. 그렇기 때문에 장기 스케줄러에 비해 매우 많이 호출이 됩니다.


③ 중기 스케줄러 : CPU를 차지하기 위한 경쟁이 심해질 때 우선순위가 낮은 프로세스들을 잠시 제거한 후 나중에 경쟁이 완화되었을 때 다시 디스크에서 메모리로 불러와 중단되었던 부분부터 다시 실행시켜주는 일을 합니다. 이러한 방법을 스왑핑이라고 부릅니다.


3.2 프로세스들 사이에 문맥을 교환할 때 커널이 수행하는 작업을 설명하시오.

커널은 현재 프로세스의 base pointer, program counter 등의 값을 레지스터 파일 또는 메모리 상에 저장한다. 그 다음 현재 프로세스의 process control block을 대기큐에 등록한다. 현재 프로세스의 문맥을 모두 저장한 이후에는 새로운 프로세스의 문맥을 base pointer, program counter 등에 로드한다.


3.3 그림 3.8과 유사한 프로세스 트리를 구축하시오. UNIX 또는 Linux 시스템에서 프로세스에 관한 정보를 얻기 위해 ps –ael 명령을 사용하시오.

  (프로세스의 수가 250여개가 나와서 간략하게 나타내었습니다.)


3.4 UNIX와 Linux 시스템의 init 프로세스의 역할을 프로세스 종료의 관점에서 설명하시오

- 부팅 시 init 프로세스 Load 된 후 init 프로세스가 시스템에 필요한 다른 프로세스를 순차적으로 load 시킨다. 부팅 완료 후 init 프로세스는 백그라운드 프로세스로서 동작하며, 다른 프로세스들을 감시한다. 감시당하던 프로세스 중 부모가 없는 즉 좀비프로세스가 되었을 경우 해당 프로세스의 리소스를 해제하여 반환한다.


3.5 그림 3.31에 보인 프로그램에서 부모 프로세스를 포함하여 총 몇 개의 프로세스가 생성되는가?

반복문을 unrolling하면 총 4개의 fork()를 실행하는 것과 같다. 그러므로 부모 프로세스를 포함하여 총 = 16개만큼의 프로세스가 생성된다.


3.6 그림 3.32의 프로그램에서 printf(“LINE J”)가 실행되는 상황을 설명하시오.

  그림 3.32에서 printf(“LINE J”)는 execlp명령어 뒤에 위치하고 있는데 exec계열의 명령어는 해당 명령의 파라메터로 전달되는 다른 명령을 실행하여 주고 자신은 사라진다. 따라서 정상적인 경우에는 결과에서 “LINE J”를 볼 수가 없다. 하지만 execlp의 파라메터가 잘못 되었거나(해당 명령어가 존재하지 않거나 명령어의 위치를 잘못 지정한 경우 등) 지정된 프로그램이 존재하지 않는 경우에 execlp명령이 실패하고 다음 줄인 “LINE J”가 출력될 수 있다.


3.7 그림 3.33에 보인 프로그램에서 A, B, C, D행의 pid 값은 무엇인가?

- A와 C의 pid는 fork인한 부모와 자식을 구분하는 숫자이다. 여기서 부모가 가지는 숫자는 자식의 pid인 것을 알 수 있다. 그리고 B와 D는 자기 자신의 pid를 나타내는 것이다. 즉 부모의 pid는 2763이고 자식의 pid는 2764이다.


3.8 일반 파이프를 사용하는 것이 지명 파이프를 사용하는 것보다 더 적절한 상황의 예와, 반대로 지명 파이프를 사용하는 것이 더 적절한 상황의 예를 들어보시오.

파이프는 프로세스간의 통신을 위한 일종의 채널이다. 일반 파이프는 파이프를 사용하는 프로세스가 실행 중일때만 존재한다. 따라서 일반 파이프는 특정 프로세스만 파이프를 이용할 때 유용하다. 반대로 지명 파이프는 파일 시스템을 사용하여 프로세스간의 통신을 구현하는 기법으로써 특정한 속성을 갖는 파이프를 다수의 프로세스에서 이용하고자 할 때 유용하다.


3.9 RPC기법을 고려하자. “최대 한 번”이나 “정확히 한 번”방식으로 동작해야 한다는 제약을 하지 않았을 때 발생할 수 있는 바람직하지 않은 결과에 대해 기술하시오. 이 와 같은 보장을 하지 않는 RPC를 사용할 수 있는 예를 들어 보이시오.

  Remote Procedure Call(RPC)이 최대 한 번이나 정확히 한 번 방식을 지원하지 않는 다면 이 RPC기법을 가진 시스템에서 정확히 프로시저 콜이 한번 일어난다고 보장 할 수가 없으며 여러 번의 프로시저 콜이 발생 할 수 있다. 예를 들어 전자 상거래의 경우에서 사용자가 결제 정보를 RPC기법으로 처리하는데 위의 두 가지 경우를 지원 해주지 않는 다면 결제 정보가 여러 번 요청되어 결제가 될 수 있다.

  이와 같은 보장을 하지 않는 RPC는 시간에 민감하거나 데이터를 변경시키지 않는 곳에 사용 가능하다. 예를 들어 전자 상거래에서 물건의 이름이나 가격, 회사의 위치 등의 정보를 묻는 경우에는 “최대 한 번”이나 “정확히 한 번”방식을 사용하지 않은 RPC방식을 사용 할 수 있다.


3.10 그림 3.34의 프로그램에서 X와 Y행의 출력에 대해 설명하시오.

 - 메인함수 밖에 있는 nums 역시 fork()함수에 복사된 사실을 알 수 있다. 이는 자식 프로세스가 생성될 시 전역변수를 복사해 갔기 때문에 부모 프로세스에 영향을 끼치지 않는 것이다.


3.11 다음에 나오는 기법들의 장점과 단점은 무엇인가? 시스템 관점과 프로그래머 관점을 모두 고려하시오.

a. 동기적 통신과 비동기적 통신: 동기적 통신은 메시지를 보내고 답변이 올 때까지 해당 답변을 기다리는 방식으로 시스템 관점과 프로그래머 관점에서 구현이 간단하다는 장점이 있지만, 답변이 올 때가지 프로세스가 어떠한 작업도 할 수 없다는 단점이 존재한다. 반대로 비동기적 통신은 이벤트 핸들러를 이용해야 하는 등의 오버헤드가 발생하지만, 통신을 하면서 프로세스가 다른 작업을 수행할 수 있다는 장점이 있다.


b. 자동과 명시적 버퍼링: 자동 버퍼링의 경우에는 운영체제가 판단하기에 버퍼링이 필요한 경우에 버퍼링을 수행하기 때문에 시스템 관점에서는 효율적인 자원 활용이 장점이고 프로그래머의 관점에서는 프로그램 구현이 단순해진다는 장점이 존재한다. 그러나 어떠한 경우에는 프로그래머가 명시적으로 정의한 버퍼링보다 효율이 안 좋을 수도 있다. 반대로 명시적 버퍼링의 경우에는 프로그래머가 명시적으로 버퍼링을 수행하도록 구현해야하는 단점이 존재하지만 튜닝을 잘 하면 자동 버퍼링보다 높은 성능 향상을 기대할 수 있다.


c. 복사에 의한 송신과 참조에 의한 송신: 복사에 의한 송신은 원본 데이터는 그대로 유지하기 때문에 데이터의 안정성을 확보할 수 있지만, 데이터의 복사 과정에서 오버헤드가 발생하는 단점이 존재한다. 참조에 의한 송신은 데이터의 복사 과정이 없기 때문에 오버헤드가 발생하지 않는 장점이 존재하지만, 다른 함수나 객체에서 의도하지않게 원본 데이터의 값을 변경하게되는 side effect가 발생할 수도 있다.


d. 고정 크기와 가변 크기 메시지: 고정 크기 메시지는 시스템 관점에서 항상 고정된 크기의 메시지를 다루기 때문에 파이프라이닝, 버퍼링 등 시스템의 효율을 향상시킬 수 있는 기법을 활용할 수 있다는 장점이 존재하며, 프로그래머의 관점에서는 구현이 쉽다는 장점이 있다. 그러나 고정 크기 메시지는 설정된 크기보다 작은 크기의 메시지는 공간 낭비를, 설정된 크기보다 큰 메시지는 전송이 불가능하다는 단점이 존재한다. 반대로 가변 크기 메시지는 시스템이 연산을 최적화할 수 없다는 단점과 구현이 복잡해지는 단점이 존재하지만 공간을 효율적으로 활용할 수 있고, 메모리의 범위 안에서 모든 크기의 메시지를 전송할 수 있다는 장점이 존재한다.


'SoftWare > OS' 카테고리의 다른 글

OS - 7. Deadlocks 연습문제  (8) 2016.07.05
OS - 4. Thread 연습문제  (2) 2016.07.05
OS - 2. Operating System Structures 연습문제  (1) 2016.07.05
OS - 1. Introduction 연습문제  (4) 2016.07.05
OS - 12. Mass-Storage System  (2) 2016.06.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함