티스토리 뷰

Computer Science/OS

운영체제 개론(2)

내일도이렇게 2019. 5. 25. 15:40

https://jmkim.tistory.com/21 이여서 이번에는 프로세스와 스레드에 관해 포스팅 하겠습니다.

 

 

프로세스 - 수행 중인 프로그램

 

 

1. 프로세스 제어 블록(Process Control Block, PCB)

  - 프로세스 정보를 가지고 있는 저장소 

 

  •  프로세스 번호(PID) - 프로세스의 고유한 정수 번호이며 다른 프로세스와의 구별을 위해 사용된다.
  •  프로세스 상태(Status) - 준비,실행,대기 ,보류 등의 상태를 나타낸다.
  •  프로세스 우선순위(Priority) - 스케줄링을 할 때 사용되는 우선순위이다. 
  •  프로그램 카운터 값 - 다음에 실행될 명령어의 주소 값을 가지고 있다. 
  •  메모리 포인터- 프로그램과 데이터가 저장되어 있는 메모리 블록 위치와 공유되는 메모리 블록들에 대한 포인터를 포함하과 있다. 
  •  문맥 데이터 - 문맥교환 시에 CPU 레지스터 값들을 저장하는 영역이다. 
  •  할당받은 자원들에 대한 목록 - 개방한 파일 등 할당받은 자원들의 정보 
  •  계정정보 - CPU를 사용한 시간 등의 정보 
  •  입출력 정보 - 진행 중인 입출력 요구 등의 정보 

    

 

2. 프로세스의 상태(Process State) 와 변화 

 

프로세스의 상태 변화 

 

  • 생성 상태 - 사용자가 요청한 작업이 커널에 등록되고 PCB가 만들어져 프로세스가 만들어진 다음 준비나 보류 준비 상태로 되기 위해 잠시 거치는 상태
  • 준비 상태 - 프로세스를 생성한 후 메모리 공간을 검사하여 충분한 공간이 있으면 메모리를 할당되며 
                   즉,  CPU를 할당받기 위해 기다리고 있는 상태 
  • 보류 준비 상태 - 공간이 충분하지 않는 상태  
  • 실행 상태 - CPU를 할당받아 실행 중인 상태를 말하는데 이때 CPU를 할당 하는 것을 디스패치라고 부른다. 
  • 대기 상태 - 프로세스가 실행되다가 입출력 처리를 요청하거나, 바로 확보 될 수 없는 자원을 요청하면 CPU를 양도하고 요청한 일이 완료되기를 기다리면서 대기하는 상태. 
  • 종료 상태 - 프로세스가 종료될 때 아주 잠시 거치는 상태이며 이 상태의 프로세스는 할당되었던 모든 자원들이 회수되고 PCB만 커널에 남아있는 상태
  • 보류 상태 -  메모리가 부족하거나 다른 이유에 의해 시스템은 활성 상태(준비, 실행, 대기)의 프로세스로부터 메모리를 회수할 경우가 있는 상태 ,  프로세스가 메모리 공간을 뺏기고 디스크로 나가야 하는 걸 말한다고 했는데 이것을 스왑되어 나간다(Swapped Out) 라고 하고 , 나중에 다시 메모리로 들어오면 스왑되어 들어온다( Swapped In) 라 부르며 두 경우를 동틀어 스와핑이라고 부른다. 
  • 보류 준비 상태 - 생성된 프로세스가 바로 메모리를 받지 못할 때나, 준비 또는 실행 상태에서 메모리를 잃게 될 때를 위해 필요하다. 실행 상태의 프로세스가 CPU를 반납하면서 준비 상태로 바뀔 때 메모리 공간까지 잃어야 하는 경우라면 보류 준비 상태로 바뀌게 된다. 

 

스레드 - 프로세스 내에서 실행되는 여러 흐름의 단위

프로세스는 부여된 자원의 소유자로서 , 스레드는 스케줄링의 단위로서 존재하게된다. 한 프로세스에 속한 각각의 스레드들은 프로세스가 가지는 자원을 공유하면서 각자는 자신의 실행 환경 즉, 프그램 카운터로 표현되는 현재의 실행 위치 치와 스택, 레지스터 값들을 따로 가지게 되는 것이다. 

 

다중 스레딩(Multi-threading) 이란 하나의 프로세스를 다수의 스레드로 만들어 실행하는 것을 말하는데, 다중 스레딩을 하게 되면 하나의 프로세스 내에 다수의 실행 단위들이 존재하여 작업의 수행에 필요한 자원들을 공유하기 때문에 자원의 생성과 관리가 중복되는 것을 줄일 수 있다. 

 

1. 사용자 레벨 스레드 

  스레드 라이브러리에 의해 관리되며, 스레드와 관련된 모든 행위는 사용자 공간에서 이루어지므로

  커널은 스레드의 존재를 알지 못한다.

 

  장점 : 스레드 스위칭에 커널의 개입이 필요 없다. 

  단점 : 특정 스레드의 대기가 자신이 소속된 프로세스 내의 모든 스레드들의 대기를 초래하며, CPU가 프로세스 단위로 할당되기 때문에 다중처리의 환경이 주어진다 해도 스레드 단위의 다중처리가 되지 못한다는 점이다. 

 

 

2. 커널 레벨 스레드 

   모든 스레드의 관리를 커널이 하는 경우를 말한다. 스케줄링은 커널에 의해 스레드 단위로 이루어지므로 사용자 레벨 스레드 대의 단점을 극복할 수 있지만 같은 프로세스에 속한 스레드 간의 스위칭에도 커널의  개입이 필요하므로 스위칭이 요구된다. 

 

 

 

Reference

OS? Oh Yes! 

'Computer Science > OS' 카테고리의 다른 글

운영체제 개론(3)  (0) 2019.06.02
운영체제 개론(1)  (0) 2019.05.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함