프로세스 기술과 제어

2022. 5. 22. 17:00운영체제

728x90

프로세스란


- 수행중인 프로그램
- 컴퓨터 상에서 수행중인 프로그램의 인스턴스
- 처리기에 할당되어 수행될 수 있는 개체
- 스레드, 상태, 시스템 자원 등에 의한 활동 단위


프로세스 구조


- 프로그램 코드
- 일련의 데이터, stack
- 프로세스 정보


프로세스 구성요소


- 식별자 : 다른 프로세스와 구별 가능
- 상태 : 프로세스가 수행중이면 해당 프로세스는 수행 상태에 있음
- 우선순위 : 다른 프로세스들에 대해 상대적인 우선순위 수준
- 프로그램 카운터 : 프로그램에서 다음에 수행될 명령어의 주소
- 메모리 포인터 : 프로세스와 연계된 프로그램 코드 및 데이터 
- 문맥 데이터 : 프로세스가 수행중일 때 CPU의 레지스터에 존재하는 데이터
- 입출력 상태 정보
- 어카운팅 정보(과금 정보) : 사용된 처리기 시간 및 클록 시간, 시간 제한, 계정 번호 등


2상태 프로세스 모델


- 프로세스는 수행(Running) 또는 비수행(Not-Running) 상태 중 하나에 있음
- 프로새스 생성 시 비수행 상태로 초기화
- 운영체제의 제어로 상태 전

 

## 5상태 프로세스 모델


- 준비된 프로세스들이 큐에 저장
- CPU는 해당 큐를 라운드 로빈(Round-robin)형식으로 처리
    - 라운드 로빈 : 큐에 있는 각 프로세스는 일정한 기간동안 수행한 후에 종료가 안되면 해당 큐로 재저장 하는 방식
- 비수행 상태와 준비상태, 블록 상태로 분할


- 생성(New) : 아직 프로세스 풀(메모리)에 진입 X
- 준비(Ready) : 기회가 주어지면 수행될 준비가 되어 있는 프로세스
- 수행(Running) : 현재 수행 중인 프로세스
- 블록/대기(Blocked/Waiting) 입출력 연산 완료 등 같은 어떤 이벤트 발생할 때까지 수행될 수 없는 프로세스
- 종료(Exit) : 프로세스 수행이 완료되거나 중단되어 운영체제에 의해 프로세스 풀에서 방출된 프로세 - 생성 -> 준비 : 운영체제가 새로 생성된 프로세스를 받을 준비가 될 때 그 프로세스를 생성 상태에서 준비 상태로 전이
성능 하락을 방지하기 위해 준비 되는 프로세스 수를 제한 두거나 할당량을 제한
- 준비 -> 수행 : 디스패치가 준비 상태에 있는 프로세스 중 하나 선택
- 수행 -> 종료 : 수행중인 프로세스가 작업을 완료하거나 수행이 중단되면 운영체제는 해당 프로세스를 종료
- 수행 -> 준비 : 프로세스가 자신에게 허용된 최대 처리 시간을 모두 사용하면 다시 준비 큐에 재저장
- 수행 -> 블록 : 프로세스가 자원을 요구했는데 대기가 필요하면 블록 상태로 전이
- 블록 -> 준비 : 블록 상태에 있는 프로세스가 자신이 기다리던 이벤트가 발생하면 준비 상태로 전이


스와핑


블록 상태의 프로세스를 디스크로 내보내고 보류큐에 놓음
- 스왑 아웃 : 종료되지 않은 프로세스의 이미지를 주기억장치로부터 스왑 공간(디스크)으로 이동시키는 것
- 스왑 인 : 스왑 아웃된 프로세스의 이미지를 스왑 공간으로부터 주기억장치로 적재하는 것
- 스와핑도 IO 연산


- 블록 -> 블록/보류 : 중비된 프로세스가 하나도 없다면, 적어도 하나의 블록된 프로레스를 스왑 아웃시켜 다른 프로레스의 공간 확보 (스왑 아웃)
- 블록/보류 -> 준비/ 보류 : 블록/보류에 있는 프로세스가 이벤트가 발생하면 준비/보류 상태로 전이
- 준비/보류 -> 준비 : 준비된 프로세스가 주기억장치에 없으면 다른 프로세스 반입 (스왑 인)
- 준비 -> 준비/보류 : 주기억장치에 공간 확보를 위해 준비 상태 프로세스를 보류 (스왑 아웃)
- 생성 ->준비/보류 & 준비 : 새 프로세스 생성 후 승인되면 준비 & 준비/보류 상태로 이동
- 블록/보류 -> 블록 : 주기억장치에 빈공간이 있으면 우선순위를 판단하여 블록상태로 이동 (스왑 인)


## 스와핑의 필요성


- 더 많은 가용 메모리를 확보 가능
- 주기억장치에 준비 상태의 프로세스가 없을 때

## OS 제어 구조


- 각 프로세스 및 자원의 현재 상태에 대한 정보 유지
    - os가 관리하는 각 개체를 위한 테이블 구성
    - 메모리 테이블
    - IO테이블 = 입출력 테이블
    - 파일 테이블
    - 프로세스 테이블

메모리 테이블

- 프로세스들에 할당된 주기억장치 정보
- 프로세스들에 할당된 디스크 정보
- 공유 메모리 영역에 접근하기 위한 보호 속성
- 가상 메모리를 관리하는 필요한 정보

IO(입출력) 테이블

- IO연산에 필요한 정보 유지
    - IO장치 이용 가능 또는 특정 프로세스에 할당되어 있음을 표시
    - IO전송에서 소스 또는 목적지 주소로 사용될 메모리에서의 위치

