'프로세스'에 해당되는 글 1건

  1. 2008.03.04 프로세스와 쓰레드
2008.03.04 01:31

1. 프로세스

 

1) 프로세스란?

  • 수행중인 한 프로그램
  • 한 프로세스의 수행은 순차적으로 진행됨
  • 즉, 어떤 시점에도 프로세스의 한 instruction만 수행될 수 있음

2) 프로그램과 프로세스의 차이

  • 프로그램 : Passive Entry(Static)
  • 프로세스 : Active Entry(Dynamic) = 프로그램+레지스터+PC+Resource

3) 프로세스의 구성요소

  • Code(TEXT) : 우리가 생각하는 소스코드가 아니라 실행코드
  • 프로그램 카운터(PC)
  • 레지스터(Register)
  • 데이타
  • 스택(Stack)
  • 데이타 섹션(전역변수) : 유닉스에서는 이미지(image)라고 부름
  • 프로세스는 프로그램의 이미지 수행을 위해 필요한 자원 (메모리, CPU, PCB)등이 할당되어 생김

4) 프로세스의 상태

  • New
  • Ready (다수)
  • Running (1개)
  • Waiting (다수)
  • Terminate

① Job Scheduler

새로운 Process가 생기면(new) 이 스케쥴러가 적절하게 Ready Queue에 집어 넣어 준다
② Cpu Scheduler

Ready Queue에 들어 있는 Process중에 다음번에 수행될 Process를 골라 Running.

(선택 방법은 여러가지가 있음)
③ Interrupt

Running중에 너무 많이 수행된다거나 하면 Interrupt를 걸어 Ready Queue로 상태를 바꾸게 한다.
④ I/O or Event Wait

파일 입출력등로 인해 대기 시간이 길어지면 Waiting 상태로 넘겨버리고, CPU로 하여금 다른 일을 하게 한다.
이렇게 프로세스를 관리하는 것은 CPU차원에서 놀고 있는 시간(④의 경우)을 최소화하고, 전체적으로 프로세스들간에 시간분배를 공평하게 할려고(③) 하기 때문이다. 뭐 다른 이유들도 많이 있긴 하지만... 그리고 멀티 프로세싱에서.


5) PCB(Process Control Block)

한 프로세스에 관련된 정보를 포함하는 데이터 블록이나 레코드

  • 프로세스 상태
  • 프로세스 번호
  • 프로그램 카운터 : 다음에 수행할 instruction address
  • CPU Registers
  • CPU Scheduling 정보
  • 메모리 관리 정보
  • I/O 상태정보

6) 스케쥴링과 Context Switching

운영 체제는 프로세스뿐만 아니라 I/O, Device등의 큐에서 프로세스들을 선택해서 Running 시켜줘야 함. 여기서 선택하는 것이 바로 스케줄링이고 선택된 프로세스와 Running중인 프로세스간을 바꾸어 주는 것이 Context Switching이다. 실제 Context Switching이 일어날 때 사용하는 것이 PCB를 이용, 두개의 프로세스간에 스위칭을 살펴보면 다음과 같다.

Context Switching이 발생할 때 각 프로세스들의 현재 상태들을 기록한 PCB를 기록하고 로드해와야 한다. 이때 발생하는 모습을 그림으로 살펴보았듯이 프로세스가 낭비되는 것을 볼 수 있다.(물론 그림이라 상당히 크게 과장되어 있다)

여기서 유심히 살펴 보아야 할 것은 프로세스가 수행되기 위해서 많은 자원들을 가지고 있어야 한다는 것이다.

2. 쓰레드란 무엇인가 ?

1) 쓰레드를 사용하는 이유.

  • 프로세스를 공동으로 쓸 수 있게 한다.
  • 프로세스 Context Switching을 할때 시간이 많이 걸린다.

2) 쓰레드

  • LightWeight Process(LWP)라고 함.
  • CPU 이용의 기본단위
  • 구성요소
    - 프로그램 카운터
    - 레지스터 셋
    - 스택 공간(Stack Space)
  • 연관된 쓰레드들이 메모리와 화일을 공유함으로써 Reduced State를 갖는 LWP 프로세스
  • 쓰레드 - based 시스템에서는 쓰레드가 스케쥴링 단위
  • 각 쓰레드는 한 프로세스에만 속함
  • 프로세스 이외의 모든 자원을 enclosing 프로세스가 관리 관련된 thread간의 switching은 빠르고 효율적임.
  • 쓰레드도 자식 쓰레드를 가질 수 있음
  • 한 쓰레드가 블록(Block)되었을때, 동일 프로세스내의 다른 쓰레드 수행가능
  • 한 프로세스내의 Thread들은 상이한 프로세스들만큼 독립적이지 않음
  • 쓰레드들간의 보호가 없는 이유(Protection 할 수 없다) - 불가능(동일한 주소 공간을 가지므로 동일한 전역 변수를 공유) - 불필요. - (첨부) 동기화(Synchronized)를 이용하면 됨 : 자바에서
  • 한 응용내에서 Concurrency를 높이는데 효과적이다.
  • 비교적 최근에 개발된 운영체제 개념
  • 출처 프로세스와 쓰레드|작성자 ods81


    ----------------------------

    얼마전 SK에서 면접을 보는데 이런 사소한 것조차 생각이 안나서 당황했지..
    참내.. 이런 문제로 당황하게 될 줄은 상상도 못했었는데..;;
    휴~ SK 면접은 이런 당황함의 연속된 순간이었다..
    너무 방심한 면접이었어 ㅜ.ㅜ
    다시 한다면 잘 할 수 있을텐데..OTL

'앙마의 날개 > 컴퓨터공학' 카테고리의 다른 글

프로세스와 쓰레드  (0) 2008.03.04
What Is Web 2.0  (0) 2007.04.05
나의 Blog는 Web 2.0에 얼마나 가까운가...  (2) 2006.11.26
Posted by 열라착한앙마

댓글을 달아 주세요