1. 실행을 위해 메모리에 올라온 동적인 상태를 가르키는 것은?
- 프로세스
- 하드디스크에 있는 프로그램을 메모리에 올리면 프로세스가 된다.
2. 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조는?
- PCB : Process Control Block
3. 프로세스가 CPU를 할당 받기 전에 기다리는 상태는?
- 준비 상태 : 프로세스가 CPU를 할당 받기 전에 기다리는 상태
- 완료 상태 : 프로세스 작업이 끝난 상태
- 실행 상태 : 프로세스가 CPU를 할당 받은 상태
- 생성 상태 : 메모리에 프로그램이 올라온 상태. PCB를 생성한다.
4. 실행 상태의 프로세스가 입출력을 요구하면 이동하는 상태는?
- 대기 상태
- 입출력이 완료되면 준비상태로 변경된다.
5. 대기상태의 프로세스가 입출력을 완료하면 이동하는 상태는?
6. 실행 상태의 프로세스가 작업이 안끝났음에도 타임 슬라이스 아웃이 걸려 이동하는 상태는?
7. PCB가 제거되는 상태는
8. CPU 스케줄러에 의하여 디스패치(선택)되는 PCB가 이동하는 상태는?
9. 두 프로세스의 PCB를 교환하고 작업 환경을 바꾸는 작업은?
10. 타임 슬라이스의 크기를 정할 때 기준이 되는 것은?
- 문맥 교환
- 문맥 교환 시간을 고려야하여 타임 슬라이스 크기를 정해야한다.
- 너무 짧은 타임 슬라이스는 문맥 교환으로 인한 자원 낭비가 발생하고, 너무 긴 타임 슬라이스는 사용자가 작업이 끊겨보인다는 문제가 있다.
11. 유닉스에서 프로세스 번호 1번이면서 모든 프로세스의 최고 조상에 해당하는 프로세스의 이름은?
12. 새로운 프로세스를 생성하는 함수는?
13. 프로세스는 그대로 놔둔 채 코드를 바꾸는 함수는?
14. 프로세스의 재사용과 가장 연관이 깊은 함수는?
15. 자식 프로세스가 종료되기 전에 부모 프로세스가 먼저 종료되면 자식 프로세스는 어떤 프로세스가 되는가?
16. 자식 프로세스가 종료되었는데 부모가 뒤처리를 하지 않으면 자식 프로세스는 어떤 프로세스가 되는가?
17. 활성 상태가 아닌것은?
- 활성 상태 : 생성 상태, 준비 상태, 실행 상태, 대기상태, 완료 상태
- 비활성 상태 : 보류 상태, 휴식 상태
18. 코드에 정의된 절차에 따라 CPU에 작업을 요청하는 실행 단위는?
19. 멀티스레드의 장점이 아닌것은?
1. 스레드끼리 독립적이라 영향을 받지 않는다.
-> 스레드 한 개에 문제가 생기면 다른 스레드에 영향이 간다.
2. 응답 속도가 빨라진다.
3. 프로세스에 비하여 통신 오버헤드가 적다.
4. 시스템 자원을 공유한다.
20. 스레드 모델 중 라이브러리로 구현되면 커널이 멀티스레드를 지원하지 않을 때 사용되는 모델은?
21. 프로세스 제어 블록(PCB)는 ( )영역에 만들어 진다.
22. 메모리에 있는 프로세스는 코드영역, 데이터 영역, ( ) 영역으로 나뉜다.
23. 프로세스 상태 중 ( ) 상태는 프로세스가 CPU를 할당받기 전에 기다리는 상태다.
24. 프로세스 상태 중 ( ) 상태는 컴퓨터의 효율성을 높이기 위하여 만들어진 상태다.
- 대기
- 입출력 완료 때까지 기다리지 않고 다른 프로세스를 실행하게 함으로써 효율성을 높인다.
25. 프로세스 상태 중 ( ) 상태는 실행 상태의 프로세스가 입출력을 요구하면 이동하는 상태다.
26. 프로세스 상태 중 ( ) 상태는 프로세스 입출력이 완료되면 이동하는 상태다.
27. 프로세스 상태 중 ( ) 상태는 실행 상태의 프로세스가 작업이 안 끝났음에도 타임 슬라이스 아웃이 걸려 이동하게 되는 상태이다.
28. 프로세스 상태 중 ( ) 상태는 PCB가 제거되는 상태다.
29. 프로세스 상태 중 ( ) 상태는 CPU 스케줄러에 의하여 디스패치(선택)되는 PCB가 이동하는 상태이다.
30. ( )은 두 프로세스의 PCB를 교환하고 작업 환경을 바꾸는 작업이다.
31. 타임 슬라이스의 크기를 정할 때 기준이 되는 것은 ( )에 걸리는 시간이다.
32. ( )은 종료된 자원을 회수하는 작업이다.
33. 유닉스의 프로세스 번호 1번이면서 모든 프로세스의 최고 조상 프로세스에 해당하는 프로세스의 이름은 ( ) 다.
34. ( )는 새로운 프로세스를 생성하는 함수다.
35. ( )는 프로세스를 그대로 놔둔채 코드를 바꾸는 함수다.
36. ( )는 다중 인스턴스를 만들 때 사용하는 함수다.
37. ( )는 프로세스의 재사용과 가장 연관이 깊은 함수다.
38. ( )은 wait()에게 신호를 보내는 함수다.
- exit()은 부모 프로세스에게 자식 프로세스가 종료됬음을 알리는 함수
- wait은 자식 프로세스가 종료될때까지 기다리다가 자식 프로세스 종료시 자원을 회수하기 위한 함수
39. 부모 프로세스의 PID는 268이고, 자식 프로세스의 PID는 364라면 부모 프로세스의 CPID는 ( )다.
40. 부모 프로세스의 PID는 268이고, 자식 프로세스의 PID는 364라면 자식 프로세스의 PPID는 ( ) 이다.
41. 자식 프로세스가 종료되기 전에 부모 프로세스가 먼저 종료되면 자식 프로세스는 ( ) 가 된다.
42. 자식 프로세스가 종료되었는데도 부모가 뒤처리를 하지 않으면 자식 프로세스는 ( )가 된다.
43. fork() 이후에 부모 프로세스에 wait()이 없으면 ( ) 프로세스가 만들어진다.
44. 프로세스 상태 중 ( ) 상태는 메모리에 남아 있지만 작업을 정지하고 있는 상태다.
45. 프로세스 상태 중 ( ) 상태는 프로세스는 살아있지만 메모리에서 쫒겨난 상태다.
46. ( )는 프로그램이 실행을 위해 메모리에 올라온 동적 상태를 말한다.
47. ( )는 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조이다.
48. 작업, 태스크, 스레드 중 가장 큰 단위는 ( )이다.
49. 작업, 태스크, 스레드 중 가장 작은 단위는 ( ) 이다.
50. ( )는 정의된 절차에 따라 CPU에 작업을 요청하는 실행 단위를 말한다.
51. ( )는 프로세스에서 자원을 공유하고 실행 단위만 여러 개 만드는 것을 말한다.
52. ( ) 스레드 모델 중 ( )은 라이브러리로 구현되는 것이다.
53. 스레드 모델 중 ( )은 문맥 교환이 없어 속도가 빠른 스레드 초기 모델이다.
54. PCB에 대하여 설명하시오.
- PCB는 프로세스 제어블록으로, 프로세스가 실행되는데 필요한 값들을 저장하는 자료구조이다. 프로그램이 PCB가 생성되면 프로세스가 된다.
55. 프로세스의 다섯가지 상태에 대하여 설명하시오.
- 생성 상태 : 프로그램이 메모리에 올라간 상태. PCB를 생성한다.
- 준비 상태 : CPU 스케줄러를 통해 CPU를 할당받기 위해 준비중인 상태
- 실행 상태 : 프로세스가 CPU를 할당받아 실행중인 상태
- 대기 상태 : 입출력 요구에 따라 프로세스가 실행을 멈추고 대기하는 상태
- 완료 상태 : 프로세스 작업이 모두 완료된 상태. PCB를 제거한다.
56. 문맥 교환에 대해 설명하시오.
각 프로세스는 타임 슬라이스 동안만 CPU를 할당받아서 프로세스를 실행할 수 있다. 타임 슬라이스 아웃이 되면 CPU가 새로운 작업을 할수 있도록 작업환경을 만드는것을 문맥 교환이라고 한다. 문맥 교환 에서는 PCB를 교체하고 PCB에 저장된 데이터, 레지스터값을 수정한다.
57. 고아 프로세스와 좀비 프로세스에 대해 설명하시오.
- 프로세스의 자원 회수는 부모 프로세스가 진행하는데, 자식 프로세스가 종료됬음에도 부모 프로세스가 뒤처리를 하지 않는 경우 자식 프로세스는 좀비 프로세스가 된다.
- 자식 프로세스보다 부모 프로세스가 먼저 종료가 되는 경우 자식 프로세스는 고아 프로세스가 된다.
58. 멀티태스크(프로세스)와 멀티스레드를 비교하시오.
- 멀티스레드에서는 한개의 프로세스의 자원을 공유합니다.
따라서 멀티스레드 환경에서 한 개의 스레드가 문제가 발생했을때 다른 스레드에도 영향이 갈 수 있습니다. 프로세스 자원을 공유하면서 메모리를 절약하는 장점을 가지고 있습니다.
- 멀티태스크는 프로세스를 여러개 실행시키는 것을 의미합니다. 프로세스 마다 프로세스 자원이 생성되면서 메모리를 낭비할 수 있다는 단점이 있지만 각 프로세스간 독립적으로 작동하면서 약한 결합을 가지고 있습니다.
59. 멀티스레드의 장점
- 자원 공유로 인해 작업이 원활하게 진행됩니다.
- 응답성이 향상됩니다. 한 스레드가 입출력으로 인해 작업이 진행되지않아도 다른 스레드가 작업을 계속 하면서 사용자의 작업 요구에 빠른 응답이 가능합니다.
- 여러개의 프로세스를 만들 필요가 없어서 효율성이 향상됩니다.
- 다중 CPU로 멀티스레드를 지원하면 CPU 사용량이 증가하고 프로세스의 처리 시간이 단축됩니다.
60. 멀티스레드 모델을 간략하게 설명하시오.
- 사용자 스레드 : 초기의 멀티 스레드 모델, 커널이 멀티스레드를 지원하지 않아서 사용자 라이브러리에서 스레드를 구현한다. 스케줄링이나 동기화 기능도 사용자 라이브러리에서 구현해야한다. 문맥교환이 이뤄지지 않아서 빠른 속도가 장점이나 보안상의 문제가 발생할 수 있다.
- 커널 스레드 : 사용자 스레드와 커널 스레드가 1 : 1로 대응하는 모델. 멀티 CPU 사용을 통해 CPU 작업효율을 높일 수 있고 커널의 기능 사용으로 보안에 강하고 안정적으로 작동한다. 하지만 문맥교환을 위한 오버헤드가 존재하기 때문에 느리게 작동한다.
- 멀티 레벨 스레드 : 사용자 스레드와 커널 스레드를 혼합한 방식이다. 빠른 속도가 필요한 스레드는 사용자 스레드를 사용하고, 안정적으로 움직여야하는 스레드는 커널 스레드를 이용한다.