CS 공부

운영체제 2020-1학기 중간고사 대비 3-1 본문

CS공부/운영체제

운영체제 2020-1학기 중간고사 대비 3-1

kluiop1 2021. 7. 1. 16:02

프로세스의 정의(1960년대 멀틱스 운영체제에서 처음 사용)

IBM 운영체제에서의 작업(task)

실행 중인 프로그램

비동기적(asynchronous) 행위 (가장 일반적인 정의)

실행 중인 프로시저

실행 중인 프로시저의 제어 추적

운영체제에 들어 있는 프로세스 제어 블록PCB

프로세서에 할당하여 실행할 수 있는 개체 디스패치(dispatch)가 가능한 대상

(디스패치란 비 실행 상태에서 실행 상태로 전환시켜주는 것 그와 반대되는 말로는 인터럽트가 있다)

 

Spooling

Simultaneous Peripheral Operation On-Line의 줄임말로서 컴퓨터 시스템에서 중앙처리장치와 입출력장치가 독립적으로 동작하도록 함으로써 중앙처리장치에 비해 주변장치의 처리속도가 느려서 발생하는 대기시간을 줄이기 위해 고안된 기법이다.

 

스풀을 적용하는 것 또는 스풀을 위해 마련된 저장공간을 채우는 동작을 뜻한다.

 

프로세스의 상태 전이에 속함

구분 종류 설명
역할 시스템(커널)
프로세스
모든 시스템 메모리와 프로세서의 명령에 엑세스 할 수 있는 프로세스


프로세스 실행 순서를 제어


다른 사용자 및 커널(OS)영역을 침범하지 못하게 감시


사용자 프로세스를 생성하는 기능
사용자
프로세스
사용자 코드를 수행하는
프로세스
병행 수행
방법
독립
프로세스
다른 프로세스에 영향을 주지도 않고 받지도 않으면서 수행하는 병행 프로세스
협력
프로세스
다른 프로세스에 영향을 주거나 다른 프로세스에서 영향을 받는 병행 프로세스

프로세스의 상태 변화

프로세스의 상태 변화와 상태정보

 

프로세스의 상태 변화는 운영체제가 프로세서 스케줄러 이용하여 관리

작업 스케줄러는 스풀러가 디스크에 저장한 작업 중 실행할 작업 선정하고 준비 리스트에 삽입하여 다중 프로그래밍의 정도 결정

프로세스 스케줄러는 선정한 작업의 상태를 변화시키며 프로세스의 생성에서 종료까지 과정 수행

(1번 큐 맨 앞에 있던 프로세스가 프로세스를 점유하는 것)

 

프로세스 제어 블록(PCB, Process Control Block)

운영체제가 프로세스 제어 시 필요한 프로세스 상태 정보 저장

 

특정 프로세스 정보 저장하는 데이터 블록이나 레코드

(작업 제어 블록TCB, Task Control Block)

 

프로세스가 생성되면 메모리에 프로세스 제어 블록 생성, 프로세스가 실행 종료하면 해당 프로세스 제어 블록도 삭제

 

프로그램이 프로세스가 되려면 운영체제로부터 받아야하는 것

 

포인터

준비 상태나 대기 상태는 큐(queue)로 운영되는데, 포인터는 프로세스 제어 블록을 연결하여 준비 상태나 대기 상태의 큐를 구현할 때 사용한다.

 

프로세스 식별자(구분자)

각 프로세스의 고유 식별자(숫자, 색인 항목) 구별 위함

 

프로세스 상태

생성, 준비, 실행, 대기, 중단등 상태 표시

 

프로그램 카운터

프로세스를 실행하는 다음 명령의 주소 표시

 

프로그램 우선순위

프로세스는 중요도를 나타내는 프로세스 우선순위 말함

 

레지스터 저장 영역

누산기, 인덱스 레지스터, 스택 포인터, 범용 레지스터, 조건 코드등 정보로 컴퓨터 구조에 따라 수나 형태가 다르다. 인터럽트가 발생하면 프로그램 카운터와 함께 저장하여 재실행할 때 원래대로 복귀할 수 있게 한다.

 

프로세서 스케줄링 정보

프로세스의 우선순위, 스케줄링 큐의 포인터, 기타 스케줄 매개변수

 

계정 정보

프로세서 사용 시간, 실제 사용 시간, 사용 상한 시간, 계정 번호, 작업이나 프로세스 번호등

 

입출력 상태 정보, 메모리 관리 정보

특별한 입출력 요구 프로세스에 할당된 입출력장치, 열린 파일 리스트 등

운영체제가 사용하는 메모리 시스템에 따른 상한 하한 레지스터(경계 레지스터), 페이지 테이블이나 세그먼트 테이블 값 등

프로세스의 문맥 교환

실행 중인 프로세스의 제어를 다른 프로세스에 넘게 실행 상태가 되도록 하는 것

프로세스 문맥 교환이 일어나면 프로세서의 레지스터에 있던 내용 저장

 

프로세스의 구조

프로세스 실행 중 프로세스 생성 시스템 호출 이용 새로운 프로세스 생성

프로세스 생성 순서를 저장, 부모-자식 관계 유지하여 계층적 생성

생성하는 프로세스는 부모 프로세스(parent process),

생성되는 프로세스는 자식 프로세스(child process)

또는 서브 프로세스 (subprocess)

부모 프로세스는 자식 프로세스를 생성 과정 반복하면서 계층 구조 형성

프로세스의 생성 시기

일괄처리 환경: 작업이 도착할 때 프로세스 생성

대화형 환경: 새로운 사용자가 로그온log-on할 때 프로세스 생성

 

프로세스 생성 시 필요한 세부 작업 순서

1) 새로운 프로세스에 프로세스 식별자 할당

