일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 이분 탐색(Binary Search)
- 백준 21606번
- 백준 18352번
- 큐(Queue)
- 위상 정렬(Topological Sort)
- 그래프(Graph)
- 백준 10000번
- 백준 9012번
- 알고리즘 개념
- DFS
- DFS & BFS
- 트리(Tree)
- 백준 2812번
- BFS(Breadth First Search)
- 백준 1707번
- 이분 그래프(Bipartite Graph)
- 동적 프로그래밍(Dynamic Programming)
- 백준 17608번
- 다익스트라 알고리즘(Dijkstra Algorithm)
- 분할 정복(Divide and Conquer)
- 백준 2493번
- 백준 1948번
- DFS(Depth First Search)
- 백준 2504번
- 스택(Stack)
- 위상 정렬(Topology Sort)
- 그리디 알고리즘(Greedy Algorithm)
- 백준 2261번
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- BFS
- Today
- Total
Always Be Wise
프로세스 관리 본문
작업(Job) / 프로그램(Program)과 프로세스
작업은 컴퓨터 시스템에 실행 요청을 하기 전 상태의 프로그램과 데이터를 의미하며, 프로세스는 시스템(커널)에 등록된 작업을 의미한다.
프로세스는 시스템 성능 향상을 위해 커널에 의해 관리된다.
프로세스와 프로세스 관리 블록
프로세스는 실행 중인 프로그램으로 커널에 등록되고 커널의 관리하에 있는 작업을 의미한다. 각종 자원들을 요청, 할당, 반납하는 능동적인
개체이며, 프로세스 관리 블록(PCB)을 할당받은 개체이다. 프로세스 관리 블록은 커널 공간에 존재하며 프로세스 생성 시 같이 생성되며,
각 프로세스들에 대한 정보를 관리한다. 프로세스 관리 블록이 관리하는 정보는 운영체제마다 다르나, 보통 프로세스 고유 식별 번호
(PID, Process Identificaiton Number)와 프로세스의 우선순위 등과 같은 스케줄링 관련 정보, 자원 요청 및 할당 등의 프로세스 상태
정보, 페이지 테이블, 세그먼트 테이블과 같은 메모리 관리 정보, 할당 받은 입출력 장치, 파일 등에 대한 입출력 상태 정보, 프로세스의
레지스터 상태를 저장하는 문맥 저장 영역 등이 포함된다.
프로세스의 종류
자원의 개념
커널의 관리 하에 프로세스에게 할당 및 반납되는 수동적 개체를 의미한다. 자원은 크게 하드웨어 자원과 소프트웨어 자원으로 구분되며
하드웨어 자원은 프로세서, 메모리, 디스크, 모니터, 키보드 등이 해당하며 소프트웨어 자원은 시그널, 파일, 메시지 등이 해당한다.
프로세스의 상태
프로세스의 상태는 아래와 같이 자원 간의 상호작용(자원 할당 상태)에 의해 결정된다. 크게는 메모리 할당 여부에 따라 Active와
Suspended로 구분되며, Active 및 Suspended 상태 상에서 프로세서 기타 자원 여부 할당 여부에 따라 추가적으로 구분된다.
Created State
작업을 커널에 등록하여 프로세스 관리 블록 할당 및 프로세스를 생성하는 단계이다. 커널은 가용 메모리 공간을 체크하고 메모리
할당이 가능한 경우 ready로 불가한 경우 suspende ready로 프로세스 상태를 전이한다.
Ready State
프로세서가 프로세서를 제외한 다른 모든 자원을 할당 받은 상태로 dispatch(or schedule)를 통해 running state로 전이된다.
Running State
프로세스가 프로세서와 필요한 자원을 모두 할당 받은 상태로 프로세서 스케줄링(time-out, priority change 등)에 따라
preemption이 발생하여 ready state로 전이된다. 혹은 프로세스가 입출력 장치에 대한 자원을 할당 요청할 경우, sleep(block)이
발생하여 asleep state로 전이된다.
Blocked/Asleep State
프로세스가 프로세서 외에 다른 자원을 기다리는 상태로 자원 할당은 시스템 콜에 의해 이루어진다. 자원 할당을 받으면 wake-up이
발생하여 ready state로 전이된다.
Suspended State
메모리를 할 받지 못한(혹은 빼앗긴) 상태로 커널 또는 사용자에 의해 전이된다. 프로그램 정보 저장을 위한 특별한 파일 시스템인
swap device에 메모리 이미지를 보관한다. 메모리 이미지를 저장하고 메모리 할당을 반환하는 것을 swap-out(suspend),
저장했던 메모리 이미지를 통해 다시 메모리를 할당 받는 것을 swap-in(resume)이라 한다.
Terminated/Zombie State
프로세스 수행이 끝난 상태, 모든 자원을 반납 후 커널 내에 일부 PCB 정보만 이후 프로세스 관리를 위한 정보 수집을 위해 남아있다.
프로세스 관리를 위한 자료 구조
Ready Queue(ready list), I/O Queue, Device Queue 등이 있다.
인터럽트
예상치 못한 외부에서 발생한 이벤트를 의미한다. 인터럽트가 발생하면 커널이 개입하여 프로세스를 중단하고 해당 프로세스의
문맥을 커널에 저장한다. 이후 인터럽트 처리를 위해 인터럽트가 발생한 장소와 원인을 파악하고, 어떤 인터럽트 서비스를 진행할
것인지 결정 및 인터럽트 서비스 루틴을 호출한다. 스케줄러에 의해 특정 프로세스의 문맥이 복구되고 해당 프로세스가 진행된다.
트랩
소프트웨어 인터럽트를 의미한다.
프로그램이 오류를 범한 경우(Exception) 혹은 프로그램이 커널 함수를 호출하는 경우(System Call) 발생한다.
문맥 전환(Context Switching)
문맥이란 프로세스와 관련된 정보들의 집합을 의미한다. register context는 CPU에 저장되어 있고, code & data, stack, PCB
등은 메모리에 저장되어 있다. Context Saving이란 현재 프로세스의 register context를 저장하는 작업으로 메모리의 PCB에
저장한다. Context Restoring이란 register context를 프로세스로 복구하는 작업을 의미한다. Context Switching은 실행 중인
프로세스의 문맥을 저장하고 앞으로 실행 할 프로세스의 문맥을 복구하는 일을 의미한다.이는 커널의 개입으로 이루어진다
(프로세스의 PCB는 메모리 내부 커널에 존재하기 때문이다). 그런데 이런 Context Switching은 부하(Overhead)를 가진다.
따라서 불필요한 Context Switching을 줄이는 것이 중요하다.
동기식 입출력과 비동기식 입출력
동기식 입출력이란(Synchronous I/O) 입출력 요청 후, 해당 작업이 완료 전까지 운영체제가 CPU를 점유하고 있는 것을 의미한다.
입출력 작업 완료 전까지, 다른 수행이 이루어지지 않아 CPU 낭비가 발생할 수 있다. 또한 매시점 하나의 I/O만 처리할 수 있다.
I/O가 완료 될 때까지 해당 프로그램을 대기시키고 운영체제가 다른 프로그램에게 CPU를 넘겨주는 방식으로 개선할 수 있다.
비동식 입출력이란(Asynchronous I/O) 입출력 요청 후, 해당 작업의 완료를 기다리지 않고 운영체제가 다른 사용자 프로그램에게
CPU 점유를 넘기는 것을 의미한다. 두 입출력 모두 그 완료는 인터럽트를 발생시킨다.
'컴퓨터 시스템 > 운영체제' 카테고리의 다른 글
프로세스 동기화 & 상호배제 (0) | 2021.12.25 |
---|---|
프로세스 스케줄링 (0) | 2021.12.24 |
스레드 관리 (0) | 2021.12.24 |
운영체제 이해를 위한 컴퓨터 하드웨어 (0) | 2021.12.24 |
운영체제란 무엇인가? (0) | 2021.12.15 |