본문 바로가기
답안지/쉽게 배우는 운영체제

[심화문제] PART 03 프로세스와 스레드

by upself 2022. 11. 14.
728x90
쉽게 배우는 운영체제

쉽게 배우는 운영체제

조성호

명쾌한 비유와 사례로 쉽게 배우는 운영체제의 구조와 원리 컴퓨터 관련 학과 학생을 대상으로 운영체제의 구조와 원리를 설명한 책이다. 주요 개념은 일상생활의 사례를 통해 쉽게 이해하고, 개념 간의 관계는 다양한 그림과 표로 명확히 정리할 수 있다. 20년 가까이 강의해온 저자의 내공이 고스란히 녹아 있어 복잡하고...

 

 

 

[심화문제]

 

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

그림으로 쉽게 배우는 운영체제

  • 생성 상태 : 프로그램이 메모리에 올라오고 운영체제로부터 프로세스 제어 블록을 할당받은 상태
  • 준비 상태 : 실행 대기 중인 모든 프로세스가 자기 순서를 가다리는 상태
  • 실행 상태 : 프로세스가 CPU를 할당받아 실행되는 상태
  • 대기 상태 : 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태
  • 종료 상태 : 프로세스가 종료되는 상태

 

 

2. 프로세스의 상태 중 휴식 상태와 보류 상태에 대해 설명하시오.
  • 휴식 상태 : 프로세스가 작업을 일시적으로 쉬고 있는 상태
  • 보류 상태 : 프로세스가 메모리에서 잠시 쫒겨난 상태

 

 

3. 프로세스 제어 블록의 구성에 대해 설명하시오.
포인터 프로세스 상태
프로세스 구분자
프로그램 카운터
프로세스 우선순위
각종 레지스터 정보
메모리 관리 정보
할당된 자원 정보
계정 정보
PPID와 CPID
.
.
.
  • 포인터 : 프로세스 제어 블록의 첫 번째 블록에는 포인터가 저장
  • 프로세스 상태 : 프로세스가 현재 어떤 상태에 있는지 나타냄
  • 프로세스 구분자 : 운영 제채 내에 있는 여러 프로세스를 구별하기 위해 구분자를 저장
  • 프로그램 카운터 : 다음에 실행될 명령어의 위치를 가리키는 프로그램 카운터의 값을 저장
  • 프로세스 우선순위 : 높은 우선순위의 프로세스가 낮은 우선순위의 프로세스보다 먼저 실행되고 더 자주 실행 됨
  • 각종 레지스터 정보 : 프로세스가 실행되는 중에 사용하던 레지스터의 값이 저장되며, 이전에 실행할 때 사용한 레지스터의 값을 보관해야 다음에 실행할 수 있기 때문에 자신이 사용하던 레지스터의 중간값을 보관
  • 메모리 관리 정보 : 프로세스가 메모리의 어디에 있는지 나타내는 메모리 위치 정보, 메모리 보호를 위해 사용하는 경계 레지스터 값과 한계 레지스터 값 등이 저장
  • 할당된 자원 정보 : 프로세스를 실행하기 위해 사용하는 입출력 자원이나 오픈 파일 등에 대한 정보
  • 계정 정보 : 계정정보, CPU 할당 시간, CPU 사용 시간 등
  • PPID와 CPID : 부모 프로세스(parent process, PPID)와 자식 프로세스(Child, CPID) 정보 저장

 

 

4. 문맥 교환에 대해 설명하시오.

두 프로세스의 프로세스 제어 블록 및 이와 관련된 값들을 교환하는 작업을 말한다. 일반적으로 문맥 교환은 한 프로세스가 자신에게 주어진 시간을 다 사용하면 발생하고, 인터럽트가 걸렸을 때 발생한다.

 

 

5. 프로세스를 구성하는 코드 영역, 데이터 영역, 스택 영역에 대해 설명하시오.
코드 영역 main() {
   int da=2, fa=3;
   printf("add %d \n", da+fa);
   exit();
}
읽기 전용
데이터 영역 int da=2, fa=3; 읽기/쓰기
스택 영역 Return address 180 숨김 영역
  • 코드 영역 : 프로그램의 본문이 기술된 곳으로 텍스트 영역, 프로그래머가 작성한 프로그램은 코드 영역에 탑재되며 탑재된 코드는 읽기 전용으로 처리됨
  • 데이터 영역 : 코드가 실행되면서 사용하는 변수나 파일 등의 각종 데이터를 모아 놓은 곳
  • 스택 영역 : 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아놓은 곳

 

 

6. fork() 시스템 호출의 장점을 설명하시오.
  • 프로세스의 생성 속도가 빠르다.
    • 하드디스크로부터 프로그램을 새로 가져오지 않고 기존 메모리에서 복사하기 때문에 자식 프로세스의 생성 속도가 빠름
  • 추가 작업 없이 자원을 상속할 수 있다.
    • 부모 프로세서가 사용하던 모든 자원을 추가 작업 없이 자식 프로세스에 상속할 수 있음
  • 시스템 관리를 효율적으로 할 수 있다. 
    • 부모 프로세스와 자식 프로세스가 자식 프로세스 구분자와 브모 프로세스 구분자로 연결되어 있기 때문에, 자식 프로세스를 종료하면 자식이 사용하던 자원을 부모 프로세스가 정리할 수 있음

 

 

7. exex() 시스템 호출을 사용하는 이유를 설명하시오.

프로세스의 구조체를 재활용하기 위해사용된다.

exec() 시스템 호출을 사용하면 이미 만들어진 프로세스 제어 블록, 메모리 영역, 부모-자식 관계를 그대로 사용할 수 있어 편리하다.

 

 

8.프로세스 계층 구조의 장점을 설명하시오.
  • 여러 작업의 동시 처리
  • 용이한 자원 회수

 

 

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

멀티스레드

  • 멀티스레드 : 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법

멀티태스킹

  • 멀티태스킹(시간 공유) : 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나우어 배분하는 기법

멀티프로세싱

  • 멀티프로세싱 : CPU를 여러 개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경

CPU 멀티스레드

  • CPU 멀티스레드 : 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법
멀티스레드 CPU 멀티스레드
운영체제가 소프트웨어적으로 프로세스를 작은 단위의 스레드로 분할하여 운영하는 기법 하드웨어적인 방법으로 하나의 CPU에서 여러 스레드를 동시에 처리하는 병렬 처리 기법

 

 

 

 

 

단순하게 살아라. 현대인은 쓸데없는 절차와 일 때문에 얼마나 복잡한 삶을 살아가는가?

-이드리스 샤흐
반응형