2) 프로세스의 모든 구성 요소를 포함할 수 있는 주소 공간과 프로세스 제어 블록 공간 할당

3) 프로세스 제어 블록 초기화

(프로세스 상태, 프로그램 카운터 등 초기화, 자원 요청, 프로세스 제어 정보(우선순위) 등을 포함)

4) 링크(해당 큐에 삽입)

 

프로세스가 새로운 프로세스 생성 시 다음 두 가지 실행 발생

1) 부모 프로세스와 자식 프로세스 동시 실행

2) 부모 프로세스는 자식 프로세스 모두 종료할 때까지 대기

 

프로세스의 종료

프로세스가 마지막 명령 실행, 종료하여 운영체제에 프로세스의 삭제 요청

일괄 처리 환경: 작업 종료 의미의 신호로 인터럽트 발생 또는 시스템 호출로 중단 명령

대화형 환경 : 사용자가 로그오프(log-off)하거나 터미널 닫음

abort 명령어로 프로세스 종료

 

부모 프로세스의 자식 프로세스 종료

보통 부모 프로세스 종료하면 운영체제가 자식 프로세스도 종료(연속 종료)

자식 프로세스가 할당된 자원을 초과하여 자원을 사용할 때

자식 프로세스에 할당한 작업이 더는 없을 때

 

exit 명령어 : 유닉스에서 프로세스 종료

wait 명령어 : 부모 프로세스가 자식 프로세스의 종료 기다림.

 

프로세스 종료 이유

정상 종료 : 프로세스가 운영체제의 서비스 호출

시간 초과 :

실패 : 파일 검색 실패, 입출력이 명시된 횟수 초과하여 실패할 때

산술 오류, 보호 오류, 데이터 오류 등, 메모리 부족, 액세스 위반 등

 

프로세서 제거

프로세스 파괴

사용하던 자원 시스템에 돌려주고, 해당 프로세스는 시스템 리스트나 테이블에서 사라져 프로세스 제어 블록 회수

프로그램은 여전히 디스크에 저장

자식 프로세스는 부모 프로세스를 제거하면 자동 제거

 

프로세스의 중단

시스템의 유휴시간 문제를 프로세스 중단(일시정지) 상태를 이용 해결

 

운영체제는 새로운 프로세스를 생성하여 실행하거나 실행 중인 프로세스를 중단했다가 다시 실행 하여 사용 가능 후자의 방법 이용하면 시스템 전체의 부하를 증가시키지 않고 프로세스에 서비스 제공

 

실행에서 대기가 아닌 중단 상태 추가하면 특정 이벤트의 발생을 기다리면서 대기 상태가 되어 해당 이벤트가 발생할 때 즉시 실행 상태로 바꿀 수 있는 이점

 

다중 프로그래밍에서 중단

프로세스 입출력 요구 외에 다른 원인으로 프로세스가 실행을 중단한 상태(자원 부족(대기) 상태)

 

단일 처리 시스템 : 해당 프로세스 스스로 중단

다중 처리 시스템 : 다른 프로세서가 실행 중인 프로세스 중단

 

중단된 프로세스는 다른 프로세서가 재시작하기 전에는 실행 불가

 

장시간 중단 시 해당 프로세스에 할당된 자원 반환, 자원의 성질에 따라 반환 자원 결정

메인 메모리 : 프로세서 중단 즉시 반환

보조 메모리 : 중단 시간 예측할 수 없거나 너무 길 때 반환

 

중단한 프로세스는 중단한 지점부터 다시 시작

다섯가지 프로세스 상태도

휴식 상태

프로세스가 작업을 일시적으로 쉬고 있는 상태다. 메모리에 사용하던 데이터도 그대로 있고, 프로세스 제어 블록도 유지된다. 따라서 프로세스는 멈춘 지점에서부터 재시작(resume)할 수 있다. 프로세스가 정지되면 종료된 것과 똑같은 모양으로 보이지만 완전히 다르다. 유닉스에서 프로그램을 실행한 상태로 [CTRL]+[C]를 누르면 해당 프로세스는 종료된다. 이렇게 프로세스가 강제 종료되면 메모리에서 쫓겨나고 프로세스 제어 블록도 사라지기 때문에 사용하던 데이터를 잃어버린다. 종료된 프로세스는 처음부터 다시 시작해야 한다.

 

보류 상태

프로세스가 메모리에서 잠시 쫓겨난 상태로, 휴식 상태와 차이가 있다. 메모리가 꽉 차서 일부 프로세스를 메모리 밖으로 내보낼 때, 프로그램에 에러가 있어 실행을 미뤄야 할 때, 바이러스와 같이 악의적인 공격을 하는 프로세스라 판단될 때, 매우 긴 주기로 반복하는 프로세스라 메모리 밖으로 쫓아내도 큰 무리가 없을 때, 입출력을 기다리는 프로세스 중 입출력이 계속 지연될 때 등과 같은 경우 보류 상태가 된다. 이러한 조건 외에도 여러 가지 이유로 보류 상태에 들어가게 되는데, 대부분 컴퓨터의 성능을 저하시키거나 실행을 미뤄도 큰 지장이 없는 프로세스들이 보류 상태로 들어간다. 보류 상태는 책에 따라 일시정지 상태라고도 불리며, 보류 상태와 비교하여 일반적인 프로세스 상태를 활성 상태라 부른다.

 

보류 상태는 대기 상태에서 옮겨진 보류 대기 상태(block suspend status)와 준비 상태에서 옮겨진 보류 준비 상태(ready suspend status) 상태가 있으며, 각 상태에서 다시 재시작하면 원래의 활성 상태로 들어간다. 또한 보류 대기 상태에서 입출력이 완료되면 활성 상태가 아닌 보류 준비 상태로 옮겨간다.