<운영체제의 구성>
1. 프로세스 관리자
- 프로세스 생성/삭제, CPU 할당을 위한 스케줄 결정
- 프로세스의 상태를 관리하며 상태 전이를 처리
2. 메모리 관리자
- 메모리(주기억장치) 공간에 대한 요구의 유효성 체크
- 메모리 할당 및 회수
- 메모리 공간 보호
3. 장치 관리자
- 컴퓨터 시스템의 모든 장치를 관리
- 시스템의 장치를 할당, 작동 시작, 반환
4. 파일 관리자
- 컴퓨터 시스템의 모든 파일을 관리
- 파일의 접근 제한 관리
- 파일을 열어 자원을 할당하거나 파일을 닫아 자원을 회수
<프로세스>
1. 프로세스
1) 프로세스(process) : 실행 중인 프로그램
- 프로그램 : 동작하지 않는 정적·수동적 개체
- 프로세스 : 동작을 하는 능동적 개체
2) 운영체제로부터 자원을 할당받아 동작
- 자원 : CPU, 메모리, 입출력장치, 파일 등
- 동작 : CPU가 프로세스의 명령을 실행
3) 사용자 및 시스템 프로세스 존재
4) 프로세스 관리자의 역할
- 프로세스를 생성 및 삭제
- 프로세스 실행(CPU 할당)을 위한 스케줄 결정
- 프로세스의 상태를 관리하며 상태 전이를 처리
2. 프로세스의 상태 변화
- 생성(new) : 처음 작업이 시스템에 주어진 상태
- 준비(ready) : 실행 준비가 되어 CPU 할당을 기다리는 상태
- 실행(runninig) : 프로세스가 처리되는 상태
- 대기(waiting) : 프로세스가 특정 자원을 할당받을 떄까지 또는 I/O 작업이 끝날 때까지 작업이 보류되는 상태
- 종료(terminated) : 모든 처리가 완료되어 사용자에게 반환되는 상태
3. 프로세스 제어 블록 (PCB, Process Control Block)
- 운영체제는 프로세스 관리를 위해, 각 프로세스마다 프로세스 제어 블록(PCB))를 두고서 여기에 해당 프로세스의 정보를 보관한다.
- 프로세스 제어 블록의 내용은 프로세스가 진행함에 따라 변경도 되고, 프로세스가 종료되면 이 제어블록도 없어지게 된다.
- 프로세스 관리를 위한 목적
- 프로세스의 정보를 보관
- 각 프로세스마다 존재
- 프로세스가 진행함에 따라 내용 변경
<쓰레드>
1. 프로세스와 쓰레드
1) 전통적인 프로세스
- 처리의 기본 단위
- 자원 소유의 단위(하나의 주소공간) 및 디스패칭의 단위(하나의 제어흐름)
- 단일 프로세스 내에서 동싳어리 불가능 --> 쓰레드 등장!
2) 쓰레드(Thread)
- 프로세스 내에서 다중처리를 위해 제안된 개념
- 하나의 프로세스 내에는 하나 이상의 쓰레드가 존재
- 하나의 쓰레드 내에서는 하나의 실행점만 존재 (디스패칭의 단위)
- 실행에 필요한 최소한의 정보만을 가지며, 자신이 속해 있는 프로세스의 실행 환경을 공유
2. 쓰레드
1) 다중 쓰레드의 장점
- 멀티CPU 혹은 멀티코어 시스템에서는 병렬처리 가능
- 처리 속도별로 쓰레드가 나눠진 경우 효율적인 처리 가능
<스케줄링>
1. 스케줄링이란?
- 스케줄링 : 여러 가지 작업들의 처리 순서를 결정하는 것
==> 이번 장에서 배우는 스케줄링은, 주어진 프로세스들이 여러 개인 경우 어떤 순서대로 CPU를 얼마 동안 배정하여 프로세스를 처리할지를 결정하는 스케줄링.
2. 스케줄링의 단계(level)
1) 상위단계
- 시스템에 들어오는 작업들을 선택하여 프로세스를 생성한 후, 프로세스 준비 큐에 전달
- 선택 기준 : 시스템의 자원을 효율적으로 이용할 수 있또록 하는 것
- 입출력(I/O) 중심 작업과 연산 중심 작업을 균형 있게 선택
2) 하위단계
- 사용 가능한 CPU를 준비상태의 어느 프로세스에게 배당할지를 결정
- CPU를 배당받은 프로세스는 결국 실행상태가 되어 프로세스가 처리됨
- 수행주체 : 디스패처(dispatcher)
3) 중간단계
- 프로세스를 일시적으로 메모리에서 제거하여 중지시키거나 다시 활성화시킴
- 시스템에 대한 단기적인 부하를 조절
3. 스케줄링 정책
1) 스케줄링의 기본 목표
- 공정성 : 모든 프로세스가 적정 수준에서 CPU 작업을 할 수 있게 함
- 균형 : 시스템의 자원들이 충분히 활용될 수 있게 함
2) 선점(Preemptive) 스케줄링 정책
- 진행 중인 프로세스에 인터럽트를 걸고 다른 프로세스에 CPU를 할당하는 스케줄링 전략
- 높은 우선순위의 프로세스를 긴급하게 처리하는 경우에 유용
- 대화식 시분할 시스템에서 빠르 응답시간을 유지하는데 유용
- 문맥 교환에 따른 오버헤드 발생
※ 문맥 : CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태
3) 비선점(Nonpreemptive) 스케줄링 정책
- 프로세스가 CPU를 할당받아 실행이 시작되면 작업 자체가 I/O 인터럽트를 걸거나 작업을 종료할 떄까지 실행상태에 있게 됨
- 모든 프로세스가 공정하게 순서에 따라 실행됨 → 응답시간 예측 가능
- 짧은 프로세스가 긴 프로세스를 기다리게 될 수 있음
'Programming > Computer Science Fundamentals' 카테고리의 다른 글
[빅데이터의 이해] 3. 빅데이터의 활용1 (0) | 2021.09.09 |
---|---|
[빅데이터의 이해] 2. 빅데이터의 정의2 (0) | 2021.09.09 |
[빅데이터의 이해] 1. 빅데이터의 정의 1 (0) | 2021.09.09 |
[프로그래밍 언어론] 4. 구문론과 의미론 (0) | 2021.09.09 |
[프로그래밍 언어론] 3. 프로그래밍 언어 패러다임 (0) | 2021.09.09 |
[프로그래밍 언어론] 2. 프로그램 언어의 발전 및 동작원리 (0) | 2021.09.07 |
[프로그래밍 언어론] 1. 프로그래밍 언어 소개 (0) | 2021.09.07 |
[데이터베이스시스템] ER모델 (2장. 데이터베이스 모델링) (2) | 2021.04.01 |