프로세스와 스레드 연습문제

꿀떡냠·2024년 5월 20일

1. 실행을 위해 메모리에 올라온 동적인 상태를 가르키는 것은?

  • 프로세스
  • 하드디스크에 있는 프로그램을 메모리에 올리면 프로세스가 된다.

2. 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조는?

  • PCB : Process Control Block

3. 프로세스가 CPU를 할당 받기 전에 기다리는 상태는?

  • 준비 상태 : 프로세스가 CPU를 할당 받기 전에 기다리는 상태
  • 완료 상태 : 프로세스 작업이 끝난 상태
  • 실행 상태 : 프로세스가 CPU를 할당 받은 상태
  • 생성 상태 : 메모리에 프로그램이 올라온 상태. PCB를 생성한다.

4. 실행 상태의 프로세스가 입출력을 요구하면 이동하는 상태는?

  • 대기 상태
  • 입출력이 완료되면 준비상태로 변경된다.

5. 대기상태의 프로세스가 입출력을 완료하면 이동하는 상태는?

  • 준비 상태

6. 실행 상태의 프로세스가 작업이 안끝났음에도 타임 슬라이스 아웃이 걸려 이동하는 상태는?

  • 준비 상태

7. PCB가 제거되는 상태는

  • 완료 상태

8. CPU 스케줄러에 의하여 디스패치(선택)되는 PCB가 이동하는 상태는?

  • 준비 상태

9. 두 프로세스의 PCB를 교환하고 작업 환경을 바꾸는 작업은?

  • 문맥 교환

10. 타임 슬라이스의 크기를 정할 때 기준이 되는 것은?

  • 문맥 교환
  • 문맥 교환 시간을 고려야하여 타임 슬라이스 크기를 정해야한다.
  • 너무 짧은 타임 슬라이스는 문맥 교환으로 인한 자원 낭비가 발생하고, 너무 긴 타임 슬라이스는 사용자가 작업이 끊겨보인다는 문제가 있다.

11. 유닉스에서 프로세스 번호 1번이면서 모든 프로세스의 최고 조상에 해당하는 프로세스의 이름은?

  • init

12. 새로운 프로세스를 생성하는 함수는?

  • fork()

13. 프로세스는 그대로 놔둔 채 코드를 바꾸는 함수는?

  • exec()

14. 프로세스의 재사용과 가장 연관이 깊은 함수는?

  • exec()

15. 자식 프로세스가 종료되기 전에 부모 프로세스가 먼저 종료되면 자식 프로세스는 어떤 프로세스가 되는가?

  • 고아 프로세스 (orphan 프로세스)

16. 자식 프로세스가 종료되었는데 부모가 뒤처리를 하지 않으면 자식 프로세스는 어떤 프로세스가 되는가?

  • 좀비 프로세스

17. 활성 상태가 아닌것은?

  • 활성 상태 : 생성 상태, 준비 상태, 실행 상태, 대기상태, 완료 상태
  • 비활성 상태 : 보류 상태, 휴식 상태

18. 코드에 정의된 절차에 따라 CPU에 작업을 요청하는 실행 단위는?

  • 스레드

19. 멀티스레드의 장점이 아닌것은?

1. 스레드끼리 독립적이라 영향을 받지 않는다.
-> 스레드 한 개에 문제가 생기면 다른 스레드에 영향이 간다.
2. 응답 속도가 빨라진다.
3. 프로세스에 비하여 통신 오버헤드가 적다.
4. 시스템 자원을 공유한다.

20. 스레드 모델 중 라이브러리로 구현되면 커널이 멀티스레드를 지원하지 않을 때 사용되는 모델은?

  • 1 to N 모델, 사용자 스레드

21. 프로세스 제어 블록(PCB)는 ( )영역에 만들어 진다.

  • 운영체제

22. 메모리에 있는 프로세스는 코드영역, 데이터 영역, ( ) 영역으로 나뉜다.

  • 스택, 메모리

23. 프로세스 상태 중 ( ) 상태는 프로세스가 CPU를 할당받기 전에 기다리는 상태다.

  • 준비 상태

24. 프로세스 상태 중 ( ) 상태는 컴퓨터의 효율성을 높이기 위하여 만들어진 상태다.

  • 대기
  • 입출력 완료 때까지 기다리지 않고 다른 프로세스를 실행하게 함으로써 효율성을 높인다.

25. 프로세스 상태 중 ( ) 상태는 실행 상태의 프로세스가 입출력을 요구하면 이동하는 상태다.

  • 대기

26. 프로세스 상태 중 ( ) 상태는 프로세스 입출력이 완료되면 이동하는 상태다.

27. 프로세스 상태 중 ( ) 상태는 실행 상태의 프로세스가 작업이 안 끝났음에도 타임 슬라이스 아웃이 걸려 이동하게 되는 상태이다.

  • 준비

28. 프로세스 상태 중 ( ) 상태는 PCB가 제거되는 상태다.

  • 완료

29. 프로세스 상태 중 ( ) 상태는 CPU 스케줄러에 의하여 디스패치(선택)되는 PCB가 이동하는 상태이다.

  • 실행

30. ( )은 두 프로세스의 PCB를 교환하고 작업 환경을 바꾸는 작업이다.

  • 문맥 교환

31. 타임 슬라이스의 크기를 정할 때 기준이 되는 것은 ( )에 걸리는 시간이다.

  • 문맥 교환

32. ( )은 종료된 자원을 회수하는 작업이다.

  • wait()

33. 유닉스의 프로세스 번호 1번이면서 모든 프로세스의 최고 조상 프로세스에 해당하는 프로세스의 이름은 ( ) 다.

  • init

34. ( )는 새로운 프로세스를 생성하는 함수다.

  • fork()

35. ( )는 프로세스를 그대로 놔둔채 코드를 바꾸는 함수다.

  • exec()

36. ( )는 다중 인스턴스를 만들 때 사용하는 함수다.

  • fork()

37. ( )는 프로세스의 재사용과 가장 연관이 깊은 함수다.

  • exec()

38. ( )은 wait()에게 신호를 보내는 함수다.

  • exit()은 부모 프로세스에게 자식 프로세스가 종료됬음을 알리는 함수
  • wait은 자식 프로세스가 종료될때까지 기다리다가 자식 프로세스 종료시 자원을 회수하기 위한 함수

39. 부모 프로세스의 PID는 268이고, 자식 프로세스의 PID는 364라면 부모 프로세스의 CPID는 ( )다.

  • 364

40. 부모 프로세스의 PID는 268이고, 자식 프로세스의 PID는 364라면 자식 프로세스의 PPID는 ( ) 이다.

  • 268

41. 자식 프로세스가 종료되기 전에 부모 프로세스가 먼저 종료되면 자식 프로세스는 ( ) 가 된다.

  • 고아 프로세스 (ophan 프로세스)

42. 자식 프로세스가 종료되었는데도 부모가 뒤처리를 하지 않으면 자식 프로세스는 ( )가 된다.

  • 좀비 프로세스

43. fork() 이후에 부모 프로세스에 wait()이 없으면 ( ) 프로세스가 만들어진다.

  • 좀비 프로세스

44. 프로세스 상태 중 ( ) 상태는 메모리에 남아 있지만 작업을 정지하고 있는 상태다.

  • 휴식 상태

45. 프로세스 상태 중 ( ) 상태는 프로세스는 살아있지만 메모리에서 쫒겨난 상태다.

  • 보류 상태

46. ( )는 프로그램이 실행을 위해 메모리에 올라온 동적 상태를 말한다.

  • 프로세스

47. ( )는 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조이다.

  • PCB : 프로세스 제어 블록

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 작업효율을 높일 수 있고 커널의 기능 사용으로 보안에 강하고 안정적으로 작동한다. 하지만 문맥교환을 위한 오버헤드가 존재하기 때문에 느리게 작동한다.
  • 멀티 레벨 스레드 : 사용자 스레드와 커널 스레드를 혼합한 방식이다. 빠른 속도가 필요한 스레드는 사용자 스레드를 사용하고, 안정적으로 움직여야하는 스레드는 커널 스레드를 이용한다.
profile
백엔드 개발자로 살아남기

0개의 댓글