패스트캠퍼스

[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 43회차 미션

돌맹이시터 2020. 11. 30. 19:02

 

 

환급미션 43일째..

 

 

 

운영체제 - 프로세스와 스케쥴러의 이해 - 15. 컨텍스트 스위칭 개념 정리

운영체제 - 프로세스와 스케쥴러의 이해 - 16. 프로세스 간 커뮤니케이션

운영체제 - 프로세스와 스케쥴러의 이해 - 17. 프로세스와 IPC

 

 

 

 

 

- 프로세스와 컨텍스트 스위칭

 

context switching (문맥 교환)

- cpu에 실행할 프로세스를 교체하는 기술

•실행 중지할 프로세스 (프로세스1) 정보를 해당 프로세스의 PCB 정보를 메인 메모리에 저장

•다음 실행할 프로세스 (프로세스2) 정보를 메인 메모리에 있는 해당 PCB 정보 (PC, SP 등)를 CPU에 넣고 실행

( 레코드판을 돌리면서, 핀의 위치를 바꾼다는 느낌 )

 

 

*디스패치 (dispatch) : ready 상태의 프로세스 -> running 상태로 바꾸는 것.

 

*컨텍스트 스위칭 시간이 길어지면 오히려 의미가 없어지기 때문에 되도록 스위칭 시간을 줄일 필요가 있다.

 

• 초기 컴퓨터 프로그램들은 어셈블리어로 작성

-> 서로 다른 cpu 아키텍처가 등장할 때마다 매번 똑같은 프로그램을 다시 작성 (이식성이 떨어진다)

-> 어셈블리어로는 프로그램 작성 속도는 떨어진다.

 

• 컴파일러 등장

-> cpu 아키텍처에 따라 컴파일러 프로그램만 만들면 됨(기존 코드 재작성 필요없음, 이식성이 높다.)

-> 어셈블리어로 작성한 코드보다는 속도가 떨어질 수 있음

 

=> 어셈블리어로 컨텍스트 스위칭 코드를 작성하면, 스위칭 시간이 줄어들 수 있지만, 프로그램 작성하는데 오래 걸릴 수 있다.

 

 

 

 

 

- 프로세스 간 커뮤니케이션 (InterProcess Communication) = IPC 기법

 

 

기본적으로 프로세스는 다른 프로세스의 공간에 접근할 수 없다.

IPC 기법으로 프로세스 간 통신 방법을 제공한다.

 

•성능향상을 위해 멀티 프로세스를 만들어서 동시에 실행

-> 프로세스 간 상태 확인 및 데이터 송수신 필요

 

 

fork() 시스템콜

•fork()함수로 프로세스 자신을 복사해서 새로운 프로세스로 만들 수 있다.

-> 부모 프로세스, 자식 프로세스

•프로세스를 fork해서, 여러 프로세스를 동시에 실행시킬 수 있다.

 

ex) 1~10000까지 더하기

fork()함수로 프로세스를 10개 만들어서 각각 1~1000, 1001~2000, ... 등의 연산을 각각 수행

각각의 연산결과를 모두 더하면, 더 빠르게 동작 가능하다.

-> 각 프로세스의 연산결과를 수집해야 하므로, 프로세스 간 통신이 필요

 

 

ex) 웹서버 

 

웹서버에 요청이 오면, HTML 파일을 클라이언트에 제공

새로운 사용자 요청이 올 때마다, fork() 함수로 새로운 프로세스를 만들어 각 요청에 즉각적으로 대응

-> 프로세스 제어 및 상태 정보 교환을 위해 프로세스 간 통신이 필요

 

 

ex)

프로세스 간 저장매체 공유 (file 사용)

 

실시간으로 직접 원하는 프로세스에 데이터 전달을 하기엔 어려운 점이 있다.

(해당 프로세스가 파일을 읽어야 하는데, 실시간으로 계속 읽고 있을 수 없기 때문)

 

 

 

 

* 실제 프로세스 : 리눅스 예시

 

(실제 물리 메모리의 공간과는 다른 가상메모리 주소를 사용한다. 앞선 내용들에서도 모두 마찬가지)

 

프로세스 간 공간은 완전히 분리되어 있고,

위의 예제에서는 0~3Gb : 실제 프로그램이 쓰는 공간, 3~4Gb 운영체제 코드가 들어가는 공간으로 부여되었다.

사용자 모드에서는 커널 공간에 접근이 불가능하다.

 

 

커널 공간은 공유하게 된다.

구체적인 내용은 가상 메모리 강의시간에 다루게 될 예정

 

 

 

 

 

 

* 다양한 IPC 기법

 

1. file 사용 - 실시간성이 떨어지고, 저장매체를 통하기 때문에 시간이 오래 걸림

 

2. Message Queue

3. Shared Memory

4. Pipe

5. Signal

6. Semaphore

7. Socket

...

 

2번부터는 모두 커널 공간을 사용한다. (핵심내용)

(커널 공간은 실제 물리 메모리 공간을 사용)

 

 

 

 

 

 

정리

 

여러 프로세스 동시 실행을 통한 성능 개선, 복잡한 프로그램을 위해 프로세스 간 통신이 필요

프로세스 간 공간이 완전히 분리되어있다.

프로세스 간 통신을 위한 특별한 기법 필요 - IPC(InterProcess Communication)

대부분의 IPC 기법은 결국 커널 공간을 활용하는 것 ( 커널 공간은 공유하기 때문 )

 

 

 

 

 

 

올인원 패키지 : 컴퓨터 공학 전공 필수👉https://bit.ly/3i4sCVE