프로세스

devjune·2021년 10월 26일

운영체제

목록 보기
8/10

프로세스

code: 작성된 코드가 바이너리 코드로 변환되어 저장되는 공간
data: 선언된 변수 및 데이터가 저장되는 공간
heap: 메모리가 할당된 데이터(동적으로 만들어진 데이터)가 저장되는 공간(ex 자바 객체)
stack: 코드가 실행되면서 임시적으로 데이터가 저장되는 공간

프로세스 실행원리

EBP: 실행되는 코드 상단의 코드 주소값을 저장하는 공간으로 실행중 오류가 발생했을 때 어디에서 오류가 발생했는지 트래킹할 수 있도록 하는 역할을 함.

초기에 EBP에 저장된 주소값을 stack 공간에 할당.

최종적으로 EAX에 값이 저장된다.

프로세스와 힙

data에 malloc 함수를 이용하여 32bit공간을 할당하고, 할당된 공간에 1을 대입.
Heap영역에는 할당한 32bit공간이 있고 1이라는 값이 저장.
stack영역에 있는 data변수에는 heap영역을 참조할 수 있는 메모리 주소가 저장됨.

DATA영역은 다시 2가지 영역으로 나뉜다.

  1. BSS: 초기화 되지 않은 전역변수
  2. DATA: 초기값이 있는(초기화된) 전역변수

컨텍스트 스위칭 원리

PCB(Process Control Block): 프로세스의 상태(PC, SP) 정보를 저장하는 구조체

PBC를 이용하여 마지막까지 실행하였던 PC, SP주소값을 저장후 컨텍스트 스위칭이 일어나고,
다시 작업이 돌아왔을 경우 PCB를 참조하여 이전 작업을 이어서 실행할 수 있다.

프로세스간 커뮤니케이션

프로세스는 커널공간을 공유한다.

프로세스가 다른 프로세스에 접근하는 것은 많은 위험요소에 노출되기 때문에 원칙적으로 다른 프로세스의 공간 접근을 불허한다.

하지만, 프로세스간 통신은 다음과 같은 이유로 필요할 수 있다.

  • 성능을 높이기 위해 여러 프로세스를 만들어 동시 실행
  • 이 때 프로세스간 상태 확인 및 데이터 송수신이 필요

fork()
프로세스 자신을 복사하여 새로운 프로세스 생성 가능
예) 웹서버에서 client의 요청이 올 때 fork()함수를 실행하여 새로운 프로세스를 만들어 각 사용자 요청에 대응.

방법1. 파일을 이용하여 프로세스간 공유
단점. 실시간 데이터 전달 불가(물론 가능하지만 그렇게 하려면 실시간으로 파일을 읽고 있어야함.)

IPC기법의 종류
1. file사용
2. Message Queue: 키값을 이용하여 서로의 데이터를 주고받을 수 있다. 어느 프로세스간에도 통신 가능.
3. Shared Memory: 커널공간에 메모리공간을 만들고, 그 공간에서 데이터를 공유.
4. Pipe: 단방향 통신, fork()로 자식 프로세스를 만들면 ,부모 자식간 통신.

1번의 경우만 저장매체를 사용하고, 나머지 2~4는 커널공간을 사용한다.(*)

IPC기법은 아니지만, 특성을 이용하여 IPC기법처럼 사용할 수 있는 기술
1.시그널: 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었는지 알려주는 기법
이벤트 자체를 전달할 수 있다는 점을 착안.
(커널모드 -> 사용자모드 전환시 프로세스 내 PCB를 체크하여 작업 처리)

2.소켓(컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점)
소켓을 통해 데이터 통신을 하는 중에 자신의 기기에서 자신의 기기로 네트워크 데이터를 받아 다른 프로세스로 데이터를 전달.

profile
개발자준

0개의 댓글