티스토리 뷰
Milti Process
Milti Process
란 2개 이상의 프로세스가 동시에 실행되는 것을 말한다. 이 때 프로세스들은 CPU와 메모리를 공유하게 된다. memory
의 경우에는 여러 프로세스들이 각자의 memory영역을 차지하여 동시에 적재되는데, 하나의 CPU는 매 순간 하나의 프로세스만 연산이 가능하다. 하지만 CPU의 처리 속도는 상당히 빠르기 때문에 여러 프로세스들이 CPU에서 번갈아 실행되어도 사용자 입장에서는 마치 여러 프로그램이 동시에 실행되는 것처럼 느껴진다.
이처럼 CPU의 작업시간을 여러 프로세스들이 조금씩 나누어 쓰는 시스템을 시분할 시스템(time sharing system
)이라고 한다.
메모리 관리
여러 프로세스가 동시에 memory에 적재된 경우, 서로 다른 프로세스의 영역을 침범하지 않도록 운영체제가 관리한다.
PC Register
CPU는 PC(program counter) register가 가리키고 있는 명령어를 읽어들여 연산을 진행한다. PC register에는 다음에 실행될 명령어의 주소값이 저장되어 있다. multi process 시스템에서는 process1이 진행되고 있을 때는 process1의 code 영역을 PC register가 가리키다가, process2가 진행되면 process2의 code 영역을 가리키게 된다. CPU는 PC register가 가리키는 곳에 따라 process를 변경해가면서 명령어를 읽어들이고 연산을 하게 된다.
Context
시분할 시스템에서는 한 프로세스가 매우 짧은 시간동안 CPU를 점유하여 일정부분의 명령을 수행하고, 다른 프로세스에게 넘긴다. 그 후 차례가 되면 다시 CPU를 점유하여 명령을 수행하는데, 기존에 어디까지 명령을 수행했고, register에는 어떤 값이 저장되어 있었는지에 대한 정보가 필요하게 된다. 프로세스가 현재 어떤 상태로 수행되고 있었는지에 대한 정보가 바로 context
이다. context 정보들은 PCB(Process Control Block)에 저장된다.
PCB (Process Control Block)
PCB는 운영체제가 프로세스를 표현한 자료구조이다. PCB에는 프로세스의 중요한 정보가 포함되어 있기 때문에, 일반 사용자가 접근하지 못하도록 보호된 메모리 영역 안에 저장된다. 일부 운영체제에서 PCB는 보호를 받으면서도 비교적 접근하기가 편리한 커널 스택에 위치한다.
PCB는 일반적으로 다음과 같은 정보가 포함된다.
- Process State : new, running, waiting, halted 등의 state가 있다.
- Process Number : 해당 process의 number
- Program counter(PC) : 해당 process가 다음에 실행할 명령어의 주소를 가리킨다.
- Register : 컴퓨터 구조에 따라 다양한 수와 유형을 가진 register 값들
- Memory limits : base register, limit register, page table 또는 segment table 등
Context switch
Context switch란, 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것을 말한다. 이 때 이전 프로세스의 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업이 이루어진다.
정리
Q. 프로세스의 context가 무엇인가?
- context란, 프로세스가 현재 어떤 상태로 수행되고 있는지에 대한 정보이다. 해당 정보는 PCB(Process Control Block)에 저장한다.
Q. PCB(Process Control Block)에는 무엇이 저장되는가?
- PCB는 운영체제가 process에 대해 필요한 정보를 모아놓은 자료구조이다. PCB에는 일반적으로 다음과 같은 정보가 포함된다.
- Process state
- Process number
- Program Counter(PC), register
- CPU 스케쥴링 정보, 우선순위
- 메모리 정보 (해당 process의 주소 공간 등)
Q. Context switch는 무엇인가?
- Context switch란 한 프로세스에서 다른 프로세스로 CPU 제어권을 넘겨주는 것을 말한다. 이 때 이전의 프로세스 상태를 PCB에 저장하여 보관하고 새로운 프로세스의 PCB를 읽어서 보관된 상태를 복구하는 작업이 이루어진다.
Q. 프로세스의 state에는 어떤 것들이 있는가?
- 프로세스는 실행(running), 준비(ready), 봉쇄(wait, sleep, blocked) 세 가지 상태로 구분된다.
- 실행 : 프로세스가 CPU를 점유하고 명령을 수행중인 상태
- 준비 : CPU만 할당받으면 즉시 명령을 수행할 수 있도록 준비된 상태
- 봉쇄 : CPU를 할당받아도 명령을 실행할 수 없는 상태 (ex: I/O 작업을 기다리는 경우 등)
'Study' 카테고리의 다른 글
[운영체제] 멀티 프로세스 환경에서 프로세스간 데이터는 어떻게 전달될까? (0) | 2022.08.19 |
---|---|
[운영체제] 멀티 쓰레드 (Multi Thread) (0) | 2022.08.18 |
[자료구조] Hash table collision (0) | 2022.08.08 |
[자료구조] Hash table (0) | 2022.08.02 |
[자료구조] priority queue (0) | 2022.08.01 |
- Total
- Today
- Yesterday
- mysql 8.0
- 코테
- 파이썬
- webflux
- 인프런
- 백준
- 노마드코더
- Spring
- Real MySQL
- Algorithm
- 리팩토링
- 릿코드
- 스프링 부트
- 문자열
- spring boot
- leetcode
- 알고리즘
- 데이터베이스
- 북클럽
- 스프링
- 자료구조
- 김영한
- kotlin
- 정렬
- 스프링부트
- MySQL
- 코틀린
- 노마드
- 구현
- 그리디
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |