Operating System

[쉽게 배우는 운영체제] Chapter 03. 프로세스와 스레드

곽수진 2023. 4. 20. 18:51
반응형

01 프로세스

프로그램이 실행을 위해 메모리에 올라온 동적인 상태가 프로세스다. 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조를 프로세스 제어블록(PCB)이라 하는데, 이는 커널 영역에 만들어진다. 두 프로세스의 PCB를 교환하고 작업 환경을 바꾸는 작업을 문맥 교환이라고 한다.

 

02 프로세스 상태

프로세스는 생성, 준비, 실행, 대기, 완료 상태를 거친다.

 

▶ 생성 상태

프로그램이 메모리에 올라와 프로세스가 된 상태다.

 

▶준비 상태

생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태다.

 

▶ 실행 상태

준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태다. 주어진 시간을 다 사용하고도 작업이 끝나지 않았다면 프로세스는 준비 상태로 돌아가 다음 차례를 기다린다.

 

▶ 대기 상태

실행 상태에 있는 프로세스가 입출력(I/O)을 요청하면 입출력이 완료될 때까지 기다리는 상태다. 입출력이 완료되어 인터럽트가 발생하면 대기 상태에 있는 해당 프로세스는 준비 상태로 옮겨진다.

 

▶ 완료 상태

프로세스가 작업을 끝낸 상태다. 사용하던 자원들은 반납되고, 메모리에서 지워지며, 해당 PCB는 삭제된다.

 

03 프로세스의 생성과 변환

시스템 함수 중 새로운 프로세스를 생성하는 함수는 fork()이며 다중 인스턴스를 만든다. fork()를 통해 만들어진 자식 프로세스는 exit() 혹은 return을 사용하여 작업 종료를 알리며, 부모 프로세스는 wait()을 사용하여 자식을 기다린다. 시스템 함수 중 프로세스는 그대로 놔둔 채 코드를 바꾸는 함수는 exec() 이다.

 

04 스레드

프로세스가 생성되면, CPU 스케줄러는 프로세스가 해야 할 일을 CPU에 전달하고 실제 작업은 CPU가 수행한다. 이때 CPU 스케줄러가 CPU에 전달하는 실행 단위가 스레드다. 스레드는 프로세스의 코드에 정의된 절차에 따라 CPU에 작업을 요청하는 실행 단위이며, 프로세스는 전체 실행 단위(스레드)를 담는 틀이다.

 

05 멀티스레드

멀티스레드의 장점은 스레드끼리 자원을 공유하면서도 동시에 여러 작업을 처리할 수 있끼 때문에 낭비 요소를 최소화할 수 있다는 점이다. 또한 스레드의 문맥 교환이 프로세스 문맥 교환 시간보다 짧기 때문에 효율성이 높아진다. 하나의 스레드로 구성된 프로세스는 입출력 작업이 이루어지는 동안에는 대기 상태에 머물게 되어 응답성이 떨어진다. 작업을 여러 개의 스레드로 나누면 입출력을 요청한 스레드만 대기 상태에 머물고, 다른 스레드는 실행 상태에서 작업할 수 있기 때문에 응답성이 높아진다. 다중 코어를 지원하는 CPU에서 멀티스레드를 사용한다면 여러 개의 코어에 스레드를 나눠줄 수 있으므로 적응성이 좋아진다.

 

 


 

 

연습문제 01. 실행을 위해 메모리에 올라온 동적인 상태를 가리키는 것은?

① 소스코드

② 프로세스

③ 프로그램

④ PCB

 

연습문제 02. 프로세스를 실행하는 데 필요한 정보를 보관하는 자료구조는?

① stack

② PC

③ queue

④ PCB

 

연습문제 03. 프로세스가 CPU를 할당받기 전에 기다리는 상태는?

① 실행 상태

② 준비 상태

③ 대기 상태

④ 생성 상태

 

연습문제 04. 실행 상태의 프로세스가 입출력을 요구하면 이동하는 상태는?

① 완료 상태

② 준비 상태

③ 대기 상태

④ 생성 상태

 

연습문제 05. 대기 상태의 프로세스가 입출력이 완료되면 이동하는 상태는?

① 실행 상태

② 준비 상태

③ 완료 상태

④ 생성 상태

 

연습문제 06. 대기 상태의 프로세스가 작업이 안 끝났음에도 타임 슬라이스 아웃이 걸려 이동하게 되는 상태는?

① 완료 상태

② 준비 상태

③ 대기 상태

④ 생성 상태

 

연습문제 07. PCB가 제거되는 상태는?

① 완료 상태

② 준비 상태

③ 대기 상태

④ 생성 상태

 

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

① 준비 상태

② 대기 상태

③ 완료 상태

④ 실행 상태

 

연습문제 09. 두 프로세스의 PCB를 교환하고 작업 환경을 바꾸는 작업은?

① 활성 상태

② 다단계 큐

③ 다중 인스턴스

④ 문맥 교환

 

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

문맥 교환 

② 다단계 큐

③ 다중 인스턴스

활성 상태

 

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

① init

② login

③ shell

④ swapper

 

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

① wait()

② fork()

③ exit()

④ exec()

 

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

① wait()

② fork()

③ exit()

④ exec()

 

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

① wait()

② fork()

③ exit()

④ exec()

 

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

① init 프로세스

② zombi 프로세스

③ orphan 프로세스

④ swapper 프로세스

 

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

① init 프로세스