파일 테이블

- 디스크에서의 위치
- 현재 상태 및 속성
- 파일 시스템을 관리하는데 필요한 정보

프로세스 테이블

프로세스 위치 정보
프로세스 제어블록(PCB)속성 : 프로그램, 데이터, 스택

문맥(Context): 

- 커널이 관리하는 테스크의 자원과 제어 흐름의 집합
- 3 부분으로 구성
    - 시스템 문맥(System context)
    - 메모리 문맥 (Memory context)
    - 하드웨어 문맥(hardware context)

프로세스 제어 구조

- 프로세스 속성: 프로세스를 제어하기 위해 OS가 사용하는 정보

프로세스 제어블록(프로세스 디스크럽터, PCB)

프로세스를 제어하기 위해 운영체제가 필요로 하는 데이터,  프로세스 속성들의 집합

- OS에 의해 관리
- 다수의 프로세스를 지원
- 다중처리를 제공할 수 있게 지원
- 프로세스 제어블록 구성요소
     - 프로세스 식별 : 숫자로 된 식별자
         - ex) PID, PPID, UID ...
     - CPU 상태 정보
         - 사용자 이용 가능 레지스터(User-Visible Registers)
         - 제어 및 상태 레지스터
             - ex) PC, 코드, 상태 정보 등
     -  스택 포인터
- 프로세스 제어 정보
     - 스케줄링 및 상태정보
         - 프로세스 상태, 정책, 이벤트, 스케줄링 정보 등
     - 다른 프로세스 간의 포인터 정보
     - 프로세스 간 통신(IPC)
     - 프로세스 권한
     - 메모리 관리
     - 자원 소유권 및 이용률
- 프로세스 이미지 : 아래 요소들의 집합
     - 프로그램(code, text) : 수행될 프로그램
     - 데이터 
     - 스택 : 프로시저와 시스템 호출에 필요한 매개변수와 호출 주소를 저장하는데 사용
     - PCB(Process Control Block) : 프로세스 제어블록
         - 프로세스 식별
         - 처리기 상태 정보
         - 프로세스 제어 정보



프로그램 상테 워드 (PSW, Program Status Word)

- 레지스터 or 레지스터 집합
- 상태 정보를 저장
- 조건 코드 및 기타 상태 정보 저장

프로세스 제어

수행모드

- CPU는 권한에 따라 수행 모드를 구별

    - 운영체제 테이블을 보호할 필요가 있기 때문에
- 보통 권한을 덜 가진 모드는 사용자 모드
- 더 높은 권한 모드는 시스템 모드, 제어 모드, 커널 모드 등으로 불림

프로세스 교환(Process Switching)

- 교환 시점 : 운영체제가 현재 수행중인 프로세스로부터 제어를 넘겨받을 때 발생
    - Clock 인터럽트: 최대 허용된 시간 단위가 지나면 발생
    - IO 인터럽트
    - 메모리 폴트 : CPU가 참조하는 데이터가 메모리에 없을 때
    - 트랩 : 수행 중에 발생한 오류 및 예외상황
    - 슈퍼바이저 호출 : file open 등
- 프로세스 교환 순서
    1. 프로그램 카운터 및 다른 레지스터들을 포함한 CPU 문맥 저장
    2. 현재 수행 상태에 있는 프로세스(Pa)의 PCB 갱신
    3. 해당 PCB를 준비큐, 블록큐, 준비/보류큐 중 하나에 삽입
    4. 실행할 다른 프로세스(Pb) 선택
    5. 새로 선택된 프로세스(Pb) PCB 갱신
    6. 메모리 관리 자료구조 갱신
    7. 선택된 프로세스(Pb)의 문맥 복원
- 문맥 교환 : context switch

프로세스 생성

1. 새로운 프로세스에 식별자 할당
2. 프로세스 공간 할당
    - 사용자 주소공간 및 사용자 스텍
    - 공유 영역
3. 프로세스 제어블록(PCB) 초기화
4. 적절한 연결 설정
5. 다른 자료구조를 생성 또는 확장

운영체제의 수행

비 프로세스 커널(Non-process Kernel, 분리된 커널)

- 모든 프로세스의 외부에서 운영체제 커널을 수행
- 프로세스가 인터럽트 당하거나 수퍼바이저 호출 요청 -> 해당 프로세스 문맥 저장 -> 제어를 커널로 넘김
- OS 모드가 특권 모드에서 동작
- 운영체제 코드가 분리된 개체로서 수



사용자 프로세스 내에서 수행(Execution within User Processes)

- 사용자 프로세스 문맥 내에 OS 소프트웨어(워크스테이션)가 유지
- 프로세스가 OS코드를 실행중일 때 특권모드를 가짐
- 다른 영역과 분리된 커널 스택 사용
- 운영체제 코드와 데이터는 공유 주소 공간에 있어 모든 사용자 프로세스에 의해 공유
- 프로세스 교환은 일어나지 않고 단지 같은 프로세스 내에서 모드 전환만 발생
- 프로세스 교환 시 제어가 프로세스 교환 루틴으로 넘어감

 

프로세스 기반 운영체제(Process-Based Operation System)

- 운영체제를 시스템 프로세스들의 집합으로 구현
- 커널 소프트웨어 부분은 커널 모드에서 실행
- 커널의 주요 기능은 여러 개의 분리된 프로세스로 구성
- 운영체제를 모듈화 
- 다중 처리기나 멀티 컴퓨터 환경에서 유용



728x90

'운영체제' 카테고리의 다른 글

운영체제 개요  (0) 2022.05.20
컴퓨터 시스템 개요  (0) 2022.04.17