2022-03-14

한꼬북·2022년 3월 14일
0

정리

목록 보기
1/2
post-thumbnail

1. 프로세스 구조에 대한 설명

먼저 프로세스란 간단하게는 프로그램을 더블클릭해 실행중인 프로그램을 말하며 좀 더 구체적으로는
생명이 없는 프로그램을 메모리에 적재되어 연속적으로 실행되고 있는 프로그램이다.

프로세스의 구조는 Text(Code), Data, Heap, Stack 공간이 있으며 아래 그림을 보며 참고하면 된다.

  • Text(Code) = 개발자가 작성한 코드들이 기계어로 컴파일 돼 저장된 곳으로 코드 자체를 구성하는 영역이다.

  • Data = 전역 변수, static 변수, 배열, 구조체들이 저장되며 따지자면 초기화 되지 않은 데이터들은 bss라는 영역에 저장된다.

  • Heap = malloc(), new()함수로 개발자에 의해 동적으로 할당된 변수들이 저장되는 영역

  • Stack = 지역 변수, 매개 변수, 함수 호출의 리턴 값 처럼 임시로 사용됐다가 사라지는 데이터들이 저장되는 영역이다.

    	참고 : 사실 Heap과 Stack은 같은 영역을 공유하여 사용한다고 한다. 그렇기 때문에 Heap 또는 Stack이 서로의 공간을 침범한다면 Stackoverflow, heapoverflow 가 발생할 수 있다.


2. 컨텍스트 스위칭에 대한 설명

Context Switching은 하나의 프로세스가 실행되고 있는 상태에서 인터럽트에 의해 다른 프로세스를 실행되야 할 경우 기존 실행되고 있던 프로세스의 PC(Program counter), SP(Stack Pointer)를 PCB(Process Control Block)에 업데이트해 메인 메모리에 저장되고 대기상태로 변한다.
그 다음 새로운 프로세스의 PCB정보를 CPU의 레지스터에 넣어 실행하고 두 프로세스를 번갈아가며 대기<->실행하는 것을 말한다. (A프로세스와 B프로세스를 번갈아 가며 실행)

  • 컨텍스트 스위칭에 단점은 컨텍스트 스위칭이 일어날 때 PCB에 접근하여 저장, 로드할 때 CPU 는 다른 일을 처리할 수 없어 너무 잦은 컨텍스트 스위칭이 일어날 경우 오버헤드가 발생하여 성능이 떨어진다.

    	참고 : PCB에는 프로세스의 상태, PC, SP, PID(프로세스 아이디) 등이 저장된다.

3. 프로세스간의 통신은 어떻게 하는지?

프로세스는 서로의 데이터에 접근할 수 없지만 커널 공간을 공유하기 때문에 커널공간을 이용한 IPC(Inter Process Communication)기법을 통해 프로세스간의 통신을 할 수 있다.
IPC 기법의 종류는 아래 표를 참고하자.(https://doitnow-man.tistory.com/110)

profile
오히려 좋아, 자 가보자고!

0개의 댓글