티스토리 뷰
프로세스 (Process) 정의
-
실행중인 프로그램
-
커널에 등록되고 커널의 관리하에 있는 작업
-
각종 자원들을 요청하고 할당 받을 수 있는 개체
-
능동적인 개체 : 실행 중에 각종 자원을 요구, 할당, 반납
-
프로세스 관리 블록(PCB)을 할당 받는 개체
PCB (Process Control Block)
-
각 프로세스들에 대한 정보를 관리
-
프로세스 생성 시, 생성 됨
-
PCB가 관리하는 정보
-
PID : 프로세스 고유 식별 번호
-
스케줄링 정보 : 프로세스 우선순위 같은 스케줄링 관련 정보
-
프로세스 상태 : 자원 할당, 요청 정보 등
-
메모리 관리 정보 : page table, segment table 등
-
입출력 상태 정보 : 할당 받은 입출력 장치, 파일 등에 대한 정보
-
문맥 저장 영역(context save area) : 프로세스의 레지스터 상태를 저장하는 공간
-
계정 정보 : 자원 사용 시간 등 관리
-
-
PCB 정보는 OS별로 서로 다름
-
PCB 참조 및 갱신 속도는 OS의 성능을 결정 짓는 요소 중 하나이다.
프로세스 상태
프로세스 상태 다이어그램
Created State : 생성된 상태
-
작업을 커널에 등록
-
PCB 할당 및 프로세스 생성
-
커널 : 가용 메모리 공간 체크 및 프로세스 상태 전이
Ready State
-
프로세서 외에 다른 모든 자원을 할당 받은 상태
-
프로세서 할당 대기 상태, 즉시 실행 가능한 상태
-
즉, 메모리를 할당받았다면, CPU만 할당받으면 된다 => 즉시 실행 가능한 상태
-
-
Dispatch (or Schedule) : ready -> running
Running State
-
프로세서와 필요한 자원을 모두 할당 받은 상태
-
벗어나는 2가지
-
Preemption (CPU 빼앗김)
-
Running state -> ready state
-
프로세서 스케줄링
-
-
Block / Sleep : I/O가 끝나기를 기다리는 상태
-
Running state -> asleep state
-
-
Blocked/Asleep state
-
프로세서 외에 다른 자원을 기다리는 상태
-
wake-up : I/O가 끝났다면!
-
Asleep state -> ready state
-
Suspended State : 지연된 상태
-
메모리를 할당 받지 못한(빼앗긴) 상태
-
메모리 이미지를 swap device에 보관
-
swap device : 프로그램 정보 저장을 위한 특별한 파일 시스템
-
-
커널 또는 사용자에 의해 발생
-
-
Swap-out(suspended), Swap-in(resume)
Terminated/Zombie state
-
끝났는데 죽지 않음
-
프로세스 수행이 끝난 상태
-
모든 자원 반납 후, 커널 내에 일부 PCB 정보만 남아 있는 상태 : 이후 프로세스 관리를 위해 정보 수집
프로세스 관리를 위한 자료구조
-
Ready Queue
-
I/O Queue
-
Device Queue
인터럽트
-
예상치 못한, 외부에서 발생한 이벤트
인터럽트 처리 과정
- Interrupt 발생
- 현재 Context(문맥)을 PCB에 저장한다.
- Interrupt Handling : 어디서, 왜 발생했는지 파악한다.
- Interrupt service : 만약 서비스를 해줘야 한다면 서비스를 해준다. 이때, 그 서비스를 처리할 procces(Pih)를 넣는다.
- Context restoring : 그 다음 대기 순서인 Pj가 들어간다.
Context Switching(문맥 교환)
- Context : 프로세스와 관련된 정보들의 집합이다.
-
CPU register context 는 CPU안에 저장
-
Code & data, stack, pcb는 메모리안에 저장
- Context saving : 현재 프로세스의 register context를 저장하는 작업
- Context restoring : register context를 프로세스로 복구하는 작업
- Context switching : 실행중인 프로세스의 context를 저장하고, 앞으로 실행 할 프로세스의 context를 복구하는 일 - 커널의 개입으로 이루어짐
- Context switching은 OS의 성능에 큰 영향을 준다. 그래서 불필요하게 사용하면 안된다.
본 게시글은 공부를 목적으로 작성합니다.
강의자료 및 강의의 저작권은 다음과 같습니다.
https://sites.google.com/view/hpclab/courses/operating-system?authuser=0
문제시 삭제하겠습니다
'OS' 카테고리의 다른 글
[OS] 프로세스 동기화 & 상호배제 (0) | 2020.03.18 |
---|---|
[OS] Basic Scheduling algorithms (프로세스 스케줄링 알고리즘) (0) | 2020.03.16 |
[OS] Process Scheduling 개념 (0) | 2020.03.16 |
[OS] 스레드 실습 : 멀티 스레드(채팅) (0) | 2020.02.26 |
[OS] 운영체제 개요 (0) | 2020.01.15 |
- Total
- Today
- Yesterday
- 백 트래킹
- Android
- java
- git
- SRTN
- 백트래킹
- Process Scheduling
- 우선순위큐
- 3-way-handshake
- SWExpert
- binarySearch
- MLQ
- hash
- 4-way-handshake
- 사회망서비스
- 농협정보시스템IT
- DFS
- hashtable
- loss function
- Objective function
- 프로그래머스
- 프로세스 스케줄링
- 자료구조
- MFQ
- 네트워크
- N-Queen
- algorithm
- 기능개발
- programmers
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |