1. 운영체제의 기능
(1) 프로세스 관리
① 프로세스 정의
일반적으로 수행중인 프로그램 의미하며, 주기억장치에 저장된 프로그램을 말한다 => 실행중인 프로그램
운영체제가 관리하는 최소 단위의 작업이고 비동기적 행위를 일으키는 주체
프로시저의 활동
PCB를 가진 프로그램
프로세서가 할당되는 실체
CPU에 의해 수행되는 사용자 및 시스템 프로그램
지정된 결과를 얻기 위한 일련의 동작
② 스레드 정의
프로세스 내에서의 작업 단위로 시스템의 자원을 할당받아 실행하는 프로그램 단위
프로세스를 분할하여 운영체제의 성능을 개선하려는 소프트웨어적 접근 방법
하나의 프로세스 내에서 병행성을 증대시키기 위한 기법
스레드는 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능
프로세스의 생성이나 문맥 교환 등의 오버헤드를 줄여 운영체제의 성능이 개선
③ 프로세스 제어블록(PCB)
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓은 곳
각 프로세스가 생성될 때마다 PCB가 생성되고, 완료되면 PCB를 제거
O/S에게 Process에 대한 정보를 제공해 주는 자료구조 테이블
부모와 자식 프로세스는 PCB를 공유하지 않음
④ 프로세서 제어 블록의 저장 정보
- 프로세스의 현 상태
- 프로세스의 우선 순위
- 프로세스 식별자
- 레지스터 저장 장소
- 할당된 자원에 대한 포인터
- 관련 레지스터 정보
⑤ 스풀링(Spooling)
다중 프로그래밍 환경 하에서 용량이 크고 신속한 엑세스가 가능한 디스크를 이용하여 각 사용자 프로그램의 출력할 데이터를 직접 프린터로 보내지 않고 디스크에 모았다가 한꺼번에 출력함으로써 프린터 장치의 공유 및 프린터 처리 속도를 보완하는 기법
어떤 작업의 입/출력과 다른 작업의 계산을 병행처리하는 기법
스풀링은 디스크 일부를 매우 큰 버퍼처럼 사용하는 방법
(2) 프로세서 관리
프로세서란 중앙처리장치(CPU)를 칭하는 용어로 프로그램을 실행시키는 컴퓨터의 핵심적인 자원이며, 효율적인 관리가 매우 중요하기 때문에 어떤 프로세스에게 자원을 할당해줄 것에 대한 것을 프로세스 스케줄링이라고 합니다.
① 프로세스 스케줄링(CPU 스케줄링)
컴퓨터 시스템의 성능을 높이기 위해 그 사용 순서를 결정하기 위한 정책
처리율 증가
CPU 이용률 증가
우선 순위 제도
오버헤드 최소화
응답 시간 / 반환 시간/ 대기 시간 최소화
균형 있는 자원의 사용
무한 연기 회피
② 프로세스 스케줄링 기법
비선점 스케줄링 : 프로세스에 이미 할당된 CPU를 강제로 빼앗을 수 없고, 사용이 끝날 때까지 기다려야 하는 방법
(FIFO, SJF, HRN)
선점 스케줄링 : 우선 순위가 높은 다른 프로세스가 할당된 CPU를 강제로 빼앗을 수 있는 방법
(RR, SRT)
③ 비선점 스케줄링 기법
FIFO(First In First Out)
준비 상태에서 도착한 순서에 따라 CPU 할당
SJF(Shorest Job First)
작업이 끝나기까지의 실행 시간 추정치가 가장 작은 작업을 먼저 실행
FIFO보다 평균 대기 시간이 작지만 긴 작업의 경우 FIFO보다 더 크고 예측이 어렵다
HRRN(Highest Response Ratio Next)
SJF 방식의 단점을 보완하는 기법으로 (대기시간 + 서비스 시간) / 서비스시간으로 계산하여 우선순위를 판단
④ 선점 스케줄링 기법
RR(Round Robin)
대화식 시분할 시스템을 위해 고안된 방식으로 Time Slice를 설정하여 시간을 설정하여 돌아가며 시행
SRT(Shortest Remaining Time)
현재 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 도착한 프로세스의 실행 시간을 비교하여 가장 짧은 실행 시간을 요구하는 프로세스에게 CPU를 할당하는 기법
⑤ 병렬 프로세스
두 개 이상의 프로세스들이 동시에 존재하며 실행 상태에 있는 것
문제점
동시에 2개 이상의 프로세스를 병행 처리하면 한정된 자원에 대한 사용 순서 등 여러가지 문제가 발생
해결방법 : 임계구역, 상호배제 기법, 동기화 기법
⑥ 임계구역(Critical Section)
다중 프로그래밍 운영체제에서 한 순간에 여러 개의 프로세스에 의하여 공유되는 데이터 및 자원에 대하여 한 순간에는 반드시 하나의 프로세스에 의해서만 자원 또는 데이터가 사용되도록 하고, 이러한 자원이 프로세스에 의하여 반납된 후 비로소 다른 프로세스에서 자원을 이용하거나 데이터를 접근할 수 있도록 지정된 영역
특징
특정 프로세스가 독점할 수 없다
프로세스가 임계구역에 대한 진입을 요청하면 일정 시간 내에 진입을 허락해야 한다
⑦ 상호 배제
한 프로세스가 공유 메모리 혹은 공유 파일을 사용하고 있을 때 다른 프로세스들이 사용하지 못하도록 배제시키는 방법
※ 데커(Dekker) 알고리즘
교착상태가 발생하지 않음을 보장
공유 데이터에 처리에 있어서 상호배제를 보장
별도 특수 명령어 없이 순수히 소프트웨어로 해결
⑧ 동기화 기법-세마포어(Semaphore)
세마포어 : 신호기, 깃발
각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
다익스트라(Dijkstra)가 제안
P와 V라는 2개의 연산에 의해서 동기화를 유지시키고 상호배제의 원리를 보장
P연산은 임계 영역을 사용하려는 프로세스들의 진입여부를 결정하는 조작(Wait 동작, S=S-1)
V연산은 블록 큐에 대기 중인 프로세스를 깨우는 신호(Wake up)(Signal 동작, S=S+1)
S는 P와 V연산으로만 접근 가능한 세마포어 변수로 공유 자원의 개수를 나타내며 0과 1 혹은 0과 양의 값을 가짐
⑨ 동기화 기법-모니터(Monitor)
모니터 : 임계구역과 유사한 개념
동기화를 구현하기 위한 특수 프로그램 기법으로 특정 공유 자원을 프로세스에게 할당하는데 필요한 데이터와 데이터를 처리하는 프로시저로 구성됨
자료 추상화와 정보 은폐 개념을 기초로 하여 공유 자원을 할당하기 위한 병행성 구조
모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호출해야 함
외부의 프로세스는 직접 액세스 할 수 없으며, 모니터의 경계에서 상호 배제가 시행됨
한 순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있음
모니터에서 사용되는 연산은 Wait와 Signal이 있다.
⑩ 교착상태(Dead Lock) : 예측하지 못한 다운
상호 배제에 의해 나타나는 문제점으로 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
1) 교착상태 발생 4가지 필요충분 조건 (동시 만족 시 발생)
- 상호배제
한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함
- 점유와 대기
최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
- 비선점
프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음
- 환형대기
공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 함
2) 교착상태 해결 방안
- 예방 기법
교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착 상태 발생의 4가지 조건 중에서 상호 배제를 제외한 어느 하나를 제거함으로써 수행됨
상호배제 부정 : 여러 프로세스가 공유 자원을 이용하지 않음
비선점 부정 : 선점
점유와 대기 부정 : 프로세스가 실행되기 전 필요한 모든 자원을 점유하여 프로세스 대기를 없앰
환형대기 부정 : 자원을 선형 순서로 분류하여 각 프로세스는 현재 어느 한쪽 방향으로만 자원을 요구하도록 하는 것
- 회피 기법
교착 상태 해결 방안으로 발생 가능성을 인정하고 교착 상태가 발생하려고 할 때, 교착상태 가능성을 피해가는 방법
은행원 알고리즘
다익스트라(Dijkstra)가 제안한 회피 기법
각 프로새스에게 자원을 할당하여 교착 상태가 발생하지 않으며 모든 프로세스가 완료 될 수 있는 상태를 안전상태
교착 상태가 발생할 수 있는 상태를 불완전 상태라고 함
'디지털 포렌식 2급 자격증 필기 > 파일시스템과 운영체제' 카테고리의 다른 글
Windows 시스템 폴더와 레지스터 (0) | 2023.09.14 |
---|---|
1편 파일시스템 (4) | 2023.08.30 |
댓글