쿠쿠의기록

[OS] - 운영체제 (프로세스 관리) 본문

개발에 대한 기본 지식/운영체제

[OS] - 운영체제 (프로세스 관리)

쿠쿠트레인 2023. 12. 1. 09:58

- 목차 - 

1. 프로세스의 개념
2. 프로세스의 상태
3. 프로세스 제어 블록
4. 문맥교환
5. 프로세스를 스케줄링하기 위한 큐
6. 스케줄러
7. 프로세스의 생성
8. 프로세스 간의 협력

 

1. 프로세스의 개념

  • 프로세스
    • 실행 중인 프로그램 의미
    • (프로그램 코드 + 데이터 + PCB)
       프로그램 코드 => 식별자, 상태 등 여러 문맥정보 필요
    • 위 정보들 PCB(Process Control Block : 제어블록)라는 자료구조에 담아 관리
  • PCB에 저장된 정보
    • 식별자
    • 프로세스의 상태
    • PC(Program Counter)
    • 메모리 포인터 : 프로그램 코드, 데이터등의 메모리상의 주소
    • Context data
    • I/O state : 프로세스에 할당된 I/O장치, 및 이벤트 정보
    • Accounting information : 리소스 사용률 등의 모니터링 정보

2. 프로세스의 상태

  • New: 프로그램이 메인 메모리에 할당
  • Ready: 할당된 프로그램이 초기화와 같은 작업을 통해 실행되기 위한 모든 준비를 마침
  • Running: CPU가 해당 프로세스를 실행
  • Waiting: 프로세스가 끝나지 않은 시점에서 I/O로 인해 CPU를 사용하지 않고 다른 작업을 진행
    (해당 작업이 끝나면 다시 CPU에 의해 실행되기 위해 ready 상태로 돌아가야 함)
  • Terminated: 프로세스가 완전히 종료

프로세스 상태 전이도

상태 구분하는 이유 : 컴퓨터의 자원을 효율적으로 관리하기 위해서

 

3. 프로세스 제어 블록 (PCB)

  • 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내의 자료구조
  • PCB 구성 요소
    • 프로세스 상태 (process state - 준비, 실행, 대기, 완료 등.. )
      => CPU를 할당해도 되는지 여부를 결정하기 위해 필요

    • 프로세스 카운터 (program counter)
      => 다음에 수행할 명령의 위치를 가리킴

    • CPU 레지스터 (CPU register) 값
      => CPU 연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지를 나타냄
    • CPU 스케줄링 정보 (CPU scheduling information)
      => 프로세스의 CPU 스케줄링을 위해 필요한 정보
    • 메모리 관리 정보 (memory management information)
      => 메모리 할당을 위해 필요한 정보

    • 자원 사용 정보 (accounting information)
      => 사용자에게 자원 사용 요금을 계산해 청구하는 등의 용도로 사용

    • 입출력 상태 정보 (I/O status information)
      => 프로세스가 오픈한 파일 정보 등 프로세스의 입출력 관련 상태 정보

 

4. 문맥교환

문맥교환(context switch) : 실행시킬 프로세스를 변경하기 위해 원래 수행 중이던 프로세스의 문맥을 저장하고 새로운 프로세스의 문맥을 세팅하는 과정

=> 타이머 인터럽트나 프로세스의 입출력 요청 등에 의해 일어남

 

CPU 디스패치(dispatch)준비 상태 프로세스들 중에서 CPU를 할당받을 프로세스를 선택한 후 실제로 CPU의 제어권을 넘겨받는 과정

5. 프로세스를 스케줄링하기 위한 큐

  • job queue
    • 시스템 내에 있는 모든 프로세스의 집합
  • ready queue
    • 메인 메모리에 상주하면서 실행될 준비를 하고 기다리는 프로세스 집합
  • wait(or device) queue
    • 입출력 장치 할당을 대기 중인 프로세스들로 구성

  • Queue의 특징
    • 연결 리스트로 구현
    • 큐 헤더 : 리스트 내 처음과 마지막 PCB 가리키는 포인터 포함
    • 프로세스 스케줄링
      • 새로운 프로세스는 초기에 준비 큐에 놓인 후, 실행을 위해 선택(dispatch)될 때까지 준비 큐에서 기다림
      • CPU에 프로세스가 할당되고 running 상태가 되면, 여러 이벤트 중 하나가 발생할 수 있다

