320x100
320x100

프로세스와 운영체제

스케줄링

- 프로세스가 생성되어 실행될 때 필요한 시스템의 자원을 할당하는 작업

- 대기시한을 최소화하고 공평성을 최대화하는 것이 목적

- 메모리에 여러 개의 프로세스를 올려놓고 (다중 프로그래밍) 

   CPU의 가동시간을 적절히 나누어 (시분할) 

   각각의 프로세스에 분배하여 실행

 

 

 

스케줄링의 종류

- 장기 (Long-Term Scheduling / 상위 스케줄링)

 : 어떤 프로세스가 시스템의 자원을 차지하게 할것인가를 결정하여 준비(ready queue) 상태 큐로 보내는 작업

 : 수행빈도가 적고 느림

 

- 중기 (Middle-Term Scheduling)

 : 어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업

 : CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 대기(wating) 시킨 후 활성화하여 일시적으로 부하를 조절

 : swap in / out 결정 (메모리 여유상태에 따름)

 => swap in <프로세스의 정보들을 주 메모리에서 보조 기억장치의 swap영역으로 옮기는 것>

 => swap out <프로세스의 정보들을 보조 기억장치의 swap영역에서 주 메모리로 옮기는 것>

 

- 단기 (Short-Term Scheduling / 프로세서 스케줄링 / 하위 스케줄링)

 : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업

 : 문맥교환과 함께 프로세서 스케줄러에 의해 수행

 : 자주 수행되며 빠름

 

출처 : https://velog.io/@hax0r/%EC%84%A0%EC%A0%90%EB%B9%84%EC%84%A0%EC%A0%90-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81

 

 

 

IPC (Inter Process Communication)

- 프로세스들 사이에 서로 데이터를 주고 받는 행위 및 경로

 : 프로세스간 데이터 교환으로, 데이터는 프로세스가 점유중인 메모리 공간에 적재

 

- IPC의 종류

 : 파이프 (PIPE)

 : 지명 파이프 (Named PIPE)

 : 메시지 큐 (Message Queue)

 : 공유 메모리 (Shared Memory)

 : 메모리 맵 (Memory Map)

 : 소켓 (Socket)

 

 

 

 

출처 https://doitnow-man.tistory.com/110

PIPE

- 익명의 가상 PIPE를 통하여 동일한 PPID를 가진 프로세스들 간의 단방향 통신 지원

 

- 구조 : FIFO구조 / 생성된 PIPE에 대하여 Write 또는 Read만 가능

 

- 공유매개체 : 파일

 

- 통신단위 : Stream

 

- 통신방향 : 단방향

 

- 통신가능 범위 : 동일 시스템

 

- 사용시기 : 부모 자식 프로세스간 통신시

 

- 유의사항 : 쌍방 통신을 위해서는 write용 PIPE와 Read용 PIPE를 만들어야함

 

 

 

 

 

출처 https://doitnow-man.tistory.com/110

Named PIPE

- 이름을 가진 PIPE를 통해 서로 다른 프로세스 간의 단방향 통신 지원

 

- 구조  : FIFO구조 / 생성된 PIPE에 대해 Write 또는 Read만 가능

 

- 공유매개체 : 파일

 

- 통신단위 : stream

 

- 통신방향 : 단방향 

 

- 통신가능 범위 : 동일 시스템

 

- 사용시기 : 서로 다른 프로세스의 단방향 통신시

 

- 유의사항 : 쌍방 통신을 위해서는 write용 PIPE와 Read용 PIPE를 만들어야함

 

 

 

 

 

 

출처 https://doitnow-man.tistory.com/110

Message Queue

- 메모리를 사용한 PIPE통신으로, 구조체를 기반으로 통신

 

- 구조  : FIFO 구조 / msgtype에 따라 다른 구조체를 통해 통신 가능

 

- 공유매개체 : 메모리

 

- 통신단위 : 구조체

 

- 통신방향 : 단방향

 

- 통신가능 범위 : 동일 시스템

 

- 사용시기 : 프로세스간 다양한 통신시

 

