일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 운영체제
- 의존성주입
- 부팅
- 취뽀
- CPU
- PCB
- 스프링
- zookeeper
- 커널
- docker
- 스프링빈
- 도커
- Pub/Sub
- Kafka
- fork()
- OS
- 데이터엔지니어
- CNS
- 코테
- 제어의역전
- spring boot
- 자바빈
- 컴퓨터 구조
- 합격
- POJO
- Context Switching
- 시스템호출
- Data Engineering
- 카프카
- 회고
Archives
- Today
- Total
모래성 말고 철옹성
Chapter3. 프로세스와 스레드 (1) 본문
프로세스의 개요***
프로세스란?
프로세스란 메모리상에서 작업하고 있는 프로그램을 말한다.
*프로그램 vs 프로세스
- 프로그램 : 저장장치에 존재하는 실행파일
- 프로세스 : 해당 실행파일(프로그램)이 실행 되어 메모리상에서 작업되고 있는 단위
프로세스의 상태
현대 운영체제는 대부분 시분할 시스템이기 때문에 프로세스 상태를 두어 프로세를 관리한다.
프로세스는 다음과 같은 다섯 가지의 상태를 가진다.
상태 | 설명 |
New | 프로그램을 메모리에 할당하고 PCB가 생성되는 생성 상태이다. |
Ready | 프로세스가 생성된 후 시작하기를 기다리고 있는 준비 상태이다. |
Runing | 프로세스가 time slice를 얻어 CPU에 할당되어 CPU자원을 사용하고 있는 실행 상태이다. |
Waiting (Block) | 실행 상태에 있는 프로세스가 특정 이벤트(I/O 완료신호, 특정 신호 등)를 기다리고 있는 상태이다. 이벤트를 받으면 준비 상태로 돌아간다. |
Terminated | 프로세스가 완전히 종료되어 모든 데이터가 종료된 종료 상태이다. |
아래는 위 다섯가지 상태가 각 관계에서 어떻게 변화하는지 프로세스 상태 변화도를 나타내었다.
- New → Ready
프로그램이 새로 할당된다고 무조건 큐에 들어가 Ready 상태가 되는 것은 아니다. 운영체제에 Admit(허가)가 떨어진 이후에 Ready상태를 부여받을 수 있다.
메모리 자원 부족의 문제 혹은 CPU 점유율이 높을 때 해당 상태변화가 지연될 수도 있다. - Ready → Running
Dispatcher가 대기중인 프로세스를 CPU에 할당해 Running 상태로 만든다. - Running → Terminated
운영체제는 프로그램이 완전 종료시 Terminated 상태로 만들고 관련 데이터를 삭제한다. - Running → Ready
CPU는 프로세스에 할당된 time slice를 다 사용하게 되면 timeout(pid) 실행으로 Ready 상태로 돌아가게 된다. - Running → Waiting
프로세스가 Running 상태 중에 I/O가 발생하고나 다른 작업에 의해 이벤트가 발생하면 Waiting 상태로 변경된다. - Waiting → Ready
CPU는 I/O 또는 이벤트가 완료되었다는 인터럽트 신호를 받고 다시 Running이 아닌 Ready 상태로 옮겨지게 된다.
프로세스 제어 블록과 문맥 교환
프로세스 제어 블록 (PCB)*
PCB는 프로세스를 실행하는 데 주요 정보들을 저장하고 있는 자료 구조이다. PCB의 구성은 아래와 같이 구성된다.
포인터 | 프로세스 상태 |
프로세스 구분자 (PID) | |
프로그램 카운터 (PC) | |
프로세스 우선순위 | |
레지스터 정보 | |
메모리 관리 정보 | |
계계정 정보 | |
PPID & CPID . . . |
문맥교환 (Context Switching)**
문맥교환(Context Switching)이란 CPU가 현재 점유하고 있는 프로세스를 잠시 중단하고 새로운 프로세스를 받는 작업이다.
프로세스의 연산
프로세스 구조
프로세스가 생성이 되어 메모리에 올라가는 프로세스의 구조는 그림(b)와 같다.
- stack : local 변수, 함수 호출 등 임시 데이터가 저장되는 공간
- heap : 동적할당으로 생긴 데이터가 저장되는 공간
- data : global 변수, 초기화된 데이터가 저장되는 공간
- text(code) 영역 : 소스 코드가 저장되는 공간
반응형
'Computer Science > 운영체제' 카테고리의 다른 글
Chapter2. 컴퓨터 구조와 성능 향상 (2) (1) | 2022.08.23 |
---|---|
Chapter2. 컴퓨터 구조와 성능 향상 (1) (0) | 2022.08.22 |
Chapter1. 운영체제의 개요 (2) (0) | 2022.08.04 |
Chapter 1. 운영체제의 개요 (1) (0) | 2022.08.04 |
운영체제 스터디 2022-07-31~ (0) | 2022.07.31 |
Comments