② 좀비 프로세스

③ 고아 프로세스

④ swapper 프로세스

 

연습문제 17. 활성 상태가 아닌 것은?

① 보류 상태

② 대기 상태

③ 완료 상태

④ 준비 상태

 

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

① 태스크

② 작업

③ 프로세스

④ 스레드

 

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

① 스레드끼리 독립적이라 영향을 받지 않는다.

② 응답 속도가 빨라진다.

③ 프로세스에 비하여 통신 오버헤드가 적다.

④ 시스템 자원을 공유한다.

 

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

① 1 to 1 모델

② 커널 스레드

③ 사용자 스레드

④ M to N 모델

 

연습문제 21. 프로세서 제어 블록(PCB)은 (커널) 영역에 만들어진다.

 

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

 

연습문제 23. 프로세스 상태 중 (준비) 상태는 프로세스가 CPU를 할당받기 전에 기다리는 상태다.

 

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

 

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

 

연습문제 26. 프로세스 상태 중 (준비) 상태는 대기 상태의 프로세스가 입출력이 완료되면 이동하는 상태다.

 

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

 

연습문제 28. 프로세스 상태 중 (완료) 상태는 PCB가 제거되는 상태다.

 

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

 

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

 

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

 

연습문제 32. (쓰레기 수집(자원 회수))은 종료된 자원을 회수하는 작업이다.

 

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

 

연습문제 34. (fork())는 새로운 프로세스를 생성하는 함수다.

 

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

 

연습문제 36. (fork())는 다중 인스턴스를 만들 때 사용하는 함수다.

 

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

 

연습문제 38. (exit())은 wait()에게 신호를 보내는 함수다.

 

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

 

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

 

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

 

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

 

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

 

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

 

연습문제 45. 프로세스 상태 중 (보류) 상태는 프로세스는 살아 있지만 메모리에서 쫓겨난 상태다.

 

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

 

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

 

연습문제 48. 작업, 태스크, 스레드 중 가장 큰 단위는 (작업?)이다.

 

연습문제 49. 작업, 태스크, 스레드 중 가장 작은 단위는 (스레드)다.

 

연습문제 50. (스레드)는 정의된 절차에 따라 CPU에 작업을 요청하는 실행 단위를 말한다.

 

연습문제 51. (멀티 스레드)는 프로세스에서 자원을 공유하고 실행 단위만 여러 개 만드는 것을 말한다.

 

연습문제 52. 스레드 모델 중 (사용자 스레드)은 라이브러리로 구현되는 것이다.

 

연습문제 53. 스레드 모델 중 (커널 스레드)은 문맥 교환이 없어 속도가 빠른 스레드 초기 모델이다.

 

연습문제 54. PCB에 대하여 설명하시오.

프로세스 제어 블록은 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료구조로 PCB라고도 합니다. 모든 프로세스에는 고유의 프로세스 제어 블록이 있으며, 프로세스가 생성될 때 만들어져 프로세스 실행이 완료되면 폐기됩니다.

 

연습문제 55. 프로세스의 다섯 가지 상태에 대하여 설명하시오.

생성, 준비, 대기, 실행, 완료상태로 구성되어 있습니다.

생성 상태는 프로그램이 메모리에 올라오고 운영체제로부터 프로세스 제어 블록을 할당받은 상태입니다.

준비 상태는 실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태입니다.

대기 상태는 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태입니다.

실행 상태는 프로세스가 CPU를 할당받아 실행되는 상태입니다.

완료 상태는 프로세스가 종료되는 상태입니다.

 

연습문제 56. 문맥 교환에 대하여 설명하시오.

문맥 교환은 CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업을 말합니다.

 

연습문제 57. 고아 프로세스와 좀비 프로세스에 대하여 설명하시오.

고아 프로세스는 자식 프로세스가 종료되기 전에 부모 프로세스가 먼저 종료되었을 때 발생합니다.

좀비 프로세스는 자식 프로세스가 종료되었는데도 부모 프로세스가 뒤처리를 하지 않을 때 발생합니다.

 

연습문제 58. 멀티태스크(프로세스)와 멀티스레드를 비교하시오.

멀티태스크는 여러 개의 프로세스로 구성된 반면 멀티스레드는 하나의 프로세스에 여러 개의 스레드로 구성되어 있다.

멀티태스크는 서로 독립적인 프로세스끼리 데이터를 주고 받을 때 프로세스 간 통신(IPC)을 이용해 한 프로세스가 비정상적으로 종료되어도 다른 프로세스에 영향을 미치지 않지만, 멀티스레드는 강하게 연결되어 있어 한 프로세스가 종료되면 프로세스 내의 스레드도 강제 종료됩니다.

 

연습문제 59. 멀티스레드의 장점을 설명하시오.

프로세스 내 공유가 가능한 부분을 제외하고 실행과 관련된 부분을 스레드로 나누어 관리하면 자원의 중복 사용을 피함으로써 낭비를 막을 수 있고, 하나의 프로세스에서 여러 스레드를 사용하면 작업의 효율을 높일 수 있습니다.

 

연습문제 60. 멀티스레드 모델을 간략하게 설명하시오.

멀티스레드 모델에는 커널 스레드와 사용자 스레드가 있습니다.

커널 스레드는 커널이 직접 생성하고 관리하는 스레드이고, 사용자 스레드는 라이브러리에 의해 구현된 일반적인 스레드입니다.

반응형