- 유의사항 : 커널에서 제공하는 방법이기 때문에 EnQueue에 제약 존재

 

 

 

 

 

 

출처 https://doitnow-man.tistory.com/68

Shared Memory

- 시스템 상의 공유메모리를 통한 통신

※ 공유메모리 : 여러 프로그램이 동시에 접근할 수 있는 메모리 공간 (커널에서 관리)

 

- 구조 : 일정 크기의 메모리를 프로세스끼리 공유 하는 구조

 

- 공유매개체 : 메모리

 

- 통신단위 : 구조체

 

- 통신방향 : 양방향

 

- 통신가능 범위 : 동일 시스템

 

- 사용시기 : 프로세스간 Read, Write가 모두 필요할때

 

- 유의사항 : 프로세스간 Shared memory의 크기가 동일해야 함

 

 

 

 

 

 

 

출처 : https://doitnow-man.tistory.com/110

Memory Map

- 파일을 프로세스가 사용중인 메모리에 Mapping시켜 사용하는 기법 

※ Mapping : 하나의 값을 다른 갑승로 대응 시키는 것

                : 여기서는 파일을 프로세스의 가상메모리 공간에 적재한다는 의미로 해석

 

- 구조 : 메모리 맵 파일에 매핑된 메모리 주소에 접근하여 파일의 Read / Write를 하는 것

 

- 공유매개체 : 파일 + 메모리

 

- 통신단위 : 페이지(Page)

※ 페이지 : 가상 메모리를 블록단위로 나눈 것

 

- 통신방향 : 양방향

 

- 통신가능 범위 : 동일 시스템

 

- 사용시기 : 파일을 통한 대용량 데이터 공유시

               : 고속의 FILE 입출력이 필요할때

               : 대부분의 운영체제에서 프로세스를 실행할때 세그먼트를 메모리에 적재하기 위해

※ 세그먼트 

 : 프로세스가 사용할 메모리 영역을 나눈 단위 (코드/데이터/힙/스택)

 : 운영체제의 세그먼트 테이블을 통해 시작주소와 길이를 결정

 

- 유의사항 : Write는 프로세스의 페이지가 메모리에서 해제되었을때 작동

               : 위 이유로 인해 메모리와 file간의 sync가 안맞을 수 있음

 

 

 

 

 

 

출처 https://doitnow-man.tistory.com/110

Socket

- 네트워크 소켓통신을 이용한 데이터 공유

 

- 구조 : 네트워크 소켓을 이용하여 Client-Server 구조로 데이터 통신

 

- 공유매개체 : 소켓

※ 소켓

 : 네트워크상에서 동작하는 프로그램 간 통신의 종착점 (Endpoint - IP와 Port번호의 조합의 목적지)

 : 프로그램이 네트워크에서 통신을 할 수 있도록 연결해주는 연결부

 

- 통신단위 : Stream

 

- 통신방향 : 양방향

 

- 통신가능 범위 : 동일 시스템, 외부 시스템

 

- 사용시기 : 원격환경에서 프로세스간 데이터 공유시 사용

 

- 유의사항 : 데이터 세그먼트 처리에 대한 지식 필요

               : 네트워크 프로그래밍 필요

 

 

 

 

참조

 

[프로세스간 통신] IPC(inter process communication) 종류

[프로세스간 통신] IPC(inter process communication) 종류 (Linux) 1. IPC의 종류 1) PIPE 2) Named PIPE 3) Message Queue 4) Shared Memory 5) Memory Map 6) socket 2. IPC 별 사용 시기 및 특징 IPC 종류  ..

doitnow-man.tistory.com

 

300x250
728x90

'Computer Science > OS' 카테고리의 다른 글

CPU - 산술 연산 장치 (ALU)의 구조와 기능  (0) 2021.02.05
CPU의 구조와 명령어 수행 과정  (0) 2021.02.05
스레드  (0) 2021.02.03
프로세스와 메모리  (0) 2021.02.03
프로세스와 CPU  (0) 2021.02.03