2020-10-07 TIL
1 minute read
Thread
- https://brunch.co.kr/@kd4/3
정규 표현식
- https://hamait.tistory.com/342
- https://www.slideshare.net/ibare/ss-39274621?qid=c5a51df1-3b85-4b2e-9daa-363e4de5b924&v=&b=&from_search=1
프로토콜
- https://blockdmask.tistory.com/185
멀티태스킹(Multi-tasking)
- 동시에 여러 작업을 실행
- 구현방법
- 멀티 프로세싱 : 프로세스를 여러개 복제하여 실행
- 멀티 스레딩 : 멀티 태스킹이 필요한 작업만 분리하여 여러개 실행
CPU 스케쥴링
- 여러 개의 프로세스를 동시에 실행하기 위해 cpu 사용을 관리하는 방법
- 1) Round-Robin
- 각 프로세스에 균등한 실행 시간 부여
- Window OS
- 2) Priority + Aging
- 우선 순위가 높은 프로세스에 cpu 사용 권한을 더 많이 배분한다.
- 단 우선 순위가 낮아서 실행이 연기될 때마다 우선 순위 레벨(age)을 높여서 결국 실행하게 만든다.
- Lunux, macOS, Unix
멀티 프로세싱 <- 예전의 멀티태스킹 구현방식
- 부모 프로세스 -> 복제 -> 자식 프로세스
- 프로세스는 힙, 스택 등의 메모리를 가지고 있다
- 메모리 그대로 복제
- 부모 프로세스 종료해도 자식은 종료하지 않는다.
- 단순히 복제(fork) -> 구현(코딩)이 쉽다.
- 메모리를 그대로 복제 -> 메모리 낭비가 심하다
- 자식 프로세스가 부모에 종속되지 않는다.
멀티 스레딩 <- 현재의 멀티태스킹 구현방식
- 프로세스가 스레드 생성
- 스레드는 스택 메모리만 가지고 있음
- 힙 메모리는 프로세스의 힙 메모리를 공유해서 사용함
- 스레드 생성 -> 구현이 조금 더 복잡
- 프로세스의 힙을 공유한다 -> 메모리 절약
- 스레드가 프로세스에 종속 -> 프로세스 종료 = 스레드 종료
Java 스레드 구현
- Thread <—— MyThread 의 run() {독립적으로 수행할 작업}
- «interface» Runnavle <- - - MyRunnable 의 run() {독립적으로 수행할 작업}
- new Thread(new MyRunnable객체).start();
스레드
- 모든 스레드는 일회용이다.
- 모든 스레드는 각각 다른 실로 이루어져 있다.
- 한 번 실행된 스레드는 다시 사용할 수 없다.
- main() 메서드는 스레드 실행이 완료될 때 까지 종료되지 않고 기다린다.
- main 스레드의 실행을 모든 스레드 완료 후로 미루고 싶으면 join()을 사용한다.
- sleep() 을 사용하면 cpu가 멈추고 main 스레드를 잠재우기 때문에 실행을 지연시킬 수 있다.
You may also enjoy
less than 1 minute read
TIL
less than 1 minute read
TIL
less than 1 minute read
TIL