728x90
반응형
[ 프로세스 vs 스레드 ]
프로세스와 스레드의 차이는 무엇인가?
프로세스
- CPU 시간이나 메모리 등의 시스템 자원이 할당되는 독립적인 개체
- 각 프로세스는 별도의 주소 공간에서 실행
- 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근 불가능
→ 접근하려면 파이프, 파일, 소켓 등을 이용해야 됨
스레드
- 프로세스 안에 존재하며 프로세스의 자원을 공유
- 별도의 레지스터와 스택을 갖지만 힙 메모리는 서로 읽고 쓸 수 있음
- 프로세스의 특정한 수행 경로와 같음
→ 한 스레드가 프로세스 자원 변경 시 다른 스레드도 변경 결과 확인 가능
[ 문맥 전환 ]
문맥 전환에 소요되는 시간을 측정하려면 어떻게 해야 할까?
두 프로세스의 타임스탬프의 차이와 같습니다. 타임스탬프의 경우 마지막과 첫 번째 명령어의 시간을 기록해야 합니다.
⭐ 문맥 전환 : 두 프로세스를 전환하는 데 드는 시간
[ 동기화된 메서드 ]
동기화된 메서드 A와 일반 메서드 B가 구현된 클래스가 있다. 같은 프로그램에서 실행되는 스레드가 두 개 존재할 때
1. A를 동시에 실행할 수 있는가?
2. A와 B는 동시에 실행될 수 있는가?
1. 두 스레드가 같은 객체를 갖고 있다면 동시 실행 '불가능'하고 다른 객체면 동시 실행 '가능'합니다.
2. B가 synchronized로 선언되지 않았으므로 thread2가 B를 실행하는 동안 thread1이 A를 실행할 수 있습니다.
⭐ 객체별로 실행 가능한 synchronized 메서드는 하나뿐입니다. 다른 스레드는 해당 객체의 비-synchronized 메서드 혹은 다른 객체의 메서드는 실행할 수 있습니다.
반응형
'프로그램 개발 > 미분류' 카테고리의 다른 글
[코딩 인터뷰]지식 기반 문제 - 스레드와 락 (0) | 2023.01.13 |
---|---|
[코딩 인터뷰]지식 기반 문제 - 데이터베이스 문제 (0) | 2023.01.12 |
[코딩 인터뷰]지식 기반 문제 - 데이터베이스 (0) | 2023.01.12 |
[코딩 인터뷰]지식 기반 문제 - Java 문제 (0) | 2023.01.11 |
[코딩 인터뷰]지식 기반 문제 - Java (0) | 2023.01.11 |