6. 스케줄러

  • 스케줄러 : 다양한 큐 프로세스들 집합에서 실행을 위해 한 개의 프로세스를 선택하는 운영체제의 컴포넌트
    • 장기 스케줄러 or job 스케줄러 : 디스크에 대기 중인 프로세스들 중에서 준비 큐로 옮겨질 프로세스들을 선택
    • 단기 스케줄러 or CPU 스케줄러 : 준비 큐에 있는 프로세스들 중에서 다음에 CPU에서 실행될 프로세스를 선택
    • I/O bound 프로세스 : CPU 계산보다는 입출력 계산에 보다 더 많은 시간을 소비
    • CPU bound 프로세스 : 입출력 요청보다는 CPU 계산에 더 중점적으로 시간을 할애

중기 스케줄러(스와핑)

7. 프로세스의 생성

- 이미 존재하는 프로세스가 다른 프로세스 복제, 생성

  • OS로부터 직접 자원 할당 : 부모 프로세스와 자원을 공유해서 사용하는 경우
  • 부모와 자식 공존하며 수행되는 모델 : 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델
  • 자식과 부모가 같이 CPU 획득하기 위해 경쟁하는 관계 : 자식 프로세스가 종료될 때까지 부모 프로세스는 아무 일도 하지 않고 봉쇄 상태

  • 프로세스 종료
    • 자발적 종료
      • 로세스가 마지막 명령을 수행한 후 OS에 알려 이루어짐
      • 시스템 콜을 통해 운영체제에게 자신이 종료됨을 알림
      • OS는 종료를 통보한 프로세스의 자원을 회수하고 시스템 내에서 해당 프로세스를 정리 
    • 비자발적 종료
      • 자식 프로세스가 할당 자원의 한계치를 넘어서는 많은 양의 자원을 요구할 때
      • 자식 프로세스에게 할당된 작업이 더 이상 필요하지 않을 때
      • 부모 프로세스가 종료(exit)되는 경우

8. 프로세스 간의 협력

- 프로세스 각자 독립적인 주소 영역 가짐, 다른 프로세스 주소 공간 참조하는 것 허용하지 않음

but :효율성 증대를 위해 프로세스 협력을 허용하기도 함

 

협력 메커니즘 : IPC(Inter-Process Communication: 인터프로세스 커뮤니케이션)

IPC : 하나의 컴퓨터 안에서 실행 중인 서로 다른 프로세스 간에 발생하는 통신

IPC 방법 : 메시지 전달방식 & 공유 메모리 방식

  • 메시지 전달 방식
    • 프로세스 간에 공유 데이터를 일체 사용하지 않고 메시지를 주고 받으면서 통신하는 방식
    • 커널이 메시지를 전달하는 역할을 한다
      • 직접통신 : 통신하려는 프로세스의 이름을 명시적으로 표시. 링크는 자동적으로 생성되고, 하나의 링크는 정확히 한 쌍의 프로세스에게 할당됨
      • 간접통신 : 메일박스 또는 포트로부터 전달받는다. 간접통신의 커뮤니케이션 링크는 프로세스 간에 메일박스를 공유하는 경우에만 생성됨

공유메모리 방식

  • 프로세스들이 주소 공간의 일부를 공유한다.
  • 운영체제는 공유메모리를 사용하는 시스템 콜을 지원해, 서로 다른 프로세스들이 주소 공간 중 일부를 공유
  • 데이터 일관성 문제 커널이 책임지지 않음, 프로세스들끼리 직접 공유메모리 접근에 대한 동기화 문제를 책임

 

출처

https://clownhacker.tistory.com/23#:~:text=%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81%20%ED%81%90%EC%97%90%EB%8A%94%203%EA%B0%80%EC%A7%80,%ED%95%98%EA%B3%A0%20%EA%B8%B0%EB%8B%A4%EB%A6%AC%EB%8A%94%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%A7%91%ED%95%A9%EC%9D%B4%EB%8B%A4.

- https://velog.io/@impala/OS-Process#:~:text=%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%9E%80%20%EC%BB%B4%ED%93%A8%ED%84%B0%EC%97%90%EC%84%9C%20%ED%98%84%EC%9E%AC,%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EA%B0%80%EC%A7%80%EA%B3%A0%20%EC%9E%88%EC%96%B4%EC%95%BC%20%ED%95%9C%EB%8B%A4.

- https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-5.-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B4%80%EB%A6%AC

- https://one10004.tistory.com/132