최초 작성일: 2024-08-20
최종 작성일: 2024-08-20
목표 : 정처기 합격 및 CS 지식 쌓기
운영체제 – 프로세스 관리
프로세스 : 실행 중인 프로그램
보조 기억 장치 –> 주기억 장치로 로더 -> 프로세스
프로세서 가 프로세스를 처리 -> 여러 개의 프로세스 들이 존재 -> 해당 프로세스를 어떻게 처리?
페이징 기법(고정, 내부 단편화 발생, 매핑 테이블 사용), 세그먼트 기법(가변 분할, 외부 단편화 발생) 사용
프로그램 실행시
코드 영역: 코드 올라가는 곳
데이터 영역: 정젹
스택 영역: 지역 변수
힙 영역: 동적 변수
è 아래 영역별로 분할 하는 것이 페이징 기법
è 페이지 크기가 크면 입출력 감소, 단편화 효율은 낮음, 페이지 맵 테이블 감소(페이지 수가 그만큼 적으니까 맵 테이블도 덜 필요하게 됨), 입출력 증가
페이지 부재 (CPU가 일처리 요청 했는데, 해당 프로그램이 보조 기억 장치에 있어 데이터 입출력에 시간이 더 오래 걸리는 경우)
지역성 (공간, 시간 지역성이 있는데, 공간 지역성은 배열, 시간 지역성은 반복을 순회하는 등을 의미) -> 워킹 셋 만들어짐 ->워킹 셋은 그때 그때 바뀜
스레싱 현상( CPU가 프로세스 처리 하는 시간 보다 페이지 교체하는 데 시간이 더 걸리는 것)
페이지 교체 기법 ( 반입(요구, 예상) -> 배치(최초 적합, 최적 적합, 최악적합 -> 교체
메모리의 경우에는
반입 -> 배치 -> 교체 (FIFO, OPT, LRU, LFU-참조횟수, NUR 등)
프로세스 – 스레드(경량 프로세스)
시스템 카탈로그
파일 디스크립터
PCB -문맥교환
(1) 프로세스의개념 (현재 실행중인 프로그램)
컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램
실행 가능한 프로세스 제어 블록을 가진 프로그램
운영체제가 관리하는 실행 단위로, 프로세서(CPU)가 할당되는 실체
활동 중인 프로시저
(2) 스레드(Thread)
1) 개념
l 프로세스 내에서 실행되는 흐름의 단위
l 하나의 프로세스는 최소 하나 이상의 스레드를 가지며, 스레드는 경량 프로세스 라고도 불린다
l 각 스레드는 독립된 스택 영역을 가지지만, 부모 프로세스의 코드, 데이터, 힙 영역은 공유한다.
하나의 프로세스가 있으면 그 안에서 수행되는 작은 단위 (하나의 프로세스에는 하나 이사의 스레드가 있음)
프로세스 안에는 공유 자원이 있음
프로그램 실행 시 코드, 데이터(정적 변수, 전역변수), 힙(동적 변수), 스택 영역
스레드 들은 코드, 데이터, 힙 영역을 공유하면서 스택 영역을 각각 가지고 있음.
카톡 실행 시, 프로필은 공유 시 각각의 대화창에서는 각각의 대화 내역이 있음. 해당 대화내역은 공유가 되면 안됨 -> 스택 영역 이라고 보면 됨.
2) 스레드의 특징
스레디를 사용하면 프로그램의 응답성이 좋아진다
프로그램의 일부분이 중단되어도 전체 프로그램의 실행은 계속 될 수 있다
스레드 들은 부모 프로세스의 자원과 메모리를 공유하므로 자원 공유가 용이하다
프로세스 생성보다 스레드 생성이 비용 측면에서 더 효율적이다
멀티프로세서 환경에서 스레드는 병렬 실행을 통해 성능을 향상시킬 수 있다.
스레드 구현 및 디버깅은 상대적으로 어렵다
동기화 문제와 교착 상태를 주의 해야한다
3) 스레드의 분류
사용자 수준의 스레드 : 사용자 정의 라이브러리를 사용하여 스레드를 관리
커널 수준의 스레드 : 운영체제의 커널이 스레드를 관리, 구현이 상대적으로 쉽지만, 속도가
(3) 메모리 상의 프로세스 영역
프로세스 영역 | 설명 |
코드 영역 | 실행할 프로그램의 코드가 저장되는 영역 함수, 제어문, 상수 등이 지정 |
데이터 영역 | 전역 변수와 정적 변수가 할당되는 부분 프로그램 종료시 메모리에서 소멸 |
스택 영역 | 프로그램이 자동으로 사용하는 임시 메모리 영역 지역변수와 함수의 매개변수가 저장 함수 호출이 완료되면 해당 함수는 사라진다 |
힙 영역 | 프로그래머가 할당하고 해제하는 메모리 공간 동적 할당 |
(4) 프로세스 상태 전이
생성(new) -> 준비/대기(ready) <-> 디스패치(->)time run out(<-) -> 실행(런)
준비
디스패치
Time run out
실행 (run)
대기(wait) : 실행 중인 것을 대기(wait) 상태로 변경
대기 상태 중인 것은 wake up을 통해 준비 -> 생성 상태로 변경
준비 -> 실행 : 디스 패치
실행-> 준비 : time out
대기-> 준비 : wake up
1) 프로세스 상태 전이 절차
절차 | 설명 |
제출(submit) | 사용자가 작업을 시스템에 제출한 상태 |
접수(hold) | 제출된 작업이 디스크의 스풀(임시 영역) 공간에 저장된 상태 |
준비(ready) | 프로세스가 프로세서 할당을 기다리는 상태 |
실행 | 프로세스가 프로세서를 할당받아 실행되는 상태 |
대기 | I/O 처리가 필요하여 실행을 중단하고 대기 중인 상태 |
종료 | 프로세스 실행이 끝나고 할당이 해제된 상태 |
DISPATCH (준비 상태 -> 실행 상태) : 준비 상태에서 실행 상태로 전이되는 과정
WAKE UP (실행 -> 대기 ->준비): 대기 상태에서 준비상태로 전이되는 과정
SPOOLING : 입/출력 데이터를 모아뒀다가 한꺼번에 입/출력하기 위해 디스크에 저장하는 과정
(5) PCB
l PCB는 운영체제가 프로세스의 정보를 저장하는 공간
l 각 프로세스가 생성될 때 마다 고유한 PCB가 생성되며, 프로세스 종료시 해당 PCG는 제거 된다
l PCB에 저장되는 정보
n 프로세스의 현재 상태
n 프로세스 포인터 ( 부모 프로세스, 자식 프로세스 등)
n 프로세스 고유 식별자
n 스케줄링 정보 및 프로세스 우선순위
n CPU 레지스터 정보
n 주기억장치 관리 정보
n I/O 상태 정보
n 계정 정보 (예: CPU 사용시간 등)
(6) 문맥교환(Context Swtiching)
A. 하나의 프로세스가 CPU 사용을 마치고 다른 프로세스가 CPU를 사용하도록 전환하는 과정
B. 이 과정에서 현재 실행 중인 프로세스의 상태(문맥)는 프로세스 제어 블록에 저장되고, 새로운 프로세스의 상태는 PCV에서 읽어 CPU 레지스터에 적재된다
C. 문맥 교환은 멀티태스킹(멀티 프로세싱)을 가능하게 하며, 여러 프로세스가 동시에 실행되는 것 처럼 보이게 한다
D. 문맥 교환이 일어나는 시점: 멀티 태스킹, 인터럽트 처리, 사용자 및 커널 모드 전환
2. 프로세스 스케쥴링
(1) 개념
메모리에 올라온 프로세스 들 중 어느 프로세스를 먼저 처리할지 순서를 정하는 것
Ready Queue에 있는 프로세스들 중 CPU를 할당받을 프로세스를 결정하는 과정
스케쥴링의 경우, 선점형 스케쥴링 과 비 선점형 스케쥴링이 있음
(2) 스케쥴링의 목적
목적 | 설명 |
공평성 | 모든 프로세스가 자원을 공평하게 배정받아야 한다 |
효율성 | 시스템 자원을 최대한 활용하여 스케쥴링을 진행해야 한다 |
안정성 | 중요한 프로세스가 우선적으로 처리 되어야 한다 |
반응 시간 보장 | 프로세스의 요구에 적절한 시간안에 반응해야한다 |
무한 연기 방지 – 기아 | 특정 프로세스가 무한히 연기되지 않도록 해야한다 |
(3) 스케줄링 성능척도
프로세스 차원
- CPU 사용률
- 처리량
- 응답시간: 대기상태에서 CPU를 최초로 얻기 까지 걸리는 시간
- 대기 시간: CPU를 할당받기 전 대기하는 시간
- 반환 시간: 프로세스 생성부터 종료 후 자원 반환 까지 걸리는 시간
(4) 스케쥴링 기번
1) 선점형 스케줄링
운영체제가 실행중인 프로세스로부터 CPU를 강제로 빼앗을 수 있는 방식
오버헤드가 많이 발생할 수 있다(오버헤드= 일처리)
종류: ROUND ROBIN, SRT(실행시간 짧은 것부터 먼저 진행), 다단계 큐(시스템, 실시간, 배치 큐 들을 만들어 놓고 우선순위에 따라 순차적으로 처리), 다단계 피드백 큐
2) 비선점형 스케줄링
프로세스가 CPU를 점유하고 있다면 이를 빼앗을 수 없는 방식
공정성을 보장하고 문맥 교환 오버헤드가 적지만 처리율이 떨어질 수 있다
다음에 처리해야할 프로세스와 관계 없이 응답시간을 예상할 수 있다
종류: FCFS, SJF, HRN, 우선순위, 기한부 등
시스템 카탈로그, 파일 디스크립터, PCB(문맥 교환-> 준비 상태 실행 상태)
3)기아현상과 에이징 기법
종류 | 설명 |
기아현상 (프로세스가 프로세서를 할당 받지 못해서 무한정 기다리는 현상) |
시스템에 부하가 많아서 우선순위가 낮은 프로세스가 무한정 기다리는 현상 SJF, 우선순위, SRT, MLQ |
에이징 기법 | 기아현상을 해결하기 위한 기법 오랫동안 기다린 프로세스 에게 우선순위를 높여주는 기법 HRN, MLFQ |
선점형 – Round Robin, SRT(실행시간이 빠른 것을 먼저처리), MLQ(위에 있는 큐부터 처리), MLTQ
비 선점형 – fcfs, sjf, hrn, 우선순위, 기한부
*연두색 음영 표시 된거는 기아 현상이 발생할 수 있음
프로세스가 대기 중일 때, 준비 상태와 실행 상태를 왔다 갔다 할 수 있는 것이 PCB 때문임
(1) 선점형 기법
1) Round Robin : 시간 단위를 정하여 프로세스에 순서대로 CPU를 할당하는 방식/ 컴퓨터 자원을 사용할 기회를 프로세스들에게 공정하게 부여하기 위한 방법
2) SRT(Shorttest Remaining Time) : 비선점형 스케쥴링인 Shortest Job First 기법을 선점 형태로 변형한 기법/ 남아 있는 실행시간이 가장 짧은 프로세스에 CPU를 먼저 할당
3) 다단계 큐(MULTI-LEVEL-QUEUE): 프로세스를 특정 그룹으로 분류하고 각 그룹에 따라 다른 준비 상태 큐를 사용하는 기법/ 특정 그룹의 준비 상태 큐에 들어간 프로세스는 다른 상태 큐로 이동할 수 없다/ 하위 준비 상태 규의 프로세스가 실행 중일 때 상위 준비 상태 큐에 프로세스가 들어오면 상위 프로세스에게 CPU를 우선 할당 한다
4) 다단계 피드백 큐: 프로세스가 생성되면 가장 높은 우선순위의 준비 큐에 등록 되며, FCFS순서로 CPU를 할당받아 실행된다/ 할당된 시간이 끝나면 다음 단계의 준비 큐로 이동한다/ 단계가 내려갈수록 시간 할당량이 증가하며, 가장 하위 큐를 Round Robin 방식으로 운영된다/ 적응 기법을 적용하여, 프로세스의 동작에 따라 그 위치를 조정한다
(2) 비선점형 기법
1) FCFS(First Come First Service) : 먼저 도착한 프로세스를 먼저 처리하는 스케줄링 기법/ 공평성이 유지되지만, 실행시간이 긴 프로세스가 먼저 도착할 경우 효율성이 떨어질 수 있다.
FCFS의 평균 반환 시간 예정
-최대 평균 시간 : 작업이 오래 걸리는 작업을 우선으로 처리하여 반환 시간을 계산
-최소 평균 시간: 작업이 빨리 끝나는 작업을 우선으로 처리하여 반환 시간을 계산
2) SJF : 실행 시간이 가장 짧은 프로세스에게 CPU를 할당하는 기법/ 평균 대기 시간을 최소화 하는 최적의 스케쥴링 방법이지만, 기아 현상이 발생할 수 있다.
3) HRN: SJF에서의 불리함을 보유한 스케쥴링 방식/ 우선순위를 계산하여 프로세스에 순서를 부여하는 기법 / 실행 시간이 긴 프로세스는 대기시간이 길어질 수록 우선순위가 높아진다/ 우선 순위 = (대기 시간+실행시간)/실행시간
4)우선순위: 각 프로세스에 우선순위를 부여하고 높은 우선순위를 가진 프로세스에게 먼저 자원 할당
5)기한부: 프로세스에게 일정한 시간을 주어 그 시간안에 작업을 완료하도록 하는 기법/ 시간 내에 작업을 완료하지 못하면 프로세스는 제거되거나 처음부터 다시 실행해야한다.
프로세스 -> 프로그램이 실행하는 것
상태 전이도 ( 준비 -> 대기 -> 실행)
프로세스 는 PCB를 가지고 있고 프로세스 상태 정보를 가지고 있어서 문맥교환이 가능함. 프로세스는 코드, 데이터, 스택, 힙 영역이 있는데 코드, 데이터 힙 까지는 모든 쓰레드 들이 공유 하고 스택은 각각의 쓰레드 들이 가지고 있음.
프로세스 스케쥴링 기법 1) 선점형:RR, SRT, MLQ, MLFQ 2) 비선정형: FCFS, SJF, HRN, 우선순위, 기한부
'스터디스터디 > 정처기' 카테고리의 다른 글
[실기] 운영체제- 환경변수, 로그파일, 스토리지 (1) | 2024.08.26 |
---|---|
[실기] 운영체제- 병행 프로세스와 교착 상태 (0) | 2024.08.26 |
[실기] 운영체제- 가상 기억 장치 (0) | 2024.08.19 |
Repository (1) | 2023.10.23 |
[WIP]정처기필기시험(1/9) (0) | 2023.07.19 |