일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 주간회고
- JavaScript
- 바닐라코딩
- CORS
- 소프트웨어장인정신
- 자바스크립트
- SpringSecurity
- 클로저
- Spring
- 메가테라
- html
- http 완벽 가이드
- Hibernate Reactive
- 신혼여행
- 헤리턴스아라
- HTTP 완벽가이드
- css
- 포트폴리오
- 2022회고
- http
- jvm
- 몰디브
- 취업회고
- java
- 상속
- 부트캠프
- 자바
- leetcode
- 이펙티브자바
- til
- Today
- Total
codingBird
4. 프로세스의 개념 본문
프로세스의 문맥이란?
> 현재 프로세스의 CPU 사용 상태를 나타내고, 메모리는 얼마나 할당되었으며, 함수는 어디에 있고, 어디까지 수행했으며, 전에는 어떻게 수행했었는가에 대한 정보가 담겨있음.
하드웨어 문맥
Program Counter > 어느 code를 실행하였는가
Register > 어떤 값을 넣고 있었는가
프로세스 관련 커널 자료구조
문맥교환이 일어나면 > 커널의 stack 부분에 해당 프로세스 커널스택이 저장됨( 이거 때문에 현재 프로세스가 진행 중이다) > data에 해당 프로세스의 PCB가 저장됨 ( CPU를 얼마나 사용했고 메모리는 얼마나 사용했는지 )
RUNNING > CPU에서 기계어를 수행하는 상태
READY > CPU의 READY QUEUE에서 기계어 수행을 기다리는 상태
BLOCKED (WAIT, SLEEP) > CPU를 주어도 당장 수행 할 수 없는 상태 ( 요청한 I/O를 기다리거나, 이벤트 입력을 기다리는 상태 )
NEW > 프로세스 생성 중인 상태
TERMINATED > 프로세스 종료 중인 상태
SUSPENDED > 외부적인 이유로 프로세스 수행이 정지된 상태 - 프로세스는 통째로 디스크에 SWAP OUT 된다
( 사용자가프로그램을 일시 정지, 시스템의 이유로 프로세스를 중단시킴, 메모리에 너무 많은 프로세스로 저장공간 부족 )
운영체제가 프로세스 관리하기 위해 프로세스 당 유지하는 정보
PROCESS STATE > NEW , RUNNING , READY...
PID , SCHEDULE INFORMATION , PRIORITY
CPU 수행관련 하드웨어 값 > CPU를 얻었다가 뺐길 때 문맥을 저장해야 다음 CPU를 얻었을 때 바로 다음 위치부터 수행이 가능함
문맥교환 > CPU를 한 프로세스에서 다른 프로세스로 넘기는 과정 ( 인터럽트를 통해)
> CPU를 내어주는 프로세스 상태를 그 프로세스 PCB에 저장 ( 커널의 DATA 부분 )
> CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
문맥교환이 일어나면 다른 프로세스로 넘어가는 과정 중 PCB ,주소등 읽어야 하기 떄문에 오버헤드가 발생함.
스케줄러는 운영체제가 가진 특정 기능을 수행하는 함수다.
장기스케줄러 > 어떤 시작 프로세스를 READY QUERE로 보낼지 결정하고 프로세스의 메모리 및 각종 자원을 주는 문제...지만 TIMES SHARING SYSTEM에는 장기 스케줄러가 없음 ( 무조건 READY)
단기 스케줄러 > CPU SCHEDULER ( CPU를 얼마나 줄지) > 어떤 프로세스를 RUNNING 시킬지 > 그리고 매우 빨라야함
중기 스케줄러 ( SWAPPER ) > RAM의 여유 공간을 위해 RAM에서 DISK로 쫓겨남 > 프로세스에게서 MEMORY를 뻇는 문제
Suspended는 Inactive 즉 메모리에 올라와있지 않은 상태, 다시 ACTIVE 상태로 돌아가려면 외부요인으로 INACTIVE 상태가 되었기 때문에 외부에서(시스템,유저)가 ACTIVE 상태로 만들어야함
SUSPENDED 상태에서는 CPU를 얻지 못하기 때문에 직접적으로 무언가를 할 수 없지만 BLOCKED 상태에서 IO요청을 했더라면 SUSPENDED BLOCKED 상태에서 IO를 받아 SUSPENDED READY 상태로 변할 수 있음
프로세스가 자기 코드를 수행 중이면 USERMODE ,
프로세스가 IO나 운영체제에 SYSTEM CALL을 해서 운영체제를 호출 했을 때, 그럼 이건 CPU를 운영체제에게 빼앗긴건가? 그건 아니다 프로세스가 여전히 CPU를 가지고 있음, 해당 프로세스가 여전히 돌아가는데 커널모드인거 뿐이다. (인터럽트 시스템콜 트랩)
IO 인터럽트는 하드웨어 인터럽트일까 소프트웨어 인터럽트일까?
CPU를 할당 받은 프로세서가 운영체제에 SYSTEM CALL로 IO를 요청 할 때 CPU를 통해 디스크컨트롤러의 IO에게 요청함 (소프트웨어 인터럽트) > 디스크에서 IO가 끝나면 디스크컨트롤러가 CPU에게 인터럽트를 검 ( 하드웨어 인터럽트)
프로세스 스케줄러 : https://kosaf04pyh.tistory.com/191
오버헤드 : https://oizys.tistory.com/14
SWAPPING : https://jhnyang.tistory.com/103
PCB : https://jhnyang.tistory.com/33
[운영체제]PCB (Process Control Block)란? PCB 정보 & Context Switching 문맥교환 & Overhead 오버헤드
운영체제 목차 프로세스의 정의와 프로세스 상태에 대한 이해를 기반으로 하고 있습니다. 헷갈리시는 분은 이전 포스팅 보고 오기 프로세스를 조금 어렵게(?) 이렇게 표현하기도 해요 프로세스
jhnyang.tistory.com
참고자료 - 운영체제 이화여자대학교 반효경 http://www.kocw.net/home/cview.do?cid=4b9cd4c7178db077
'운영체제' 카테고리의 다른 글
8. OS/ PROCESS 동기화 (0) | 2022.03.13 |
---|---|
6. 프로세스 관리 (0) | 2022.03.04 |
5. THREAD (0) | 2022.03.04 |
3. 프로그램의 실행 (0) | 2022.03.03 |
2-컴퓨터 시스템의 구조 (0) | 2022.03.01 |