쉽게 배우는 운영체제_ch3_프로세스와 스레드

shon4bw·2021년 9월 30일
0

📝Quick Study

목록 보기
9/12
post-thumbnail

연습문제

01

프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가?
PCB(Process Control Block)

프로세스는 컴퓨터 시스템의 작업 단위로 task라고도 부른다.
운영체제는 프로그램을 메모리의 적당한 위치로 가져온다. 그와 동시에 주문서에 해당하는 작업 지시서를 만드는데, 이 작업 지시서가 프로세스 제어 블록(PCB)이다. 주문서에는 어떤 테이블에서 어떤 요리를 주문했는지, 손님의 특별 주문 사항은 무엇인지, 현재 어떤 단품 요리까지 제공되었는지 등과 같은 정보가 담겨 있다. 마찬가지로 PCB에도 프로세스를 처리하는 데 필요한 다양한 정보가 들어 있다.

02

프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는?
준비 상태ready status

프로세스의 네 가지 상태
생성 상태(create status) -> 준비 상태(ready status) -> 실행 상태(running status) -> 완료 상태(terminate status)

03

프로세스의 상태 중 입출력 작업을 하기 위해 이동하는 상태는?
대기 상태blocking status
: 입출력을 요구한 프로세스가 입출력이 완료될 때가지 기다리는 상태

프로세스의 다섯 가지 상태
프로세스는 생성, 준비, 실행, 상태, 완료라는 네 가지 상태만으로 작업을 진행하는 데 큰 문제가 없다. 그러나 오늘날 운영체제의 효율성을 고려하여 한 가지 상태를 더 만들었다.

04

CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업은?
디스패치

05

유닉스에서 ctrl+z 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가?
휴식 상태(pause status)

프로그램이 종료된 것처럼 보이짐만 사실은 실행을 잠시 멈춘 것이다.
jobs나 ps명령어로 프로세스의 상태를 보면 stop임을 알 수 있다.

06

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

07

실행 중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은?
fork()

커널에서 제공하는 이 함수는 프로세스를 복사하는 일종의 시스템 호출이다. fork()시스템 호출을 사용하면 실행 중인 프로세스와 똑같은 프로세스가 하나 더 만들어진다. 같은 요리를 하나 더 만들 듯이 복사를 하는 것이다.

08

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

fork() 시스템 호출로 요리를 복사한 후, 복사된 요리를 새로운 요리로 바꾸는 함수인 exec() 시스템 호출을 사용하면 된다.
exec() 시스템 호출은 기존의 프로세스를 새로운 프로세스로 전환하는 함수.

09

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

10

프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위로서 가벼운 프로세스라고 불리는 것은?
스레드(thread)
CPU스케줄러가 CPU에 전달하는 일, CPU가 처리하는 작업의 단위

11

고아 프로세스를 방지하기 위해 부모 프로세스는 어떤 시스템 호출을 사용하는가?
wait()
: 자식 프로세스가 끝나기를 기다렸다가 자식 프로세스가 종료되면 다음 문장을 실행

12

작업이 끝난 프로세스의 자원을 회수하는 행위는?
garbage collection

13

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

심화문제

01

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

사진 출처
1) 생성 상태(create status): 프로그램이 메모리에 올라오고 운영체제로부터 프로세스 제어 블록을 할당받은 상태
2) 준비 상태(ready status): 실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태. 프로세스 제어 블록은 ready queue에서 기다리며 CPU 스케줄러에 의해 관리됨
3) 실행 상태(running status): 프로세스가 CPU를 할당받아 실행되는 상태
4) 대기 상태(blocking status): 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될때까지 기다리는 상태로 wait status라고도 함
5) 완료 상태(terminate status): 프로세스가 종료되는 상태. 완료 상태에서는 코드와 사용했던 데이터를 메모리에서 삭제하고 프로세스 제어 블록을 폐기함

02

프로세스의 상태 중 효식 상태와 보류 상태에 대해 설명하시오
휴식 상태(pause status): 프로세스가 작업을 일시적으로 쉬고 있는 상태
보류 상태(suspend status): 프로세스가 메모리에서 잠시 쫓겨난 상태로 휴식 상태와 차이가 존재

03

프로세스 제어 블록의 구성에 대해 설명하시오
PCB은 프로세스를 실행하는데 필요한 중요한 정보를 보관하는 자료 구조로 TCB라고도 한다. 포인터, 프로세스 구분자, 프로세스 상태, 프로그램 카운터, 프로세스 우선순위, 각종 레지스터 정보, 메모리 관리 정보등으로 이루어져 있다.

04

문맥 교환에 대해 설명하시오
CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업

05

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

  • 코드 영역: 프로그램의 본문이 기술된 곳, 텍스트 영역이라고도 함
  • 데이터 영역: 코드가 실행되면서 사용하는 변수나 파일 등 각종 데이터를 모아놓은 곳
  • 스택 영역: 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아놓은 곳

06

fork() 시스템 호출의 장점은?

  • 프로세스의 생성 속도가 빠르다.
  • 추가 작업없이 자원을 상속할 수 있다.
  • 시스템 관리를 효율적으로 할 수 있다.

07

exec() 시스템 호출을 사용하는 이유
프로세스의 구조체를 재활용하기 위함.
이미 만들어진 프로세스 제어 블록, 메모리 영역, 부모-자식 관계를 그대로 사용할 수 있어서 편리하다

08

프로세스 계층 구조의 장점은?
여러 작업의 동시 처리, 용이한 자원의 회수, 재사용 용이

09

멀티스레드, 멀티태스킹, 멀티프로세싱, CPU멀티스레드를 비교하시오

  • 멀티스레드: 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄임
  • 멀티태스킹: 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법.
  • 멀티프로세싱: CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경. 하나의 컴퓨터에 여러 개의 CPU 혹은 하나의 CPU내 여러 개의 코어에 스레드를 배정하여 동시에 작동하는 것
  • CPU 멀티 스레드: 한번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법. 프로세스의 멀티스레드와 구분하기 위해 이 책에서는 이렇게 부른다.
profile
cut_the_mustard

0개의 댓글