2021. 2. 23. 00:00ㆍComputer(인강)/운영체제
안녕하세요 bannvi입니다^ㅅ^
이번시간에는 프로세스간 커뮤니케이션을 다뤄볼거에요
바로 시작하겠습니다^ㅅ^
사실 프로세스간 커뮤니케이션을 할 수 있는 직접적인 방법은 없습니다.
제한을 해놨어요. 남의 프로세스의 주소를 접근할 수 있는 방법은 제공을 하고 있지 않다는 말이에요.
-> 프로세스에 있는 코드가 다른 프로세스의 코드나 데이터에 접근 할 수 있게 된다면, 프로세스 데이터 코드가 바뀔 수 있으면 얼마나 위험할까요? 스택오버플로우를 생각해보면 이건 해킹에 가깝죠..!
그럴땐 어떻게 해야할까요?
바로, 특별한 IPC(Inter Process Communication) 기법을 사용해야해요
프로세스간 통신 방법을 제공한답니다
아니 근데,
프로세스간 통신이 필요한 이유는 뭘까요?
CPU의 core가 여러개 있죠 막, 8개 16개, 64개 등등요
각각의 core에 프로세스를 실행할 수 있도록 운영체제가 지원만 해준다면
여러가지 작업을 동시에 진행할 수 있기 때문에 실행속도가 굉장히 높아질 수 있거든요.
그래서 하나의 프로그램을 만들때 여러개의 프로세스를 만들어서 동시에 실행시키는 경우가 꽤 있습니다.
그러나,
그 결과들을 어떤 특정 프로세스가 다 모아서 최종 작업을 정리할 필요가 있겠고요
그렇다보니 IPC라는 프로세스간 통신 방법이 필요해지게 된 것이죠.
가볍게 생각해보기
fork() 시스템콜
- fork() 함수로 프로세스 자신을 복사해서 새로운 프로세스로 만들 수 있음(부모 프로세스, 자식 프로세스)
- 프로세스를 fork()해서, 여러 프로세스를 동시에 실행시킬 수 있음
CPU가 한개일때만 생각하지만, 최근에는 CPU안에 코어가 8개 되는 경우도 많고, 각 프로세스를 각 코어에 동시 실행 가능(병렬처리)
1부터 10000까지 더하기의 예도 있지만
웹서버, 클라이언트와 서버의 예도 있습니다.
웹서버란? 요청이 오면, HTML 파일을 클라이언트에 제공하는 프로그램
새로운 사용자 요청이 올 때마다, fork()함수로 새로운 프로세스를 만들고, 각 사용자 요청에 즉시 대응
- CPU 병렬 처리가 가능하다면, 더 빠른 대응이 가능
단, 이때 각 프로세스 제어 및 상태 정보 교환을 위해 프로세스간 통신 필요
일종의 IPC기법 중 하나로 파일을 사용한 커뮤니케이션을 이용할 수도 있습니다.
간단히 다른 프로세스에 전달할 내용을 파일에 쓰고, 다른 프로세스가 해당 파일을 읽으면 됨.
저장매체를 프로세스 간 공유하는 방법
하지만...
file을 사용하면 실시간으로 직접 원하는 프로세스에 데이터 전달이 어려움,(ex. update)
- 왜? 해당 프로세스가 파일을 읽어야 하는데.... 계속 실시간으로 읽고만 있을 수는 없으니..
그래서!
보다 다양한 IPC 기법이 존재함!!
이렇게 스포를 남겨놓고......!
이어서 다음 시간에 살펴볼게요^ㅅ^
'Computer(인강) > 운영체제' 카테고리의 다른 글
참고_IPC 기법 1 (0) | 2021.02.23 |
---|---|
프로세스와 IPC (0) | 2021.02.23 |
컨텍스트 스위칭 개념 정리 (0) | 2021.02.22 |
컨텍스트 스위칭 (0) | 2021.02.22 |
프로세스 구조와 스택 오버플로우 (0) | 2021.02.21 |