일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- go
- 배포 파이프라인
- 윈도우키보드
- 디자인패턴
- gitops
- Intellij
- 컴포지트패턴
- UnBuffered channel
- Logrus
- 사설 ip
- 티스토리챌린지
- AWS
- 대규모 시스템 설계
- http 413
- Buffered channel
- elasticsearch
- apollo router
- 배포 프로세스
- notification system
- 오블완
- body size
- Infra
- System Design
- GoF
- Kubernetes
- goland
- intellij ide
- GoF 디자인패턴
- Golines
- golang
Archives
- Today
- Total
Fall in IT.
운영체제 프로세스 개념과 흐름 알아보기 본문
반응형
안녕하세요.
오늘은 프로세스의 개념과 흐름에 대해서 간단하게 알아보도록 하겠습니다.
프로세스의 개념
- 실행중인 프로그램을 뜻합니다.
프로세스의 Context 개념
- 간단하게 프로세스의 상태를 나타냅니다.
- 프로세스의 상태로는 크게 세가지가 있습니다. CPU의 수행상태, 프로세스의 주소 공간, 프로세스 관련 커널 자료 구조
- CPU의 수행 상태
- CPU의 수행 상태를 나타내는 하드웨어 문맥으로 PC(Program Counter)와 각종 register가 해당됩니다.
- Program Counter란, 프로세스의 실행될 부분 입니다. - 프로세스의 주소 공간
- code, data, stack - 프로세스 관련 커널 자료구조
- PCB(Process Control Block): 프로세스의 정보를 저장해놓는 블록을 의미합니다.
- Kernel stack: 프로세스들의 정보 즉, PCB가 저장되는 공간입니다.
프로세스의 상태 (Process State)
- Running
- 프로세스가 CPU를 점유하고 있는 상태 - Ready
- 프로세스가 CPU를 점유하기위해 기다리고 있는 상태(메모리에는 이미 올라와 있을뿐만 아니라 CPU 동작을 위한 모든 조건을 만족한 상태) - Blocked (wait, sleep)
- CPU를 주어도 당장 작업이 수행될 수 없는 상태
- 예, 디스크에서 file을 읽어와야 하는 경우. 모든 파일을 읽어온 다음에 ready 상태로 변합니다. - Suspended (stopped)
- 중기스케줄러에 의해서 생긴 상태로, 외부의 영향으로 인해 inactive된 상태
- 외부에서 다시 resume 시켜야 active 상태로 변경 됩니다.
PCB 개념
- 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보입니다.
- 유지하는 정보
- OS가 관리상 사용하는 정보: process state, process id, scheduling information, priority 등
- CPU 수행 관련 하드웨어 값: program counter, registers
- 메모리 정보: code, data, stack의 위치 정보
- 파일 정보: open file 정보
문맥교환 (Context Switch)
- 프로세스A가 CPU를 점유하고 있을때, 프로세스B에게 CPU 점유를 넘겨주는 과정을 말합니다.
- 이때, CPU는 프로세스A의 상태(PCB)를 저장하고, 프로세스B의 상태(PCB)를 읽어온 후 어디서부터 동작할지 확인한 후 이어서 동작합니다.
- System call이나 Interupt가 발생한다고 반드시 context switch가 일어나는 것은 아닙니다.
- 잠시 커널모드로 돌아갔다가(운영체제에게 CPU가 넘어갔다가) 다시 기존 프로세스에게 넘어오는 경우도 있습니다.
프로세스를 스케줄링하기 위한 큐
- Job queue: 현재 시스템 내에 있는 모든 프로세스가 담겨있는 공간입니다.
- Ready queue: 현재 메모리 내에 있으면서 CPU를 점유하기위해 기다리는 프로세스가 담겨있는 공간입니다.
- Device queue: I/O device의 처리를 기다리는 프로세스가 담겨있는 공간입니다.
(프로세스들은 각 queue를 오가며 수행됩니다.)
스케줄러
(스케줄은 각각의 자원별로(cpu, memory 등) 어떻게 우선순위를 정할지 나타낼때 사용합니다.)
- Long-term scheduler(job scheduler)
- 프로세스에 메모리를 주는 문제를 스케줄링 합니다.
- 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정합니다.
- 초기 시스템에서 사용 했었습니다. 현재는 Medium-term scheduler를 사용합니다. - Short-term scheduler(cpu scheduler)
- 프로세스에 CPU를 점유시키는 문제를 스케줄링 합니다.
- 어떤 프로세스를 다음번에 running 시킬지 결정합니다. - Medium-term scheduler(swapper)
- 프로세스에게서 memory를 뺏는 문제를 스케줄링 합니다.
- 지금의 시스템은 중기스케줄러 사용합니다.
참조
반응형
'컴퓨터 & 네트워크 > 운영체제' 카테고리의 다른 글
CPU Scheduling (0) | 2018.01.23 |
---|---|
Process Management 알아보기 (0) | 2018.01.22 |
운영체제란? 간단하게 알아보기 (0) | 2018.01.15 |
Comments