프로세스

rin12·2020년 4월 21일
0

CSW

목록 보기
2/12
post-thumbnail
post-custom-banner

프로세스 (process)

현재 실행 중인 프로그램, 운영체제가 관리하는 실행의 단위

윈도우에서 엑셀을 실행 시키면 엑셀 창이 뜬다. 이 때, 엑셀 창을 하나의 프로세스라고 할 수 있다.

프로세스의 특징

  • 병행 실행이 가능하다 (프로세스 간 통신이 필요)
  • 하나의 프로그램이 여러 프로세스 생성이 가능하다
  • 각각 독립된 메모리 영역(코드, 데이터, 스택, 힙의 구조)과 주소 공간을 운영체제로부터 할당 받는다.

프로세스의 메모리 구조

Code : 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 영역

Data : 전역 변수나 static 변수의 할당을 위해 존재하는 공간

Stack : 지역 변수 할당과 함수 호출 시 전달되는 인자 값들을 저장하기 위한 공간

Heap : C의 malloc, callod와 C++, Javd의 new를 통한 동적 할당을 위해 존재하는 공간

프로세스 스케줄링

-> CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리
단어 그대로 스케줄! 스케줄을 관리하며 우선 순위를 매기듯 프로세스의 순서를 관리하고 차례대로 실행 하는 일

스케줄러의 종류

  • 장기 스케줄링 : 어떤 프로세스가 시스템 자원을 차지할 수 있도록 할 것인가를 결정하여 큐로 보내는 작업

  • 중기 스케줄링 : 어떤 프로세스들이 CPU를 할당 받을 것인지 결정하는 작업

  • 단기 스케줄링 : 프로세스가 실행되기 위해 CPU를 할당 받는 시기와 특정 프로세스를 지정하는 작업

프로세스 제어 블록 (PCB)

프로세스가 실행될 때마다 프로세스의 정보를 기록해 두는 특별한 자료구조

1) 프로세스를 구분하는 ID
2) 각 State들의 상태를 저장
3) 우선 순위, 최종 실행시간, CPU 점유시간 등이 포함
4) 다음 명령어 주소를 저장하는 카운터
5) 누산기, CPU 레지스터 등을 포함한다
6) 해당 프로세스 주소공간 정보를 저장
7) 프로세스를 위해 열려있는 파일 목록
8) 부모/자식 프로세스에 대한 포인터
9) 프로세스에 할당된 입출력 장치 목록
10) 스케줄링 큐 포인터, 소유자 등이 담겨있다

프로세스의 상태 텍스트(상태 전이)

  • 제출 : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
  • 접수 : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
  • 준비 : 프로세스가 프로세스를 할당 받기 위해 기다리고 있는 상태
  • 실행 : 준비 상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
  • 대기 : 프로세스에 입출력 처리가 필요하면 현재
    실행 중인 프로세스가 중단 되고, 입출력 처리가
    완료될 때까지 대기하고 있는 상태
  • 종료 : 프로세스의 실행이 끝나고 프로세스 할당이
    해제된 상태

Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가
프로세스를 할당 받아 실행 상태로 전이되는 과정
Wake Up : 입출력 작업이 완료 되어 프로세스가 대기 상태에서
준비 상태로 전이 되는 과정
*Spooling : 입출력 장치의 공유 및 상대적으로 느린 입출력 장치의 처리 속도를 보완

Plus Information

프로세스 통신 (IPC)

프로세스끼리 정보나 데이터를 서로 주고받는 방법. 커널에서 IPC를 위한 도구를 제공하며 시스템 콜의 형태로 제공된다.

필요성

  • 운영체제 내에서 실행되는 프로세스들은 독립적이거나 협력적일 수 있다. 프로세스 협력 모델을 구현하기 위헤 IPC는 필수이다.

통신 방법

  • Pipe : 한 쪽 방향으로 통신하는 반이중 통신
  • Message Queue : 다른 프로세스와 단 방향 통신하지만 여러 개의 프로세스가 동시에 데이터를 다룰 수 있음
  • Shared Memory : 프로세스 간 메모리 영역을 공유 (양 방향)
  • Socket : 컴퓨터끼리의 통신을 도와주기 위한 통신 계층. (양 방향, 동일 + 외부 시스템)

출처 구글

post-custom-banner

0개의 댓글