본문 바로가기
2023-1/운영체제

Process and Scheduling 2

by 철없는민물장어 2023. 3. 31.
728x90

Process Termination

 

프로세스가 종료될 때 프로세스의 자원을 운영체제에 반납해야 한다.

 

부모 프로세스는 다음과 같은 상황에서 자식 프로세스를 비정상종료 시킬 수 있다.

-자식이 할당된 자원 이상을 건들 때

-자식이 더이상 필요 없을 때

 

부모가 종료되면 자식은 더이상 수행하지 않고 종료된다. 

이 때, 자식 프로세스가 종료되지 않으면 고아,좀비 프로세스가 된다.

 

좀비 프로세스: 메모리의 context는 이미 삭제되었지만 몇 정보들이 남아있다.(PID, exit status, CPU usage: 이들은 부모가 자식 처리를 위해 필요한 정보들임)

wait시스템 콜로 자식의 exit tatus를 읽으면 좀비는 없어짐...

 

좀비/고아 프로세스는 init process(PID 1)이 주기적으로 관리



  • Independent process
  • Cooperating process

독립적 프로세스는 다른 프로세스와 데이터나 자원을 공유하지 않고 실행되는 프로세스이다.

반면, 상호협력적 프로세스는 다른 프로세스와 데이터나 자원을 공유하고 서로간에 협력하여 작업을 수행한다.

상호협력적 프로세스는 특정 작업을 나누어 처리하거나 서로 다른 프로세스 간에 정보를 교환하는 데 사용된다. 이러한 프로세스는 통신,동기화 및 공유 자원 관리와 같은 상호 작용을 처리할 수 있어야 한다. 

 

Advantages of process cooperation

  • Information sharing
  • Computation speed-up
  • Modularity
  • Convenience

Producer-Consumer Problem

 

두 개 이상의 프로세스나 스레드가 공유 자원에 접근할 때 발생하는 문제.

producer는 데이터를 생성하고 공유 버퍼에 넣는다.

consumer는 공유 버퍼에서 데이터를 가져와 사용한다.

 

이 때 producer는 버퍼가 가득 찬 경우에 더이상 데이터를 추가하지 말아야 하고

consumer는 버퍼가 비어있을 때 데이터를 가져와서는 안 된다.

 

(버퍼사이즈가 무한대의 크기면 producer는 고려할 게 없지만, 보통 버퍼사이즈는 고정값이다.)

 

그래서, integer counter를 도입하여 buffer에 데이터를 쓰거나 가져다 쓸 때마다 카운터값을 증감시켜 버퍼의 데이터 수를 트래킹한다.

 


Race Condition

 

여러 프로세스가 공유 자원에 동시에 접근할 때 발생하는 동기화 문제이다.

프로세스의 실행 순서나 타이밍에 따라 결과가 달라지게 되어 원치 않는 결과나 시스템 오류를 초래하게 된다.

 

공유데이터 쓰기연산인 경우 동기화(synchronization)가 필요하다.

 


Interprocess Communication (IPC)

 

프로세스 간 통신.

 

독립적인 프로세스들 간에 데이터를 주고받거나 공유하기 위한 방법이다.

통신,동기화를 위해 IPC메커니즘이 필요하다.

 

IPC는 두가지 타입이 있다.

  • Direct Communication
  • Indirect Communication

 

Direct Communication

두 프로세스가 서로 직접적으로 데이터를 주고받는 방식이다. 

각 프로세스는 통신하려는 상대 프로세스를 명시적으로 식별하고, 상대 프로세스와의 연결을 직접 설정하여 통신을 수행한다.

 

Indirect Communication

공유되는 메일박스를 이용함.


Synchronization

 

Blocking is considered synchronous

Non-Blocking is considered asynchronous

 

Buffering

버퍼링(buffering)은 데이터를 일시적으로 저장하는 메모리 영역인 버퍼(buffer)를 사용하여 데이터 전송이나 처리를 보다 효율적으로 수행하는 기술입니다

728x90

'2023-1 > 운영체제' 카테고리의 다른 글

Thread  (0) 2023.04.18
CPU scheduler  (0) 2023.04.05
Process and Scheduling  (0) 2023.03.16
Storage Structure/Multiprogramming/Multitasking/process/memory/file  (0) 2023.03.13
Computer System Organization(Bus, Interrupt)  (0) 2023.03.09

댓글