운영체제

운영체제 3.3 Process Description

공부승식 2021. 4. 1. 13:37
728x90

운영체제가 프로세스를 제어하고, 그들에게 할당될 자원을 관리하기 위해서 필요한 정보는 무엇인가?

 

운영체제가 프로세스와 자원들을 관리하기 위해서는, 이들 각각에 대한 현재 사태를 나타내는 정보를 가지고 있어야만 한다. 

이러기 위해서는, 관리하고자 하는 각 개체에 대한 정보를 테이블로 구성해서 유지하면 된다. 

프로세스가 어떤 자원을 사용하고 있는지 (CPU, I/O, Main memory등 )

그래서 운영체제가 관리해야할 테이블은 4개의 타입이다. 

메모리 테이블 : 메인 메모리, 버추얼 메모리 모두의 track을 유지하기 위해 사용된다. 메인메모리의 일부는 운영체제가 사용하도록 예약되어있고, 나머지는 프로세스가 사용할 수 있다. 프로세스들은 가상 메모리나 간단한 스와핑으로 보조기억장치내에 유지되기도 한다. 

메모리 테이블이 가지고 있는 정보

1. 프로세스에게 할당된 주기억장치

2.프로세스에게 할당된 보조기억장치

3.어떤 프로세스가 특정 공유 메모리 영역에 접근이 가능한지, 주기억장치 또는 가상메모리를 보호하기 위한 정보.

4. 가상메모리를 관리하기 위해 필요한 정보.

 

입출력테이블: 입출력 장치와 컴퓨터 시스템의 채널들을 관리하기 위해 운영체제에서 사용된다. 입출력장치가 이용가능한지, 프로세스에 할당되어있는지. 입출력동작이 진행중일때, 운영체제는 입출력 동작의 진행상태와 입출력 전송의 출발지와 목적지로서 사용되는 메인메모리내의 위치를 알아야한다. 

 

파일테이블: 이 테이블에는 파일의 존재여부, 보조기억장치에 저장된 파일의 위치, 현재상태같은 정보가 저장된다. 파일관리시스템에 의해 유지되고 사용될 수 있다.

 

프로세스 테이블: 프로세스 관리를 위해 사용된다. 

각각의 테이블은 어떤식으로든 연결되거나 상호 참조되어야 한다. 메모리, 입출력장치, 파일들은 모두 프로세스를 위해 관리되기 때문에, 프로세스 테이블에서 이들 자원에 대한 참조가 직접 또는 간접적으로 이용되어야 한다.

 

 

프로세스 제어 구조

운영체제가 임의 프로세스를 관리하고 제어하기 위해 알아야할 사항이 무엇이 있는가.

1. 프로세스가 어디에 위치하고 있는가?

2. 프로세스를 관리하는데 필요한 속성(Process ID, Process state등)을 알아야 한다.

 

프로세스가 어디에 위치하고 있는가?

 

프로세스는 수행될 하나의 프로그램 또는 여러 프로그램 집합으로 표현된다. 그 프로그램들은 각각 관련된 전역 및 지역변수들, 미리 정의된 상수등에 대한 데이터 위치들의 집합이 있어야 한다. 따라서 , 프로세스는 자신의 프로그램과 ,데이터를 적재시킬 수 있는 충분한 메모리로 구성될 것이다. 이와 더불어 프로그램 수행 시, 프로시저 호출들의 트랙과 프로시저들 간에 절달되는 매게변수 등을 유지하는데 사용되는 스택이 필요하다.

마지막으로, 각 프로세스가 가지고 있는 수많은 속성들을 관리하기 위해 PCB에 속성들을 넣어놓고, 프로그램과 데이터, 속성들의 집합을 프로세스 이미지라고 부른다.

프로세스 이미지는

사용자데이터->, 사용자프로그램, 시스템스택, PCB로 이루어져 있다. 

PCB-> 프로세스를 제어하기 위해 운영체제가 필요로 하는 데이터. 

 

PCB의 일반적인 구성요소는 

프로세스 식별, 처리기 상태 정보, 프로세스 제어 정보 크게 3개로 이루어져 있는데,

프로세스 식별은 

식별자: 프로세스의 식별자, 프로세스를 생성한 부모 프로세스의 식별자, 사용자 식별자로 식별한다.(숫자로 이루어짐)

 

처리기 상태 정보

1.사용자가 사용가능한 레지스터

2. 제어 레지스터 및 상태 레지스터: 처리기의 동작을 제어하기 위해 사용되는 다양한 처리기 레지스터가 있는데,

PC-> 다음에 반입할 명령어의 주소를 가진다.

condition codes ->가장 최근에 수행된 산술 또는 논리 연산의 결과

상태 정보 -> 인터럽트 가능/불가 플래그들과 수행모드를 가진다.

3. 스택 포인터

인터럽트 당했을때 CPU를 복사시켜놓는건데, 

각 프로세스는 하나 이상의 시스템 스택을 가진다. 스택은 프로시저와 시스템 호출의 매게변수와 호출 주소를 저장하는데 사용된다. 

 

프로세스 제어 정보

 

1. 스케줄링과 상태 정보

운영체제가 스케줄링 기능을 수행하기 위해 필요한 정보

-프로세스 상태: 수행되기 위해 스케줄된 프로세스의 준비 상황을 정의(ready, blocked, suspened)같은거

-Priority: 프로세스의 스케줄링 우선순위를 나타내기 위해서 하나 이상의 필드가 사용 될 수 있다. 여러개의 값이 요구되는 경우도 있다.(기본값, 현재값, 허용가능 최대치 등)

-스케줄링과 관련된 정보: 사용되는 스케줄링 알고리즘에 따라 다르지만, 프로세스가 대기하고 있던 시간, 마지막에 수행되었던 시간 등 다양한 알고리즘을 사용한다.

-:이벤트: 프로세스가 재 시작될 수 있기 전에 기다리고 있는 사건을 알려준다.

 

2. 자료구조화

프로세스는 큐와 링, 또는 다른 자료 구조로 다른 프로세스와 연결될 수 있다.예를 들어 특정 우선순위를 가지고 대기상태에 있는 모든 프로세스는 하나의 큐로 연결될 수 있다. 프로세스는 다른 프로세스와 부모자식관계가 될 수도있다. 이런 구조를 지원하기 위해서 프로세스 제어 블록에는 다른 프로세스들을 가리키는 포인터를 포함할 수 있다.

 

3. 프로세스간 통신

두개의 독립된 프로세스 사이의 통신과 연관될 수 도 있다.(통신할때의 정보가 들어있다.)

 

4. 메모리 관리

이 부분은 이 프로세스에 할당된 가상메모리를 나타내는 세그먼트나 페이지 테이블로의 포인터를 가질 수 있다.

 

5. 자원의 소유권과 이용률

프로세스에 의해 제어되는 자원들은 개방된(opened)파일처럼 표시될 수 있다. 처리기 및 자원들의 이용률에 대한 이력도 포함될 수 있다. 이 정보는 스케줄러에 의해 사용된다. (어떤 모드로 오픈되었는지 같은 정보도 들어있다.)

 

 

 

 

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

운영체제 4.2 쓰레드의 유형  (0) 2021.04.07
운영체제 4.1 프로세스와 쓰레드  (0) 2021.04.07
운영체제 3.2 프로세스 상태  (0) 2021.03.30
운영체제 3장 3.1  (0) 2021.03.30
운영체제 2.1단원 복습  (0) 2021.03.16