티스토리 뷰

운영체제

프로세스 정리

jazzmaster 2019. 4. 20. 03:05

1. 프로세스란 ? 

아주 쉽게 말해서 실행중인 프로그램. 윈도우에서 .exe 파일을 실행 시켜본 기억은 

누구나 있을 것이다. 그게 프로세스다. 

 

2. 어찌 동작하는가? 

프로그램을 실행하는 순간. 메모리에 할당이 이루어지고 (윈도우에서 메모리 점유율이 올라간다)

이 메모리 공간으로 바이너리 코드가 올라간다. 

 

3. 무엇으로 이루어져 있는가? 

c, c++ 을 개발하는 프로그래머의 관점에서 생각해보자 프로세스를 구성하는 요소는 크게 4가지

Data 영역 : 전역변수 , static 변수의 할당 

Stack 영역 : 지역변수 할당과 함수 호출 시 파라미터들, 

Heap 영역 : 동적 할당 (new, malloc) 

Code 영역 : 나머지 실행파일을 구성하는 명령어들이 올라가는 영역 

 

하나의 프로세스당 저 4가지의 요소를 다 가지고 있다. 

 

즉 니가 배그를 하면서 카톡을 하고 크롬브라우저로 웹서핑을 하고 있다면 

 

총 세개의 프로세스가 있고 각각 4가지의 요소를 다 각각 가지고 있다. 

 

 

4. 스케줄링은 어찌하나? 

먼저 스케줄링이란 프로세스들의 cpu 자원을 할당하는 순서 및 방법을 정하는 일이다. 

스케줄링을하는데는 알고리즘이 존재한다.

 

 

5. 프로세스의 상태 변화 

여러 프로세스들이 번갈아 가면서 실행이 되면서(너무 빨라서 우리 눈에는 동시에 실행되는것처럼 보임)

프로세스들의 상태가 존재한다. 

아래 사진 참조 

 

 

 

 

일반적으로 데이터 입출력 (ex socket 관련) 을 할때 러닝에서 블록 상태가 발생한다. 

블록 상태는 레디와 무슨 차이가 없는것 처럼 생각할 수도 있는데,

블록 상태는 스케줄러에 의한 영향을 받지 않는다는 것. 그래서 블록에서 레디로 전환되어야만

스케줄러에 의해 러닝 상태가 될 수 있음

 

 

 

6. 프로세스 컨텍스트 스위칭

러닝 중인 프로세스의 상태 변경은 부하를 가져다 줌

컴퓨터 구조의 관점에서 보면 현재 실행중인 프로세스 데이터들은 cpu내에 레지스터들에도 채워져있다

그러면 프로세스가 변경되면 레지스터에 있는 데이터들도 변경되어야 하는데 이러한 과정이 바로 

프로세스 컨텍스트 스위칭임. 

 

이것은 시스템에 상당한 부하를 안겨다 준다 --> 많이 하면 안좋다는 소리겠지 ?

더 쉽게 생각을 해보면 우리의 개인 pc를 사용하는데 크롬 실행하고 게임하면서 유튜브도 보고 카톡도 하고 메모장도 켜고 여러일을 하면 렉을 느낄 수 있다. (물론 요즘 pc들은 어느정도까진 커버하겠지만)

 

렉을 느끼는데에는 여러 이유가 있겠지만 그 중 하나가 이 프로세스 컨텍스트 스위칭 때문이다.

 

 

 

'운영체제' 카테고리의 다른 글

window 문자와 문자열  (0) 2019.06.07
메모리에 관한 이야기  (0) 2019.04.28
스레드 동기화 정리  (0) 2019.04.27
thread 정리  (0) 2019.04.22
커널 오브젝트 , 핸들  (0) 2019.04.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함