프로세스와 운영체제
스케줄링
- 프로세스가 생성되어 실행될 때 필요한 시스템의 자원을 할당하는 작업
- 대기시한을 최소화하고 공평성을 최대화하는 것이 목적
- 메모리에 여러 개의 프로세스를 올려놓고 (다중 프로그래밍)
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를 할당받는 시기와 특정 프로세스를 지정하는 작업
: 문맥교환과 함께 프로세서 스케줄러에 의해 수행
: 자주 수행되며 빠름
IPC (Inter Process Communication)
- 프로세스들 사이에 서로 데이터를 주고 받는 행위 및 경로
: 프로세스간 데이터 교환으로, 데이터는 프로세스가 점유중인 메모리 공간에 적재
- IPC의 종류
: 파이프 (PIPE)
: 지명 파이프 (Named PIPE)
: 메시지 큐 (Message Queue)
: 공유 메모리 (Shared Memory)
: 메모리 맵 (Memory Map)
: 소켓 (Socket)
PIPE
- 익명의 가상 PIPE를 통하여 동일한 PPID를 가진 프로세스들 간의 단방향 통신 지원
- 구조 : FIFO구조 / 생성된 PIPE에 대하여 Write 또는 Read만 가능
- 공유매개체 : 파일
- 통신단위 : Stream
- 통신방향 : 단방향
- 통신가능 범위 : 동일 시스템
- 사용시기 : 부모 자식 프로세스간 통신시
- 유의사항 : 쌍방 통신을 위해서는 write용 PIPE와 Read용 PIPE를 만들어야함
Named PIPE
- 이름을 가진 PIPE를 통해 서로 다른 프로세스 간의 단방향 통신 지원
- 구조 : FIFO구조 / 생성된 PIPE에 대해 Write 또는 Read만 가능
- 공유매개체 : 파일
- 통신단위 : stream
- 통신방향 : 단방향
- 통신가능 범위 : 동일 시스템
- 사용시기 : 서로 다른 프로세스의 단방향 통신시
- 유의사항 : 쌍방 통신을 위해서는 write용 PIPE와 Read용 PIPE를 만들어야함
Message Queue
- 메모리를 사용한 PIPE통신으로, 구조체를 기반으로 통신
- 구조 : FIFO 구조 / msgtype에 따라 다른 구조체를 통해 통신 가능
- 공유매개체 : 메모리
- 통신단위 : 구조체
- 통신방향 : 단방향
- 통신가능 범위 : 동일 시스템
- 사용시기 : 프로세스간 다양한 통신시
- 유의사항 : 커널에서 제공하는 방법이기 때문에 EnQueue에 제약 존재
Shared Memory
- 시스템 상의 공유메모리를 통한 통신
※ 공유메모리 : 여러 프로그램이 동시에 접근할 수 있는 메모리 공간 (커널에서 관리)
- 구조 : 일정 크기의 메모리를 프로세스끼리 공유 하는 구조
- 공유매개체 : 메모리
- 통신단위 : 구조체
- 통신방향 : 양방향
- 통신가능 범위 : 동일 시스템
- 사용시기 : 프로세스간 Read, Write가 모두 필요할때
- 유의사항 : 프로세스간 Shared memory의 크기가 동일해야 함
Memory Map
- 파일을 프로세스가 사용중인 메모리에 Mapping시켜 사용하는 기법
※ Mapping : 하나의 값을 다른 갑승로 대응 시키는 것
: 여기서는 파일을 프로세스의 가상메모리 공간에 적재한다는 의미로 해석
- 구조 : 메모리 맵 파일에 매핑된 메모리 주소에 접근하여 파일의 Read / Write를 하는 것
- 공유매개체 : 파일 + 메모리
- 통신단위 : 페이지(Page)
※ 페이지 : 가상 메모리를 블록단위로 나눈 것
- 통신방향 : 양방향
- 통신가능 범위 : 동일 시스템
- 사용시기 : 파일을 통한 대용량 데이터 공유시
: 고속의 FILE 입출력이 필요할때
: 대부분의 운영체제에서 프로세스를 실행할때 세그먼트를 메모리에 적재하기 위해
※ 세그먼트
: 프로세스가 사용할 메모리 영역을 나눈 단위 (코드/데이터/힙/스택)
: 운영체제의 세그먼트 테이블을 통해 시작주소와 길이를 결정
- 유의사항 : Write는 프로세스의 페이지가 메모리에서 해제되었을때 작동
: 위 이유로 인해 메모리와 file간의 sync가 안맞을 수 있음
Socket
- 네트워크 소켓통신을 이용한 데이터 공유
- 구조 : 네트워크 소켓을 이용하여 Client-Server 구조로 데이터 통신
- 공유매개체 : 소켓
※ 소켓
: 네트워크상에서 동작하는 프로그램 간 통신의 종착점 (Endpoint - IP와 Port번호의 조합의 목적지)
: 프로그램이 네트워크에서 통신을 할 수 있도록 연결해주는 연결부
- 통신단위 : Stream
- 통신방향 : 양방향
- 통신가능 범위 : 동일 시스템, 외부 시스템
- 사용시기 : 원격환경에서 프로세스간 데이터 공유시 사용
- 유의사항 : 데이터 세그먼트 처리에 대한 지식 필요
: 네트워크 프로그래밍 필요
참조
'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 |