본문 바로가기
Computer Science/Operating System

🚗Process

by HaningYa 2020. 6. 16.
728x90

프로세스란

  • 실행 중인 프로그램이며 프로세스의 현재 활동 상태는 프로그램 카운터와 다른 레지스터로 나타난다.
  • 현대 컴퓨팅 시스템의 작업 단위이다.

*프로그램: 명령어 리스트를 내용으로 가진 디스크에 저장된 파일
*프로세스 자체가 다른 개체를 위한 실행 환경으로 동작할 수도 있다.


프로세스의 메모리 레이아웃

스택 - 함수를 호출할 때 임시 데이터 저장장소(함수 매개변수, 복귀주소, 지역변수)
(아래로 메모리 확장됨)
(스택과 힙 메모리가 만나면 안됨)
(위로 메모리 확정됨)
- 프로그램 실행 중 동적으로 할당되는 데이터
데이터 - 전역변수
텍스트 - 실행코드

  1. 프로세스 상태
  2. 준비
  3. 실행
  4. 대기
  5. 종료

프로세스 제어 블록 PCB

PCB

운영체제의 프로세스를 나타내는 커널 데이터 구조

프로세스 상태
프로그램 카운터
CPU 레지스터
CPU 스케쥴링 정보
메모리 관리 정보
회계정보 
입출력 상태 정보

 


다중 프로그래밍의 목적

CPU 활용을 최대화 하기 위해 항상 어떤 프로세스가 실행되도록 보장
*다중 프로그래밍의 정도: 현재 메모리에 있는 프로세스 수


시분할의 목적

각 프로그램이 실행되는 동안 사용자가 상호작용 할 수 있도록 프로세스들 사이에서 CPU 코어를 빈번하게 교체하는것.


프로세스 스케줄러의 역할

CPU에서 실행할 수 있는 사용 가능한 프로세스를 선택하는 것


문맥교환

운영체제는 한 프로세스 실행에서 다른 프로세스 실행으로 전환할 때 문맥 교환을 수행한다.


좀비 프로세스

부모가 자식을 관리하지 않아서 발생하는 프로세스
자식에게 리턴을 받지 않고 종료


고아 프로세스

부모 프로세스가 자식 프로세스보다 빨리 종료된 프로세스


프로세스 생성

  • UNIX: fork()
  • Windows: CreateProcess()

프로세스간 통신 방법(IPC)

  • 독립적 프로세스
  • 협력적 프로세스
    • 정보공유: 복사-붙여넣기
    • 계산 가속화: 서브 태스크로 나눠 병렬로 실행
    • 모듈성: 시스템 기능을 별도의 프로세스들 또는 스레드로 나누어 모듈식으로 구성하길 원할 때
  1. 공유 메모리
    : 공유 메모리 영역은 구축할 때 만 시스템 콜이 필요하고 그 후 모든 접근은 일반적인 메모리 접근으로 취급되어 커널이 필요없다.
  2. 메시지 전달
    : 충돌을 회피할 필요가 없어 작은 양의 데이터를 교환 분산 시스템에서 공유 메모리보다 구현하기 쉽다. 시스템 콜을 사용하기 때문에 부가적인 시간 소비작업이 필요해 느리다.

  3. 파이프
  4. 클라이언트-서버

메시지 전달에서 IPC

  • 직접통신: 서로의 이름을 명시, 하드코딩
  • 간접통신: 메일박스 또는 포트에 송신되고 그것으로 부터 수신된다.

  • 동기식: 메일박스에 의해 수신될 때 까지 봉쇄
  • 바돟기식: 송신 프로세스가 메시지를 보내고 작업을 재시작

*mailbox: 추상적으로 프로세스에 의해 메시지가 넣어지고 메시지들이 제거될 수 있는 객체


UNIX 파이프

  • 일반 파이프: 부모-자식 관계에 있는 프로세스 간의 통신을 위해 설계되었다. 읽기 종단과 쓰기 종단이 있다. 
  • 지명 파이프: 일반적이고 여러 프로세스가 통신할 수 있다.

Windows 파이프

  • 익명 파이프: 일반 파이프와 유사하다. 단방향이며 부모-자식 관계여야 한다.
  • 지명 파이프: UNIX에 대응되는 FIFO보다 풍부한 프로세스 간 통신 방식을 제공한다.

클라이언트-서버

  • 소켓: 다른 시스템의 두 프로세스가 네트워크를 통해 통신할 수 있다.
  • 원격 프로시저 호출(RPC): 다른 컴퓨터에 있는 프로세스에서 함수를 호출할 수 있는 방식으로 함수(프로시저) 호출 개념을 추상화 한다.

 

728x90

'Computer Science > Operating System' 카테고리의 다른 글

🌌운영체제 구조  (0) 2020.06.17
🥓Thread  (0) 2020.06.16
🚀CPU 스케줄링 알고리즘  (0) 2020.06.16
OS #1 - Operating System Introduction.  (0) 2020.04.20

댓글