[프로그래밍] 프로세스와 스레드
- 등록일 / 수정일
- 페이지 / 형식
- 자료평가
- 구매가격
- 2008.11.10 / 2019.12.24
- 5페이지 / doc (MS워드 2003이하)
- 평가한 분이 없습니다. (구매금액의 3%지급)
- 500원
최대 20페이지까지 미리보기 서비스를 제공합니다.
자료평가하면 구매금액의 3%지급!
1
2
3
4
5
추천 연관자료
- 목차
-
프로세스
스레드
notify() 메쏘드
- 본문내용
-
1. 프로세스와 스레드의 차이점을 설명하시오.
프로세스
프로세스는 컴퓨터 내에서 실행중인 프로그램의 인스턴스이다. 이 용어는 몇몇 운영체계에서 사용되는, "태스크"라는 용어와 의미상으로 가깝다. 유닉스나 몇몇 다른 운영체계에서는, 프로그램이 시작되면 프로세스도 시작된다. 태스크와 마찬가지로, 프로세스는 그 프로세스가 추적 관리될 수 있게 하기 위한 특정한 데이터 셋이 관련되어 실행 중인 프로그램이다. 여러 명의 사용자들에 의해 공유되고 있는 응용프로그램은 일반적으로 각 사용자들의 실행단계에서 하나의 프로세스를 갖는다. 프로세스는 자프로세스라고도 불리는 서브프로세스를 시작시킬 수 있다. 자프로세스는 부프로세스의 복제로서 부프로세스의 자원을 일부 공유하는데, 부프로세스가 종료되면 더 이상 존재할 수 없다. 프로세스들은 몇 가지 IPC 방식을 통하여 정보를 교환하거나 그들의 연산을 동기화할 수 있다.
스레드
컴퓨터 프로그래밍에서, 스레드는 다수의 사용자들을 동시에 처리할 수 있는 프로그램이 각각의 사용과 관련하여 가지고 있는 정보들 말한다. 프로그램의 관점에서 보면, 스레드는 한 명의 개별 사용자 또는 특정한 서비스 요청을 서비스하는데 필요한 정보이다. 만약 다수의 사용자들이 그 프로그램을 쓰고 있거나, 또는 다른 프로그램들로부터 동시에 요청이 발생했을 때, 각각의 사용자나 프로그램들을 위해 스레드가 만들어지고, 또 유지된다. 스레드는 프로그램에게 현재 어떤 사용자가 서비스를 받고있는지를 파악하게 함으로써, 다른 사용자들을 위하여 재진입 해야할 것인지의 선택을 할 수 있도록 한다 (단방향 스레드 정보는 특별한 데이터 저장소 내에 그것을 저장하고, 데이터 저장소의 주소를 레지스터에 집어넣음으로써 유지된다. 운영체계는 항상 프로그램이 중단되었을 때 레지스터의 내용을 저장하며, 그리고 다시 제어권이 주어졌을 때 그 내용을 복구한다).
프로세스는 서로간의 데이터를 공유 할 수 없는 반면에 각각의 프로세스 내부에 생성되는 스레드는 각각의 프로세스 내부의 데이터를 서로 공유할 수 있다.
2. 1초에 한 번씩 자신의 이름을 화면에 출력하는 스레드를 작성하시오.
(Thread를 상속하는 방식과 Runnable을 구현하는 방식으로 각각 작성하시오)
(소스와 결과화면을 제출하시오)
//스레드를 상속하여 1초마다 나의 이름을 화면에 표시한다. 이름과 함께 시간도 함께 표시한다. ?
public class TimeThread extends Thread {
public static void main(String args[]){
TimeThread t = new TimeThread ();
t.start();
}
public void run(){
long start=0,end=0;
try{
while(true){ start=System.currentTimeMillis();
Thread.sleep(1000);
end=System.currentTimeMillis();
System.out.println("안상민 "+(end‐start));
}
}catch(InterruptedException e){
System.out.println("Interrupted");}
}
}
결과
안상민 1002
안상민 1001
안상민 1002
안상민 1001
안상민 1002
안상민 1001
안상민 1001
안상민 1002
안상민 991
안상민 1002
안상민 1041
안상민 992
안상민 1001
안상민 1002
// Runnable을 구현하는 방식으로 이름을 출력한다. 시간도 함께 출력한다.
public class TimeThread implements Runnable{
public static void main(String args[]){
Thread t= new Thread(new TimeThread(),"Print_Myname");
t.start();
}
public void run(){
long t1=0,t2=0;
try{
while(true){ t1=System.currentTimeMillis();
Thread.sleep(1000);
t2=System.currentTimeMillis();
System.out.println("안상민 "+(t2‐t1));
}
}catch(InterruptedException e){
System.out.println("Interrupted");}
}
}
결과
안상민 1002
안상민 1001
안상민 1002
안상민 1001
안상민 1001
안상민 992
안상민 1001
안상민 1002
안상민 1001
안상민 1002
안상민 1001
자료평가
-
아직 평가한 내용이 없습니다.