운동하는 공대생

[OS(운영체제)] 운영체제 프로세스 본문

OS

[OS(운영체제)] 운영체제 프로세스

운동하는 공대생 2024. 7. 31. 11:18
728x90
반응형

1. 프로세스

프로세스(process)란 실행 중인 프로그램을 의미합니다. 운용체제 영역에서 각각의 프로세스를 관리하기 위해서는 Process Control Block(PCB)라는 것을 두고 프로세스에 대한 정보를 보관한다.

 

 

 

2. 프로세스 상태 관리

기본

  • 생성 상태 : PCB 를 생성하고 작업 큐에 넣는다. 이때 프로세스 번호(PIC)가 결정된다. 이후에 준비 상태로 넘어간다.
  • 준비 상태 : 프로세스는 준비 큐(ready queue)에 머물고 있다가 스케줄러에 의해 선택되면 CPU에 할당받는다. CPU에 할당하는 과정을 디스패치(dispatch)라고 한다.
  • 실행 상태 : CPU가 프로세스의 명령을 처리하며 처리되다가 스케줄러가 준비 큐에서 다른 프로세스를 선택하게 된다면 실행중인 프로세스는 회수당하며 준비 상태로 전이된다. 이때 I/O 같은 작업을 필요로 한다면 대기 상태로 넘어간다.
  • 완료 상태 : 프로세스가 모두 종료되면 이 상태로 넘어가고 각종 자원을 회수한다.

 

지연상태 

 

 

 

 

3. 부모 프로세스와 자식 프로레스

부모 프로세스는 시스템 호출을 하는 프로세스로서 시스템 호출을 통해 새로 생성된 프로세스를 자식 프로세스라고 한다. fork() 연산을 통해서 시스템을 호출하면 자식 프로세스를 생성한다.  하지만 다른 프로그램을 실행시키기 위해서는 exec() 함수를 실행한다.

 

예시

4. Context Switch

CPU에서 한개의 프로세스를 다른 프로세스로 변경하는 방식

  • saving and restoring register and memory maps
  • flushing and reloading the memory cache
  • updating various tables and lists

=> 여기서 오버헤드가 발생을 하기 때문에 위와 같은 이유로 발생하기 때문에 다양한 하드웨어로 이것을 해결한다.

(100s or 1000s of switches/sec typically)

 

5. Example of UNIX process

 

 

fork()

  • 새로운 process를 생성(new PCB)하여 parent process를 복사한다.
  • parent procss에서 사용하는 만큼의 주소 공간과 메모리를 복사한다. 
  • fork()를 하고 parent는 child가 exit() 할 때까지 기다린다.
  • 새로운 PCB를 ready queue에 위치시킨다.
  • child's PID를 parent process에 전달한다.(child PID = 0)

exec()

  • 현재 실행되고 있는 프로세스를 새로운 이미지로 변경

exit()

  • 프로세스를 종료합니다.

kill()

  • 프로세스에 신호를 보내서 바로 종료

wait()

  • 상태가 변화하는 것을 기다리면 child process의 상황이 변할때 까지 대기한다.

 

 

Process Termination

  • Normal exit
  • Error exit
  • Fatal error
  • Killed by another process
  • Zombie process(종료가 되더라도 삭제는 되지 않는다.)

 

 

6. Process State Queues

이전에서 설명을 하였지만 Process의 상태 변화에서 각각의 state에 맞는 queue가 OS에서는 존재한다.

 

Ready queue

실행이 가능한 process들을 담아둔다.

 

Wait queue 

각각의 이벤트들을 위한 queue로서 device, timer, message 등등에 맞게 queue가 존재한다.

 

7. Inter-Process Communication

서로 관련된 process들은 서로 소통이 필요하다. 이런 방식에 따라서 두가지 모델로 나뉜다.

 

Message passing

 

Shared memory

 

 

Message passing 방식은 다른 queue 구조를 추가하여 매번 시스템 골을 호출하고 오버헤드가 많다. 그래서 shared memory방식을 통해서 이를 해결하고자 하였다.

 

 

 

 

 

 

728x90
반응형
Comments