[#15] 프로세스의 개요 : Q/A

Fuji ㅣ 2022. 8. 15. 17:06

 

프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가?
더보기

프로그램이 프로세스가 되기 위해서는 PCB 프로세스 제어 블록이 필요하다.

운영체제는 작업지시서에 담긴 정보를 바탕으로 프로세스 제어블록을 생성해서 프로그램에 넘겨준다.

 

프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는?
더보기

준비 상태

 

프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태는?
더보기

대기 상태

 

 

CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업을 무엇이라 하는가?
더보기

스케줄링

 

 

유닉스에서 Ctrl + Z 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가?
더보기

휴식 상태 (pause status) p.143

 

실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황을 무엇이라 하는가?
더보기

문맥교환

 

실행 중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은?
더보기

fork()

 

프로세스의 골격은 그대로 둔 채 코드 영역만 바꾸는 시스템 호출은?
더보기

exec()

 

부모 프로세스가 기다리지 않아 자원이 회수되지 못하고 계속 살아 있는 프로세스는?
더보기

고아 프로세스

 

프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위로서 가벼운 프로세스라고 불리는 것은?
더보기

스레드

 

고아 프로세스를 방지하기 위해 부모 프로세스는 어떤 시스템 호출을 사용하는가?
더보기

wait() 호출을 사용해서 자식 프로세스가 종료될 때까지 대기해서 고아 프로세스 생성을 방지한다.

 

작업이 끝난 프로세스의 자원을 회수하는 행위를 무엇이라고 하는가?
더보기

가비지 컬렉션(Garbage Collection)

 

모든 프로세스를 부모-자식 관계로 만들어 자원 회수를 용이하게 하는 프로세스의 구조는?
더보기

계층 구조

 


 

다섯가지 프로세스 상태도를 그리시오.

생성 상태 -> 준비 상태 -> 실행 상태 -> 완료 상태

                     대기 상태

 

프로세스의 상태 중 휴식 상태와 보류 상태에 대해서 설명하시오
더보기

휴식 상태는 프로세스가 작업을 일시적으로 쉬고 있는 상태이며 유닉스 Ctrl + Z를 누르면 일시적으로 멈춘다. 그리고 멈춘 시점에서부터 재시작이 가능한 상태이다.

 

보류 상태는 메모리에서 잠시 쫒겨난 상태로 일시 정지 상태라고도 불린다. 오류, 메모리 초과, 보안, 장기간 미사용, 입출력 지연 등 문제시 보류 상태에 들어간다.

 

프로세스 제어 블록에 대해 설명하시오.
더보기

프로세스 제어 블록에는 해당 프로세스의 이름인 PID와 코드 영역, 데이터 영역, 그리고 자식 프로세스에 대한 포인터 정보 및 스케줄링시 우선 순위를 정할 수 있는 정보가 있다.

 

문맥 교환에 대해 설명하시오.
더보기

문맥 교환이란 CPU가 다른 스케줄러의 요청에 의해 다른 프로세스로 작업을 진행해야할 경우 프로세스 제어 블록에 대한 리스트를 교체해야하는데 이러한 과정을 문맥 교환이라고 한다.

 

프로세스를 구성하는 코드 영역, 데이터 영역, 스택 영역에 대해 설명하시오.
더보기

코드 영역은 프로그램이 동작하기 위한 코드 정보가 읽기 전용으로 저장되어 있는 공간이다.

데이터 영역은 해당 프로그램이 동작하기 위한 데이터, 변수등이 저장된 공간이다. 

코드 영역과 데이터 영역은 정적 영역이다.

 

스택 영역은 동적 할당 영역에 속해있는 공간이며, 데이터가 유동적으로 바뀐다. 프로그램이 실행중에 만들어지고 바뀌기도 하는 공간이다.

 

fork() 시스템 호출의 장점을 설명하시오
더보기

fork() 시스템은 프로세스의 복사본을 만들기 때문에 두 프로세스가 서로 독립적이어서 하나의 프로세스가 문제가 생기거나 해도 다른 프로세스에 영향이 적게 온다.

 

exec()
더보기

fork()와 다르게 프로세스를 복사하는게 아닌 코드 영역을 재활용해서 사용하는 방법으로 불필요한 메모리 낭비를 방지하기 위해 사용된다. 

 

프로세스 계층 구조의 장점에 대해 설명하시오.
더보기

프로세스 계층 구조를 가지게 되면 init 프로세스를 기점으로 부모 - 자식 관계를 통한 프로세스 생성을 하기 때문에 메모리에 대한 자원 회수가 용이하다는 장점이 있다.

 

멀티스레드, 멀티태스킹, 멀티프로세싱, CPU멀티스레드를 비교하여 설명하시오.
더보기

멀티스레드는 프로세스 내에서 자원을 공유하고 작업을 쪼개서 효율성을 끌어올릴 수 있다.

멀티태스킹은 타임 슬라이스를 이용해 여러 프로세스를 동시에 관리하는 것을 의미하며

멀티프로세싱은  CPU를 여러개 사용해서 여러 스레드를 동시에 처리하는 작업 환경을 말한다. 병렬 처리에서 슈퍼스칼라 기법과 같다.

CPU 멀티스레드는 스레드를 병렬 처리하는 기법을 의미한다. 

멀티스레드는 소프트웨어적인 측면이 강하고 운영체제가 프로세스의 단위를 더 쪼개서 스레드 단위로 구현하는거라면 CPU 멀티스레드는 하드웨어적으로 여러 스레드를 동시에 처리하는 것을 뜻한다. 멀티 프로세싱은 CPU의 여러 코어에 스레드를 배정하고 동시에 작업한다.