일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- context switching
- 알고리즘
- OS
- useState
- 운영체제
- codestates
- 자바
- 개발공부
- execution context
- 비동기
- 파이썬 알고리즘 인터뷰
- 자료구조
- 글또
- 코드스테이츠
- Operating System
- Computer Science
- 자바스크립트
- 파이썬
- react 기초
- node.js
- Zerobase
- typeScript
- 프로그래머스
- JavaScript
- python algorithm
- algorithm
- 컴퓨터공학
- Python
- java
- REACT
Archives
- Today
- Total
Back to the Basics
[Computer Science]-운영체제-프로세스 간 커뮤니케이션 본문
728x90
제로베이스 컴퓨터 공학자 따라잡기 온라인 완주반 강의를 듣고 정리한 포스팅
프로세스 간 커뮤니케이션 - InterProcess Communication (IPC) Overview
- 기본적으로 Process는 다른 Process의 공간을 접근할 수 없다. 만약 서로 공간을 쉽게 접근할 수 있다면 Process의 데이터나 코드가 바뀔 수도 있기 때문에 원칙적으로 프로세스 간의 공간 접근은 불가능하다.
- Process 간 통신이 필요하기 때문에 IPC(InterProcess Communication)라는 특별한 방법을 사용한다.
Process 간 통신이 필요한 경우
많은 CPU를 사용하는 경우 ( 대부분 그렇지만) Process 간 상태를 확인하고 데이터를 송, 수신할 수 있는 수단이 필요한다.
- fork() 시스템콜을 사용하는 경우 : fork() 시스템 콜은 fork()를 호출한 부모 프로세스를(자신을) 복사해서 새로운 자식 프로세스를 만든다. 멀티 코어가 있는 경우 프로세스를 fork()를 통해 여러 프로세스를 동시에 실행시킬 수 있다. 이를 병렬 처리라고 한다. 예를 들어 1
1000, 1001~2000... 을 더하고 수집 후 더하면 더욱 빠르게 처리할 수 있다.
10000까지 더할 때 fork() 함수로 10개 프로세스를 만들어서 각각 1 - 이때 값을 수집하기 위해 프로세스간 통신이 필요하다.
- 웹서버에서 Client - Server 간 통신 멀티 core를 사용할 경우, Client의 요청이 올 때마다 fork() 함수로 새로운 process를 만들면 각 사용자의 요청에 즉시 대응할 수 있다. 이때 각 process를 제어하고 상태, 정보를 교환하기 위해 process 간의 통신이 필요한다.
Process 간 communication을 하는 방법 IPC
- file을 사용한 커뮤니케이션 : 공유 저장매체를 이용한다.1~10000까지 더한다고 할 때 process1과 process2에서 계산한 결과를 공유가 가능한 저장매체에 저장하는 방법을 사용한다. 간단하게, 다른 프로세스에 전달할 내용을 file에 쓰고, 다른 프로세스가 해당 파일을 읽는 방식이다.
- 하지만, file을 사용하는 방법은 파일을 읽고 쓰는 실시간 프로세스 간 통신에 어려움이 있다. (System call → file open → 사용자 → kernel→ running→ ready 상태 변경...)
- file을 사용한 방법 외에 Mesage Queue , Shared Memory, Pipe, Signal, Semaphore, Socket... 등의 방법들이 있다. 이 방법들의 핵심은 Kernel 공간을 사용하는 것에 있다.
Kernal 공간은 아래와 같다 (실제 프로세스의 구조)
- 하나의 Process는 0~4Gb까지의 가상 주소를 갖는다. ( 내부적으로는 가상주소를 물리 주소로 바꾸는 기능이 있다. 이와 관련된 구체적인 내용은 가상 메모리 부분에서 더욱 다룬다)
- Kernel Space : 3-4Gb까지가 속한다. 운영체제의 code 등이 들어가는 부분이다.
- User Space : 0-3Bb로 실제 프로그램이 쓰는 공간이다.
- Kernel 공간은 공유가 가능한 물리 공간에 들어간다. ( 실제로 kernel 공간 중 물리 메모리에 들어가는 것은 일부이다)
이 Kernel 공간은 물리 메모리에 있고 (물리 메모리에 있어서 접근 시간이 짧다) 프로세스가 공유 가능한 공간이기 때문에 대부분의 IPC 기법은 커널 공간을 활용한다
728x90
'Computer Science' 카테고리의 다른 글
Computer Science-제로베이스-Process 정리 (0) | 2022.01.25 |
---|---|
Computer Science-제로베이스-IPC기법들 (0) | 2022.01.09 |
[Computer Science][제로베이스 ]-운영체제 - 프로세스 구조II - PCB & PC & SP (0) | 2021.12.24 |
[Computer Science][제로베이스 ]-운영체제 - 프로세스 구조- Stackoverfloew (0) | 2021.12.24 |
[Computer Science][제로베이스 ]-운영체제 - 프로세스 구조 (0) | 2021.12.14 |
Comments