프로세스와 쓰레드
1. 프로세스란 무엇인가 ?
프로세스란 ?
프로그램과 프로세스의 차이
프로세스의 구성요소
프로세스의 상태
① 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차원에서 놀고 있는 시간(④의 경우)을 최소화하고, 전체적으로 프로세스들간에 시간분배를 공평하게 할려고(③) 하기 때문이다. 뭐 다른 이유들도 많이 있긴 하지만... 그리고 멀티 프로세싱에서.
프로세스 제어 블럭(Process Control Block, PCB)
정의 : 한 프로세스에 관련된 정보를 포함하는 데이타 블록이나 레코드
스케쥴링과 Context Switching
운영 체제는 프로세스뿐만 아니라 I/O, Device등의 큐에서 프로세스들을 선택해서 Running 시켜줘야 함. 여기서 선택하는 것이 바로 스케줄링이고 선택된 프로세스와 런닝중인 프로세스간을 바꾸어 주는 것이 Context Switching이다. 실제 Context Switching이 일어날 때 사용하는 것이 PCB를 이용 그림으로 두개의 프로세스간에 스위칭을 살펴보면 다음과 같다.
Context 스위칭이 발생할때
Context Switching이 발생할 때 각 프로세스들의 현재 상태들을 기록한 PCB를 기록하고 로드해와야 한다. 프로세스가 낭비
여기서 유심히 살펴 보아야 할 것은 프로세스가 수행되기 위해서 많은 자원들을 가지고 있어야 한다는 것이다.
그래서 이제 Thread라는 개념이 등장하게 된다.
2. 쓰레드란 무엇인가 ?
쓰레드를 사용하는 이유.
쓰레드
-프로그램 카운터
-레지스터 셋
-스택 공간(Stack Space)
예) Sun's Unix, Mach, OS/2, Windosw95(?)
쉽게 설명해 볼까요?
프로세스란 하나의 시스템에서 여러개의 프로그램을 돌아가게 해주기 위한 방법입니다.
쉬운 예로 도스에서는 하나의 프로그램밖에 수행 못하잖아요?
그런데, 윈도우즈에서는 동시에, PC통신 프로그램도 띄우고, 아래한글 과 같이 동시에 여러개의 프로그램을 띄우지요?
그렇게 여러개의 프로그램을 띄울 수 있는 시스템을 멀티 프로세스 시스템이라 합니다.
특히 Unix쪽에서 발달했는데요. Unix의 경우, 동시에 여러User가 접속하여 사용하고, CPU등의 자원은 한정되어 있기 때문에, 각 사용자별로 띄우는 프로그램을 Process로 관리하는 것이지요.
쓰레드란, 이 Process를 여러조각으로 나눈 개념입니다. 하나의 프로그램에서 여러개의 일을 동시에 할 수 있는것. 예를 들면, 통신 에뮬레이터에서, 채팅을 하면서, 자료를 다운로드 받는 것등이 멀티 쓰레드의 예가 될 수 있겠네요.
프로그래밍적인 면에서도, 많은 차이가 있습니다만 구체적인 내용은 이만 접기로 하겠습니다.
쓰레드와, 멀티프로세스 시스템을 이해하시려면 운영체제에대한 책이나, 또는 자바 쓰레드 관련서적쯤은 하나읽으셔야 문제없는 프로그래밍을 하실 수 있으리라 봅니다
참조 : Operating System Concept - Silberschatz Galvin (4판) ,Addison Wesley
작성 : 자바스터디 네트워크 운영자 , 잠탱이

Comments List
釉