2.1 프로세스
프로세스란 실행 중인 프로그램을 의미
프로세스(process) : 실행 중인 프로그램
프로그램 : 동작을 하지 않는 정적, 수동적 개체
프로세스 : 동작을 하는 능동적 개체
운영체제로부터 자원을 할당 받아 동작
자원 : CPU, 메모리, 입출력장치, 파일 등
동작 : CPU가 프로세스의 명령을 실행
사용자 및 시스템 프로세스 존재
프로세스와 관리자의 역활
프로세스 관리자의 역활
1. 프로세스를 생성 및 삭제
2. 프로세스 실행 ( CPU 할당) 을 위한 스케줄 결정
3. 프로세스의 상태를 관리하며 상태 전이를 처리
2.1.1 프로세스의 생태 변화
시스템에서 프로세스가 처리될 때, 생성, 준비, 실행, 대기 , 종료 상태를 거친다.
생성 : 처름 작업이 시스템에 주어지면 생성상태에 두고 큐에 넣는다. 작업의 특성에 맞는 큐를 생성, 예상 CPU 시간, 우선순위 , 요구되는 입출력장치, 그리고 최대 메모리 할당량등 주요 특징을 기록
준비 : CPU 할당을 기다리는 상태
실행 : 프로세스가 처리되는 상태
대기 : 프로세스가 특정 자원을 할당받을 때까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
종료 : 프로세스의 모든 처리가 완료
(1) 생성 상태 → 준비 상태
미리 정의 된 정책에 따라 스케줄러에 의해 호출
메모리의 이용 가능성과 어떤 장치가 요구되는지를 검사
(2) 준비상태 → 실행상태
사전에 정의된 알고리즘 (FCFS, SJF, SRT, RR등)에 따라 스케줄러에 의해 처리
이 과정을 디스패치(dispatch) 라고한다.
(3) 실행상태 → 준비상태
할당시간의 만료나 우선순위 알고리즘을 책하고 있는 시스템에서
높은 수선 순위 프로세스가 오는 경우 스케줄러에 의해 처리
:: 할당시간 만료
(4) 실행상태 → 대기상태
READ, WRITE 또는 다른 I/O 요구, 페이지 교환을 요구하는 작업 같은 명령 등에 의하여 일어남
상대적으로 오랜 시간이 걸리기 떄문에 그동안 다른 프로세스에 할당하여 할용하기 위함
:: 프로세서가 특정 자원을 할당 받을 때까지 또는 I/o 작업이 끝날 때까지 보류
(5) 대기상태 → 준비상태
I/O 장치 관리자의 신호에 의해 일어남
(6) 실행상태 → 종료상태
프로세스를 성공적으로 끝마침
혹은 운영체제가 에러 발생을 감지 하고 강제 종료
2.1.2 프로세스 제어 블록
프로세스 제어 블록 ( Process Control Block, PCB)
프로세스의 관리를 위한 목적
프로세스의 정보를 보관
각 프로세스마다 존재
프로세스가 진행함에 따라 내용 변경
(1) 프로세스 상태
(2) 프로세스 번호 (PID) : (Process IDentification)
(3) 프로그램 카운터 (PC) : 프로세스 수행을 위한 다음 명령의 주소 표시
(4) 레지스터 (resister) : CPU 의 레지스터에 해당하는 정보 포함
(5) 메모리
(6) 프로세스 우선 순위 : 시스템에 의해 이용, 스케줄링을 이용하여 우선순위 부여
(7) 회계정보 : 성능 측정, 순위 등 다양한 정보 포함
2.1.3 프로세스의 생성과 종료
프로세스 생성 작업
프로세스의 이름 (번호, PID ) 결정
준비큐에 삽입
초기 우선순위 부여
프로세스 제어 블록 (PCB) 생성 등
프로세스 생성 방법 : 시스템 호출
프로세스 생성 시스템 호출
하나의 프로세스가 프로세스 생성 시스템 호출을 통해 새로운 프로세스를 생성
예 : fork()
호출하는 프로세스 : 부모 프로세스
생성되는 프로세스 : 자식 프로세스
시스템 프로세스와 사용자 프로세스 모두 부모 프로세스 가능
생성되는 프로세스의 자원
운영체제로부터 직접 얻는 경우
부모 프로세스 자원의 일부를 얻는 경우
자식 프로세스의 자원은 부모 프로세스의 자원으로 제한
과도한 자식 프로세스 생성에 따른 시스템 과부하 방지
프로세스 종료
프로세스의 마지막 명령이 실행을 마치는 경우
프로세스 종료 시스템 호출 (예 : exit())을 통하는 경우
프로세스 종료 후 부모 프로세스에게 실행 결과를 되돌려 줌
2.1.4 프로세스 간의 관계
2.2 쓰레드 (thread)
쓰레드
프로세스 내에서의 다중처리를 위하여 제안된 개념
하나의 프로세스 내에는 하나 이상의 쓰레드가 존재
하나의 쓰레드 내에서는 하나의 실행점만 존재 (디스패칭의 단위)
싱행에 필요한 최소한의 정보만 가지며, 자신이 속해 있는 프로세스의 실행환경을 공유
다중 쓰레드의 장점
멀티 CPU 혹은 멀티코어 시스템에서는 병렬처리 가능
처리 속도 별로 쓰레드가 나눠진 경우 효율적인 처리 가능
2.3 스케줄링
스케줄링이랑 여러 가지 작업들의 처리 순서를 결정 하는 것
2.3.1 스케줄링 단계
운영 체제에는 여러 단계의 스케굴링이 존재 : 상위 , 하위 , 중간 단계
상위 스케줄링
시스템에 드렁오는 작업들을 선택하여 프로세스를 생성 > 준비큐에 전달
( 선택 기준은 자원을 효율적으로 이용 할 수 있도록 하는것으로
입출력장치(I/O) 중심 작업과 연산 중심 작업을 균형있게 선택하도록 작업 순서를 결정 )
하위 스케줄링
사용 가능한 CPU 를 준비 상태의 어느 프로세스에 배당할지 결정
프로세스가 준비 → 실행 되는 단계를 디스패치 라고 한다.
하위 단계 스케줄링의 수행 주체는 디스패처(dispatcher)가 된다.
중위 단계 스케줄링
프로세스를 일시적으로 메모리에서 제거 하여 중지 시키거나 다시 활성화 시켜서
시스템에 대한 단기적 부하를 조절하는 역활
2.3.2 스케줄링 정책
스케줄링 기본 목표
공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
균형 : 시스템의 자원들이 출분히 활용 될 수 있게 함
(1) 선점 (Preemptive) 스케줄링 정책
- 진행중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당
- 높은 우선순위의 프로세스를 긴급하게 처리 하는 경우 유용
- 대화식 시분할 시스템에서 빠르 ㄴ응답시간을 유지하는데 유용
- 문맥 교환에 따른 오버헤드 발생
**문맥 : CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태
*** 문맥 교환 : CPU의 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고
다음 프로세스의 PCB로부터 문맥을 복원 하는 작업
(2) 비선점 ( Nonpreemptive) 스케줄링 정책
- 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 떄까지 실행상태에 있게 됨
- 모든 프로세스가 공정하게 순서에 따라 실행됨 ⭆ 응답시간 예측 가능
- 짧은 프로세스가 긴 프로세스를 기다리게 될수 있음
요약
1. 프로세스는 실행 중이 프로그램을 의미하며, CPU, 메모리, 파일, 입출력장치 등 실행에 필요한 자원이 할당됨
2. 프로세스는 생성, 준비, 실행, 대기, 종료 상태 중 하나로 존재, CPU의 스케줄링, I/O 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작함
3. 프로세스 제어 블록은 프로세스를 명시해 주는 다양한 내용을 폼함하고 있음
4. 쓰레드란 하나의 프로그램 내에서 제어의 단일 순차적 흐름으로 정의
하나의 쓰레드 내에서는 하나의 실행점만 존재, 각 쓰레드는 수행에 필요한 최소한의 정보만으로 구성
5. 하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어 쓰레드를 생성하여 프로세스 내에서 다중처리 할수 있음
6. 프로세서의 스케줄링을 위해 상위단계, 하위단계, 중간단계 스케줄러가 사용됨
7. 스케줄링 기법 중 어떤 프로세스도 CPU를 빼앗길 수 없는 경우를 비선점이라하며,
그렇지않으면 선점이라고함
https://3catpapa.tistory.com/17
3강 제 3강 스케줄링 알고리즘
'방송통신대학 > 운영체제' 카테고리의 다른 글
4강 4강 병행프로세스 1 (0) | 2020.04.28 |
---|---|
3강 제 3강 스케줄링 알고리즘 (0) | 2020.04.27 |
9강 제7장 가상메모리 (#혼용기법 #페이지호출기법) (0) | 2020.04.24 |
9강 제7장 가상메모리 (#개념,#페이징, #세그먼테이션) (0) | 2020.04.23 |
1강 1장 운영체제의 개요 (0) | 2020.04.23 |