Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- ubuntu redis
- redis 외부설정
- 의존성 패키지 설치
- apt-rdepends
- 포함 관계
- redis 설정
- 특정 행
- kafkaCLI
- 폐쇄망
- 쿠버네티스 패턴
- 웹 애플리케이션 요청 흐름
- 웹 애플리케이션 아키텍처
- docker
- REST 성숙도 모델
- 예측 범위 내의 요구사항
- image 압축
- redis 명령어
- Exception Handing
- 오프라인 설치
- 선언적 배포
- 자료구조
- Oracle.DatabaseError
- Port already in use: 9999
- SQL 내장 함수
- abstract 제어자
- 예외 전가
- 도커
- 의존성 설치
- 객체
- 특정 행 출력
Archives
- Today
- Total
리꾸므
[OS] 프로세스 관리 본문
Process
프로세스는 메인 메모리에 할당되어 실행중인 상태인 프로그램을 의미한다.
하드디스크에 있는 프로그램이 메인 메모리로 적재되어 있을 때 프로세스라고 부른다.
다섯가지 상태 중 하나의 상태로 존재한다.
- new : 메인 메모리로 올라오는 상태
- ready : cpu 할당을 받는 것을 기다리는 상태
- running : cpu가 할당되어 작업 수행중인 상태
- waiting : I/O와 같은 cpu 외의 할당을 받아 기다리는 상태
- terminated : 위 작업들이 모두 끝날 완전히 종료된 상태
PCB
프로세스에 대한 모든 정보가 모여있는 곳이다.
CPU는 한 프로세스가 종료될 때까지 수행하는 것이 아닌, 여러 프로세스를 중간 중간 바꿔가며 수행한다.
CPU가 수행중인 프로세스를 나갈 때, 이 프로세스의 정보를 저장하고 있는 곳이 PCB이다.
PCB는 각 프로세스마다 하나씩 존재하며
프로세스의 상태, 프로세스의 번호(PID), 해당 프로세스의 program counter(pc), register값, MMU정보, CPU 점유시간 등이 포함되어 있다.
PCB는 운영체제 내부의 프로세스를 관리하는 코드 부분에 저장되어 있다.
Queue
CPU는 하나이고 메인 메모리 공간이 한계가 존재하여 많은 프로세스들은 수행하기위해서 줄을 서서 기다릴 수밖에 없다.
이러한 줄들이 세가지가 있으며 큐(Queue)라고 명칭한다.
이러한 순서를 기다리는 공간이 있다면 순서를 정해주는 알고리즘이 있어야하는데 이러한 알고리즘을 스케줄링이라 한다.
- Job Queue : 메인 메모리의 공간이 없어 할당 순서를 기다리는 큐이다.
- Job scheduler(Long-term scheduler)
- ReadyQueu : ready상태에 있는 프로세스가 CPU할당을 받기 위한 큐이다.
- CPU scheduler(Short-term scheduler) CPU 점유 순서를 정해준다.
- Device Queue : 하드디스크나 I/O의 할당을 받기 위한 큐이다.
- Devuce scheduler
Multiprogramming
단일 프로세서 환경에서 여러 개의 프로세스가 동시에 실행되는 것을 말한다.
- Degree of multiprogramming : 현재 메모리에 할당되어 있는 프로세스 개수
- bound process : I/O와 CPU 두개로 나눠진다.
- I/O : 해당 프로세스에서 I/O(입출력) 작업이 차지하는 비중이 높은 프로세스
- CPU : 해당 프로세스에서 CPU(계산) 작업이 차지하는 비중이 높은 프로세스
- Medium-term scheduler : short-term 보다는 덜, long-term보다는 자주 발생하는 scheduler이다.
메인 메모리에 있는 전체 프로세스를 검사하여 보조기억장치로 옮긴 프로세스를 옮긴다. 대표적으로 장기간 사용하지 않은 프로세스를 옮긴다.- Swapping : 메인 메모리에서 장기간 사용하지 않은 프로세스를 하드디스크로 옮겨주고(Swap out) 나중에 다시 사용되려고하면 해당 프로세스를 메인 메모리에 할당(Swap in)해준다.
Swap out 된 프로세스가 in 했을때 이전 공간으로 할당되는 것을 보장하지는 않는다.
- Swapping : 메인 메모리에서 장기간 사용하지 않은 프로세스를 하드디스크로 옮겨주고(Swap out) 나중에 다시 사용되려고하면 해당 프로세스를 메인 메모리에 할당(Swap in)해준다.
- Context Switching(문맥전환) : CPU가 한 프로세스에서 다른 프로세스로 옮겨가는 것을 말한다.
- CPU scheduler : CPU가 어느 프로세스를 선택할지 정한다.
- Dispatcher : 문맥전환이 발생시 CPU의 내부 데이터를 이전 프로세스 데이터를 PCB에 갱신하고 새로 시작되는 데이터로 바꿔준다.
- Context switching overhead : 문맥전환 발생시 dispatcher에서 수행하는 작업을 매번 수행해야함으로 이것이 overhead이다.
문맥전환이 자주 발생함으로 dispatcher를 구현하는 코드에 대한 효율을 최대한 높여 overhead를 줄여야한다.